{"version":3,"file":"MapChartVendor.6f40db1b524b73c45be8.js","mappings":"wCAEmEA,EAAOC,QAGlE,WAAe,aAEnB,IA2KIC,EACAC,EA5KAC,EAAQ,CACRC,OAAQ,YACRC,MAAO,WACPC,UAAW,gBACXC,WAAY,iBACZC,SAAU,eACVC,UAAW,gBACXC,UAAW,gBACXC,WAAY,iBACZC,SAAU,eACVC,UAAW,gBACXC,eAAgB,sBAChBC,oBAAqB,2BACrBC,mBAAoB,2BACpBC,kBAAmB,0BACnBC,kBAAmB,0BACnBC,eAAgB,qBAChBC,gBAAiB,sBACjBC,UAAW,gBACXC,WAAY,iBACZC,iBAAkB,wBAClBC,mBAAoB,0BACpBC,SAAU,eACVC,MAAO,WACPC,QAAS,aACTC,UAAW,eACXC,OAAQ,YACRC,QAAS,aACTC,MAAO,WACPC,iBAAkB,uBAClBC,QAAS,aACTC,YAAa,kBACbC,MAAO,WACPC,OAAQ,YACRC,KAAM,UACNC,MAAO,WACPC,IAAK,SACLC,KAAM,UACNC,OAAQ,YACRC,QAAS,aACTC,IAAK,SACLC,aAAc,oBACdC,KAAM,UACNC,KAAM,UACNC,MAAO,WACPC,MAAO,WACPC,KAAM,UACNC,MAAO,WACPC,WAAY,iBACZC,KAAM,UACNC,UAAW,gBACXC,MAAO,WACPC,OAAQ,YACRC,UAAW,gBACXC,WAAY,iBACZC,WAAY,iBACZC,MAAO,WACPC,OAAQ,YACRC,UAAW,gBACXC,WAAY,iBACZC,KAAM,UACNC,MAAO,YACPC,WAAY,kBACZC,MAAO,YACPC,WAAY,kBACZC,OAAQ,aACRC,YAAa,mBACbC,iBAAkB,uBAClBC,WAAY,iBACZC,gBAAiB,uBACjBC,eAAgB,sBAChBC,iBAAkB,wBAClBC,kBAAmB,yBACnBC,SAAU,cACVC,SAAU,aACVC,SAAU,aACVC,SAAU,cAGVC,EAA4B,mBAAXC,QAAoD,iBAApBA,OAAOC,SAAwB,SAAUC,GAC5F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAyB,mBAAXF,QAAyBE,EAAIC,cAAgBH,QAAUE,IAAQF,OAAOI,UAAY,gBAAkBF,CAC3H,EAEIG,EAAiB,SAAUC,EAAUC,GACvC,KAAMD,aAAoBC,GACxB,MAAM,IAAIC,UAAU,oCAExB,EAEIC,EAAW,SAAUC,EAAUC,GACjC,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIH,UAAU,kEAAoEG,GAG1FD,EAASN,UAAYQ,OAAOC,OAAOF,GAAcA,EAAWP,UAAW,CACrED,YAAa,CACXW,MAAOJ,EACPK,YAAY,EACZC,UAAU,EACVC,cAAc,KAGdN,IAAYC,OAAOM,eAAiBN,OAAOM,eAAeR,EAAUC,GAAcD,EAASS,UAAYR,EAC7G,EAEIS,EAA4B,SAAUC,EAAMC,GAC9C,IAAKD,EACH,MAAM,IAAIE,eAAe,6DAG3B,OAAOD,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BD,EAAPC,CAC5E,EAEIE,EAAU,SAAiBC,GAC3B,OAAOA,GAAW,IAANA,CAChB,EACIC,EAAa,SAAoBC,GACjC,MAAoB,mBAANA,CAClB,EACIC,EAAU,SAAiBD,GAC3B,OAAOE,MAAMD,QAAQD,EACzB,EACIG,EAAW,SAAkBH,GAC7B,MAAoB,iBAANA,CAClB,EACII,EAAc,SAAqBN,GACnC,YAAoB,IAANA,CAClB,EACIO,EAAY,SAAmBP,GAC/B,YAAoB,IAANA,CAClB,EACIQ,EAAS,SAAgBR,GACzB,OAA2B,GAApBS,KAAKC,KAAKV,EAAI,GACzB,EACIW,EAAc,SAAqBC,GACnC,OAAOH,KAAKC,KAAKE,GAAK,EAC1B,EACIC,EAAa,SAAoBC,GACjC,OAAOA,EAAE,GAAKA,EAAE,EACpB,EACIC,EAAU,SAAiBb,GAC3B,OAAO,MAAOA,GAAmCG,EAASH,IAAmB,IAAbA,EAAEc,QAA0E,iBAA5C,IAANd,EAAoB,YAAc5B,EAAQ4B,KAA8C,IAA1Bf,OAAO8B,KAAKf,GAAGc,MAC3K,EACIE,EAAW,SAAkBhB,GAC7B,OAAQiB,EAAqBJ,QAAQb,EACzC,EACIkB,EAAY,SAAmBC,EAASC,EAAKC,GAC7C,OAAOhB,EAAUc,EAAQC,IAAQD,EAAQC,GAAOC,CACpD,EACIC,EAAW,SAAkBC,EAAMpC,GACnC,IAAIqC,GAAQ,EAMZ,OALAvC,OAAO8B,KAAKQ,GAAME,SAAQ,SAAUL,GAC5BG,EAAKH,KAASjC,IACdqC,GAAQ,EAEhB,IACOA,CACX,EACIE,EAAW,SAAkBC,GAC7B,MAAsB,iBAARA,EAAmBA,EAAIC,QAAQ,KAAM,QAAQA,QAAQ,KAAM,QAAUD,CACvF,EACIE,EAAa,SAAoBC,GACjC,IAAIC,EAAMD,EAAKE,wBACXC,EAAQ,CAACH,EAAKI,YAAYC,QAAQ,GAAIL,EAAKI,YAAYC,QAAQ,IAGnE,MAAO,CAAEC,EAFEH,EAAM,GAAGG,EAEFC,EADP9B,KAAK+B,IAAIL,EAAM,GAAGI,EAAGJ,EAAM,GAAGI,GACdE,MAAOR,EAAIQ,MAAOC,OAAQT,EAAIS,OAC7D,EAKA,SAASC,EAAaC,EAAWC,GAC7B,IAAIC,EAAWC,KACfD,EAASF,UAAYA,EACrBE,EAASD,OAASA,GAAU,CAAC,EAE7BC,EAASE,GAAKJ,EAAUI,GACxBF,EAASG,MAAQH,EAASE,GAAGC,MAAMC,SACnCJ,EAASK,MACTL,EAASM,OAAS,SAClBN,EAASO,cAAgB,EACzBP,EAASQ,cAAgBP,KAAKF,OAAOU,cAAgB,EAAI,EACzDT,EAASU,YAAc,EACvBV,EAASW,WAAa,KACtBX,EAASY,WACTZ,EAASa,cAETb,EAASc,WAAa,EACtBd,EAASe,aAAc,EACvBf,EAASgB,aACThB,EAASiB,iBACTjB,EAASkB,eAAiBlB,EAASD,OAAOmB,eAC1ClB,EAASmB,WAETnB,EAASzF,KAAOyF,EAASoB,cAC7B,EACA1K,EAAsBmJ,EAAahE,WAEfrB,MAAQ,SAAU6G,EAAW7B,EAAGsB,GAChDO,EAAUC,KAAK,aAAa,SAAUtD,GAClC,MAAO,aAAeL,KAAKC,KAAK4B,EAAExB,GAAK8C,GAAc,MACzD,GACJ,EACApK,EAAoBgE,MAAQ,SAAU2G,EAAW5B,GAC7C4B,EAAUC,KAAK,aAAa,SAAUtD,GAClC,MAAO,eAAiBL,KAAKC,KAAK6B,EAAEzB,IAAM,GAC9C,GACJ,EACAtH,EAAoB6K,YAAc,SAAUC,GACxC,IAAIC,EAAQD,EAAO,GACfE,EAAOF,EAAOA,EAAOtD,OAAS,GAClC,OAAOuD,EAAQC,EAAO,CAACD,EAAOC,GAAQ,CAACA,EAAMD,EACjD,EACA/K,EAAoBiL,cAAgB,SAAUxB,GAC1C,IACIyB,EACAJ,EAFAxB,EAAWC,KAGX4B,EAAQ,GACZ,GAAI1B,EAAM0B,MACN,OAAO1B,EAAM0B,MAAMC,MAAM3B,EAAOH,EAASa,eAG7C,IADAW,EAASrB,EAAMqB,SACVI,EAAIjE,KAAKC,KAAK4D,EAAO,IAAKI,EAAIJ,EAAO,GAAII,IAC1CC,EAAME,KAAKH,GAKf,OAHIC,EAAM3D,OAAS,GAAK2D,EAAM,GAAK,GAC/BA,EAAMG,QAAQH,EAAM,IAAMA,EAAM,GAAKA,EAAM,KAExCA,CACX,EACAnL,EAAoBuL,UAAY,WAC5B,IAEIT,EAFAxB,EAAWC,KACXiC,EAAWlC,EAASG,MAAMgC,OAM9B,OAJInC,EAASD,OAAOqC,aAChBZ,EAASxB,EAASG,MAAMqB,SACxBU,EAASV,OAAO,CAACA,EAAO,GAAIA,EAAO,GAAK,KAErCU,CACX,EACAxL,EAAoB2L,cAAgB,SAAUnF,GAC1C,IAAI8C,EAAWC,KACXqC,EAAYtC,EAASY,WAAaZ,EAASY,WAAW1D,GAAKA,EAC/D,YAA4B,IAAdoF,EAA4BA,EAAY,EAC1D,EACA5L,EAAoB6L,YAAc,WAC9B,IAAIvC,EAAWC,KAEf,OADAD,EAASK,MAAQL,EAASG,MAAMqC,YAAcxC,EAASG,MAAMqC,cAAgBxC,EAASuB,YAAYvB,EAASG,MAAME,SAC1GL,EAASK,KACpB,EACA3J,EAAoB+L,uBAAyB,SAAUC,GACnD,IAAI1C,EAAWC,KACf,GAAID,EAASiB,iBACT,OAAOjB,EAASiB,iBAEpB,IAAI0B,EAAO,CACPC,EAAG,KACHC,EAAG,KAeP,OAbAH,EAAKI,OAAO,QAAQrJ,MAAK,SAAUuE,GAC/B,OAAOgC,EAASqC,cAAcrE,EAClC,IAAG+E,MAAK,SAAU/E,GACd,IAAImB,EAAMc,KAAKb,wBACX3F,EAAOuG,EAASqC,cAAcrE,GAC9B4E,EAAIzD,EAAIS,OACRiD,EAAIpJ,EAAO0F,EAAIQ,MAAQlG,EAAKyE,YAAS8E,EACrCJ,GAAKC,IACLF,EAAKC,EAAIA,EACTD,EAAKE,EAAIA,EAEjB,IAAGpJ,KAAK,IACRuG,EAASiB,iBAAmB0B,EACrBA,CACX,EACAjM,EAAoBuM,cAAgB,SAAU5B,GAC1C,OAAOpB,KAAKF,OAAOmD,kBAAoB7B,EAAYpB,KAAKC,GAAGiD,WAAW9B,EAC1E,EACA3K,EAAoB0M,WAAa,WAC7B,MAAuB,SAAhBnD,KAAKK,QAAqC,UAAhBL,KAAKK,MAC1C,EACA5J,EAAoB2M,UAAY,SAAUrF,EAAG4D,EAAGC,EAAO1B,GACnD,IAAIH,EAAWC,KACXqD,EAAWtD,EAASD,OAAOwD,cAAgBvD,EAASwD,cAAcxF,EAAG6D,EAAO1B,GAAS,GAAGsD,OAAOzD,EAASqC,cAAcrE,IAM1H,OAJIgC,EAASD,OAAOwD,eAAiBvD,EAASD,OAAO2D,iBAAmB,IACpEJ,EAAWtD,EAAS2D,UAAUL,EAAUtD,EAASD,OAAO2D,mBAGrDJ,EAASM,KAAI,SAAUC,GAC1B,MAAO,CAAEC,MAAOlC,EAAG0B,SAAUO,EAAG3F,OAAQoF,EAASpF,OACrD,GACJ,EACAxH,EAAoB8M,cAAgB,SAAUxF,EAAG6D,EAAO1B,GACpD,IAGI4D,EACAC,EACAC,EALAjE,EAAWC,KACXiE,EAAWlE,EAASqC,cAAcrE,GAClCmG,EAAWnE,EAASD,OAAOqE,UAI3Bd,EAAW,GAEf,GAAiD,mBAA7CjH,OAAOR,UAAUwI,SAAStH,KAAKmH,GAC/B,OAAOA,EAOX,SAASI,EAAMhB,EAAU7J,GACrBuK,OAAahB,EACb,IAAK,IAAIpB,EAAI,EAAGA,EAAInI,EAAKyE,OAAQ0D,IAO7B,GANuB,MAAnBnI,EAAK8K,OAAO3C,KACZoC,EAAapC,GAEjBmC,EAAUtK,EAAK+K,OAAO,EAAG5C,EAAI,GAC7BqC,EAAYjE,EAASiB,iBAAiB4B,EAAIkB,EAAQ7F,OAE9CiG,EAAWF,EACX,OAAOK,EAAMhB,EAASG,OAAOhK,EAAK+K,OAAO,EAAGR,GAA0BpC,IAAKnI,EAAKgL,MAAMT,EAAaA,EAAa,EAAIpC,IAG5H,OAAO0B,EAASG,OAAOhK,EAC3B,CAEA,QApBK0K,GAAYA,GAAY,KACzBA,EAAWnE,EAASoD,aAAe,GAAKpD,EAASD,OAAOqC,WAAazE,KAAKC,KAAKuC,EAAM0B,EAAM,IAAM1B,EAAM0B,EAAM,KAAO,GAAK,KAmBtHyC,EAAMhB,EAAUY,EAAW,GACtC,EACAxN,EAAoBiN,UAAY,SAAUL,EAAUoB,GAChD,GAAIpB,EAASpF,QAAUwG,EACnB,OAAOpB,EAKX,IAFA,IAAIqB,EAAcrB,EAASmB,MAAM,EAAGC,GAChCE,EAAY,EACPhD,EAAI8C,EAAM,EAAG9C,GAAK,EAAGA,IAAK,CAC/B,IAAIiD,EAAYF,EAAY/C,GAAG1D,OAM/B,GAJAyG,EAAY/C,GAAK+C,EAAY/C,GAAG4C,OAAO,EAAGK,EAAYD,GAAWE,OAAOD,EAAW,MAEnFD,GAAaC,IAEI,EACb,KAER,CAEA,OAAOF,CACX,EACAjO,EAAoBqO,iBAAmB,WACnC,IAAI/E,EAAWC,KACfD,EAASmB,WAAaxD,KAAK+G,IAAI1E,EAASO,cAAe,GAAKP,EAASU,WACzE,EACAhK,EAAoBsO,OAAS,SAAUhH,GACnC,IAAIgC,EAAWC,KACXgF,EAAejF,EAASG,MAAMnC,IAAMgC,EAASgB,aAAe,EAAIhB,EAASc,YAC7E,OAAOd,EAASK,MAAM,GAAK4E,GAAgBA,EAAejF,EAASK,MAAM,GAAKL,EAASO,cAAgB,CAC3G,EACA7J,EAAoBwO,MAAQ,WACxB,IAAIlF,EAAWC,KACXkF,EAASnF,EAASkB,eACtB,OAAOiE,EAAS,KAAcA,EAAS,GAAhB,KAAuBA,EAAS,EAAI,GAAK,GAAKnF,EAASmB,UAClF,EACAzK,EAAoB0O,cAAgB,WAChC,IACID,EADWlF,KACOiB,eACtB,OAAOiE,EAAS,UAAYA,EAAS,IAAM,EAC/C,EACAzO,EAAoB2O,eAAiB,WACjC,IACIF,EADWlF,KACOiB,eACtB,OAAOiE,EAASA,EAAS,EAAI,QAAU,MAAQ,QACnD,EACAzO,EAAoB4O,QAAU,WAC1B,IACIH,EADWlF,KACOiB,eACtB,OAAOiE,EAAS,EAAIxH,KAAK4H,IAAI5H,KAAK6H,IAAML,EAAS,MAAQ,CAC7D,EACAzO,EAAoB+O,QAAU,SAAUzH,EAAG4D,GACvC,IAAI5B,EAAWC,KACXyF,EAAK1F,EAASiB,iBAAiB2B,EAQnC,OAPU,IAANhB,IAEI8D,EADA1F,EAASoD,gBACDpF,EAAEE,OAAS,IAAM8B,EAASiB,iBAAiB2B,EAAI,GAAK,GAEvD,SAGN8C,CACX,EAEAhP,EAAoB0K,aAAe,WAC/B,IAAIpB,EAAWC,KACXC,EAAKF,EAASE,GACdH,EAASC,EAASD,OACtB,SAASxF,EAAKoL,GACVA,EAAE5C,MAAK,WACH,IAYI6C,EACAC,EACAC,EAdAH,EAAIpL,EAAKoL,EAAIzF,EAAG4C,OAAO7C,MAEvB8F,EAAS9F,KAAK+F,WAAahG,EAASG,MACpC8F,EAAShG,KAAK+F,UAAYhG,EAASiC,YAEnCJ,EAAQ7B,EAASW,WAAaX,EAASW,WAAaX,EAAS2B,cAAcsE,GAC3EvD,EAAOiD,EAAEO,UAAU,SAASC,KAAKtE,EAAOoE,GACxCG,EAAY1D,EAAK2D,QAAQC,OAAO,IAAK,WAAWhF,KAAK,QAAS,QAAQiF,MAAM,UAAW,MAG3FC,EAAW9D,EAAK+D,OAAOC,SACnBC,EAAa3G,EAASiD,cAAcP,GAAM6D,MAAM,UAAW,GAK3DxG,EAAOqC,YACPpC,EAASc,WAAanD,KAAKC,MAAMqI,EAAO,GAAKA,EAAO,IAAM,GAC1DJ,EAAQ7F,EAASgB,aAAe,EAAIhB,EAASc,WAC7CgF,EAAQ9F,EAASgB,aAAehB,EAASc,WAAa,GAEtDd,EAASc,WAAa+E,EAAQ,EAGlCO,EAAUQ,OAAO,QACjBR,EAAUQ,OAAO,QAEjB5G,EAASuC,cACTvC,EAAS+E,mBACT/E,EAASyC,uBAAuBkD,EAAE7C,OAAO,UAEzC,IAAI+D,EAAaF,EAAW7D,OAAO,QAC/BgE,EAAaH,EAAW7D,OAAO,QAC/BiE,EAAcrE,EAAKI,OAAO,QAAQoD,UAAU,SAASC,MAAK,SAAUnI,EAAG4D,GACvE,OAAO5B,EAASqD,UAAUrF,EAAG4D,EAAGC,EAAOoE,EAC3C,IAEAc,EAAYV,QAAQO,OAAO,SAC3BG,EAAYN,OAAOC,SACnBK,EAAYtN,MAAK,SAAUuE,GACvB,OAAOA,EAAEsF,QACb,IAEA,IAAIpE,EAAOyG,EAAEO,UAAU,WAAWC,KAAK,CAAC,IACpCa,GAAc9H,EAAKmH,QAAQO,OAAO,QAAQtF,KAAK,QAAS,UAAWtB,EAASiD,cAAc/D,IAG9F,OAAQc,EAASM,QACb,IAAK,SAEGsF,EAAgB5F,EAASxF,MACzBqM,EAAWvF,KAAK,KAAMuE,GAAOvE,KAAK,KAAMuE,GAAOvE,KAAK,MAAM,SAAUtD,EAAG4D,GACnE,OAAO5B,EAASgF,OAAOhH,EAAG4D,EAC9B,IACAkF,EAAWxF,KAAK,IAAK,GAAGA,KAAK,KAAK,SAAUtD,EAAG4D,GAC3C,OAAO5B,EAASkF,MAAMlH,EAAG4D,EAC7B,IAAGN,KAAK,aAAa,SAAUtD,EAAG4D,GAC9B,OAAO5B,EAASoF,cAAcpH,EAAG4D,EACrC,IAAG2E,MAAM,eAAe,SAAUvI,EAAG4D,GACjC,OAAO5B,EAASqF,eAAerH,EAAG4D,EACtC,IACAmF,EAAYzF,KAAK,IAAK,GAAGA,KAAK,MAAM,SAAUtD,EAAG4D,GAC7C,OAAO5B,EAASyF,QAAQzH,EAAG4D,EAC/B,IAAGN,KAAK,MAAM,SAAUtD,EAAG4D,GACvB,OAAO5B,EAASsF,QAAQtH,EAAG4D,EAC/B,IACAoF,EAAW1F,KAAK,IAAK,IAAMtB,EAASK,MAAM,GAAK,IAAML,EAASQ,cAAgB,MAAQR,EAASK,MAAM,GAAK,IAAML,EAASQ,eACzH,MAER,IAAK,MAGGoF,EAAgB5F,EAASxF,MACzBqM,EAAWvF,KAAK,KAAMuE,GAAOvE,KAAK,KAAMuE,GAAOvE,KAAK,MAAM,SAAUtD,EAAG4D,GACnE,OAAQ,EAAI5B,EAASgF,OAAOhH,EAAG4D,EACnC,IACAkF,EAAWxF,KAAK,IAAK,GAAGA,KAAK,KAAK,SAAUtD,EAAG4D,GAC3C,OAAQ,EAAI5B,EAASkF,MAAMlH,EAAG4D,IAAM7B,EAAOqC,WAAa,EAAIpC,EAASmB,WAAa,EACtF,IAAGG,KAAK,aAAa,SAAUtD,EAAG4D,GAC9B,OAAO5B,EAASoF,cAAcpH,EAAG4D,EACrC,IAAG2E,MAAM,eAAe,SAAUvI,EAAG4D,GACjC,OAAO5B,EAASqF,eAAerH,EAAG4D,EACtC,IACAmF,EAAYzF,KAAK,IAAK,GAAGA,KAAK,MAAM,SAAUtD,EAAG4D,GAC7C,OAAO5B,EAASyF,QAAQzH,EAAG4D,EAC/B,IAAGN,KAAK,MAAM,SAAUtD,EAAG4D,GACvB,OAAO5B,EAASsF,QAAQtH,EAAG4D,EAC/B,IACAoF,EAAW1F,KAAK,IAAK,IAAMtB,EAASK,MAAM,GAAK,KAAOL,EAASQ,cAAgB,MAAQR,EAASK,MAAM,GAAK,KAAOL,EAASQ,eAC3H,MAER,IAAK,OAEGoF,EAAgB5F,EAAStF,MACzBmM,EAAWvF,KAAK,MAAOtB,EAASO,eAAee,KAAK,KAAMwE,GAAOxE,KAAK,KAAMwE,GAC5EgB,EAAWxF,KAAK,KAAMtB,EAASmB,YAAYG,KAAK,IAAKtB,EAASc,YAAYyF,MAAM,cAAe,OAC/FQ,EAAYzF,KAAK,KAAMtB,EAASmB,YAAYG,KAAK,MAAM,SAAUtD,EAAG4D,GAChE,OAAO5B,EAASyF,QAAQzH,EAAG4D,EAC/B,IACAoF,EAAW1F,KAAK,IAAK,KAAOtB,EAASQ,cAAgB,IAAMR,EAASK,MAAM,GAAK,MAAQL,EAASK,MAAM,GAAK,KAAOL,EAASQ,eAC3H,MAER,IAAK,QAEGoF,EAAgB5F,EAAStF,MACzBmM,EAAWvF,KAAK,KAAMtB,EAASO,eAAee,KAAK,KAAMwE,GAAOxE,KAAK,KAAMwE,GAC3EgB,EAAWxF,KAAK,IAAKtB,EAASmB,YAAYG,KAAK,IAAKtB,EAASc,YAAYyF,MAAM,cAAe,SAC9FQ,EAAYzF,KAAK,IAAKtB,EAASmB,YAAYG,KAAK,MAAM,SAAUtD,EAAG4D,GAC/D,OAAO5B,EAASyF,QAAQzH,EAAG4D,EAC/B,IACAoF,EAAW1F,KAAK,IAAK,IAAMtB,EAASQ,cAAgB,IAAMR,EAASK,MAAM,GAAK,MAAQL,EAASK,MAAM,GAAK,IAAML,EAASQ,eAIrI,GAAIyF,EAAOgB,UAAW,CAClB,IAAIzH,EAAIyG,EACJiB,EAAK1H,EAAEyH,YAAc,EACzBlB,EAASE,EAAS,SAAgBjI,GAC9B,OAAOwB,EAAExB,GAAKkJ,CAClB,CACJ,MAAWnB,EAAOkB,UACdlB,EAASE,EAETO,EAASzJ,KAAK6I,EAAeK,EAAQjG,EAASc,YAElDsF,EAAUrJ,KAAK6I,EAAeG,EAAQ/F,EAASc,YAC/C6F,EAAW5J,KAAK6I,EAAeK,EAAQjG,EAASc,WACpD,GACJ,CAqEA,OApEAvG,EAAK4F,MAAQ,SAAUX,GACnB,OAAK2H,UAAUjJ,QAGf8B,EAASG,MAAQX,EACVjF,GAHIyF,EAASG,KAIxB,EACA5F,EAAK+F,OAAS,SAAUd,GACpB,OAAK2H,UAAUjJ,QAGf8B,EAASM,OAASd,IAAK,CAAE4H,IAAK,EAAGC,MAAO,EAAGC,OAAQ,EAAGC,KAAM,GAAM/H,EAAI,GAAK,SACpEjF,GAHIyF,EAASM,MAIxB,EACA/F,EAAKqG,WAAa,SAAU4G,GACxB,OAAKL,UAAUjJ,QAGf8B,EAASY,WAAa4G,EACfjN,GAHIyF,EAASY,UAIxB,EACArG,EAAKyG,aAAe,SAAUyG,GAC1B,OAAKN,UAAUjJ,QAGf8B,EAASgB,aAAeyG,EACjBlN,GAHIyF,EAASgB,YAIxB,EACAzG,EAAKuG,WAAa,WACd,OAAOd,EAASc,UACpB,EACAvG,EAAKmN,aAAe,WAChB,IAAIC,EAOJ,OALIA,EADA5H,EAAOqC,WAC0B,EAAtBpC,EAASc,YAEXvG,EAAKoL,EAAE7C,OAAO,eAAe8E,OAAOC,iBAA4C,EAAzB7H,EAASQ,eACrDjG,EAAKoL,EAAEO,UAAU,QAAQvD,SAE7BmF,IAAW,EAAIH,CACvC,EACApN,EAAKsH,MAAQ,WACT,OAAKsF,UAAUjJ,QAGf8B,EAASa,cAAgBsG,UAClB5M,GAHIyF,EAASa,aAIxB,EACAtG,EAAKwG,YAAc,SAAUgH,GACzB,OAAKZ,UAAUjJ,QAGf8B,EAASe,YAAcgH,EAChBxN,GAHIyF,EAASe,WAIxB,EACAxG,EAAKoG,WAAa,SAAUnB,GACxB,GAAiB,mBAANA,EACPQ,EAASW,WAAa,WAClB,OAAOnB,EAAEQ,EAASG,MAAMqB,SAC5B,MACG,CACH,IAAK2F,UAAUjJ,OACX,OAAO8B,EAASW,WAEpBX,EAASW,WAAanB,CAC1B,CACA,OAAOjF,CACX,EACOA,CACX,EAEA,IAAIyN,EAAO,SAAUC,GAGjB,SAASD,EAAKE,GACVpM,EAAemE,KAAM+H,GAErB,IAAIG,EAAK,CACLA,GAAI1R,EACJuJ,SAAU,CACNmI,GAAIzR,IAIR0R,EAAQvL,EAA0BoD,MAAO+H,EAAKpL,WAAaP,OAAOgM,eAAeL,IAAOjL,KAAKkD,KAAMiI,EAAO,OAAQC,IAItH,OAFAC,EAAMlI,GAAKgI,EAAMhI,GACjBkI,EAAMpI,SAAWH,EACVuI,CACX,CAEA,OAnBAlM,EAAS8L,EAAMC,GAmBRD,CACX,CArBW,CAqBTM,IAEF7R,EAAauR,EAAKnM,WAEP0M,KAAO,WACd,IAAIC,EAAKvI,KAAKiI,MACVO,EAASD,EAAGC,OACZC,EAAOF,EAAGE,KACdF,EAAGG,KAAKnJ,EAAIkJ,EAAK9B,OAAO,KAAKtF,KAAK,QAAS3K,EAAM4D,KAAO,IAAM5D,EAAM6D,OAAO8G,KAAK,YAAamH,EAAOG,aAAe,GAAKJ,EAAGK,kBAAkBvH,KAAK,YAAakH,EAAGM,aAAa,MAAMvC,MAAM,aAAckC,EAAOM,YAAc,UAAY,UAC1OP,EAAGG,KAAKnJ,EAAEoH,OAAO,QAAQtF,KAAK,QAAS3K,EAAM8D,YAAY6G,KAAK,YAAamH,EAAOO,aAAe,cAAgB,IAAIzC,MAAM,cAAetG,KAAKgJ,wBAAwBC,KAAKjJ,OAC5KuI,EAAGG,KAAKlJ,EAAIiJ,EAAK9B,OAAO,KAAKtF,KAAK,QAAS3K,EAAM4D,KAAO,IAAM5D,EAAM+D,OAAO4G,KAAK,YAAamH,EAAOU,aAAe,GAAKX,EAAGY,kBAAkB9H,KAAK,YAAakH,EAAGM,aAAa,MAAMvC,MAAM,aAAckC,EAAOY,YAAc,UAAY,UAC1Ob,EAAGG,KAAKlJ,EAAEmH,OAAO,QAAQtF,KAAK,QAAS3K,EAAMgE,YAAY2G,KAAK,YAAamH,EAAOO,aAAe,GAAK,eAAezC,MAAM,cAAetG,KAAKqJ,wBAAwBJ,KAAKjJ,OAE5KuI,EAAGG,KAAKY,GAAKb,EAAK9B,OAAO,KAAKtF,KAAK,QAAS3K,EAAM4D,KAAO,IAAM5D,EAAMiE,QAEpE0G,KAAK,YAAakH,EAAGM,aAAa,OAAOvC,MAAM,aAAckC,EAAOe,aAAe,UAAY,UAChGhB,EAAGG,KAAKY,GAAG3C,OAAO,QAAQtF,KAAK,QAAS3K,EAAMkE,aAAayG,KAAK,YAAamH,EAAOO,aAAe,GAAK,eAAezC,MAAM,cAAetG,KAAKwJ,yBAAyBP,KAAKjJ,MACnL,EACAxJ,EAAWiT,SAAW,SAAkBvJ,EAAOG,EAAQM,EAAYD,EAAYF,EAAeyC,EAAmByG,GAC7G,IAAInB,EAAKvI,KAAKiI,MACVO,EAASD,EAAGC,OACZmB,EAAa,CACbxH,WAAYoG,EAAGqB,gBACfpJ,cAAeA,EACf8C,cAAekF,EAAOqB,sBACtBpG,iBAAkB+E,EAAOqB,sBAAwBC,OAAOtB,EAAOuB,0BAA4B,EAC3F5F,UAAWqE,EAAOwB,kBAClB/I,eAAgByI,EAAwB,EAAIlB,EAAOyB,mBACnDhH,kBAAmBA,GAEnB3I,EAAO,IAAI0F,KAAKD,SAASC,KAAM2J,GAAYrP,KAAK4F,MAAMA,GAAOG,OAAOA,GAiBxE,OAfIkI,EAAG2B,gBAAkBxJ,GAAoC,mBAAfA,IAC1CA,EAAaA,EAAWiD,KAAI,SAAU1G,GAClC,OAAOsL,EAAG4B,UAAUlN,EACxB,KAIJ3C,EAAKqG,WAAWA,GAAYD,WAAWA,GACnC6H,EAAGqB,kBACHtP,EAAKyG,aAAayH,EAAO4B,sBACrBpM,EAAQwK,EAAO6B,uBACf7B,EAAO6B,qBAAsB,IAI9B/P,CACX,EACA9D,EAAW8T,sBAAwB,SAA+BC,EAASjQ,GACvE,IAEIoG,EAFA6H,EAAKvI,KAAKiI,MACVO,EAASD,EAAGC,OAWhB,OATIA,EAAOgC,iBAAmBhC,EAAOiC,qBACjC/J,EAAaV,KAAK0K,mBAAmBnC,EAAGoC,qBAAqBJ,GAAU/B,EAAOiC,kBAAmBlC,EAAG2B,iBAEpG5P,EACAA,EAAKoG,WAAWA,IAEhB6H,EAAGqC,MAAMlK,WAAWA,GACpB6H,EAAGsC,SAASnK,WAAWA,IAEpBA,CACX,EACAlK,EAAWsU,SAAW,SAAkB5K,EAAOG,EAAQM,EAAYD,EAAYF,EAAeyC,EAAmByG,GAC7G,IAAInB,EAAKvI,KAAKiI,MACVO,EAASD,EAAGC,OACZmB,EAAa,CACbnJ,cAAeA,EACfyC,kBAAmBA,EACnBhC,eAAgByI,EAAwB,EAAIlB,EAAOuC,oBAEnDzQ,EAAO,IAAI0F,KAAKD,SAASC,KAAM2J,GAAYrP,KAAK4F,MAAMA,GAAOG,OAAOA,GAAQM,WAAWA,GAM3F,OALI4H,EAAGyC,gBACH1Q,EAAKsH,MAAM2G,EAAGtI,GAAGgL,KAAKzC,EAAO0C,wBAAyB1C,EAAO2C,2BAE7D7Q,EAAKoG,WAAWA,GAEbpG,CACX,EACA9D,EAAW4U,MAAQ,SAAeC,GAC9B,IAAI7C,EAASxI,KAAKiI,MAAMO,OACxB,OAAO6C,KAAM7C,EAAO8C,UAAY9C,EAAO8C,UAAUD,GAAM,GAC3D,EACA7U,EAAW+U,mBAAqB,WAC5B,IAAIhD,EAAKvI,KAAKiI,MACVO,EAASD,EAAGC,OACZjB,EAASgB,EAAG2B,eAAiB3B,EAAGiD,sBAAwBjD,EAAGqB,gBAAkBrB,EAAGkD,aAAe,SAAUxO,GACzG,OAAOA,EAAI,EAAIA,EAAEyO,QAAQ,GAAKzO,CAClC,EAUA,OATIuL,EAAOmD,qBACHzO,EAAWsL,EAAOmD,oBAClBpE,EAASiB,EAAOmD,mBACTpD,EAAG2B,iBACV3C,EAAS,SAAgBqE,GACrB,OAAOA,EAAOrD,EAAGsD,eAAerD,EAAOmD,mBAAzBpD,CAA6CqD,GAAQ,EACvE,IAGD1O,EAAWqK,GAAU,SAAUtK,GAClC,OAAOsK,EAAOzK,KAAKyL,EAAItL,EAC3B,EAAIsK,CACR,EACA/Q,EAAWsV,cAAgB,SAAuBpL,EAAYpG,GAC1D,OAAOoG,IAA0BpG,EAAOA,EAAKoG,kBAAeqC,EAChE,EACAvM,EAAWuV,mBAAqB,WAC5B,OAAO/L,KAAK8L,cAAc9L,KAAKiI,MAAMO,OAAOwD,mBAAoBhM,KAAKiI,MAAM2C,MAC/E,EACApU,EAAWyV,mBAAqB,WAC5B,OAAOjM,KAAK8L,cAAc9L,KAAKiI,MAAMO,OAAO0D,mBAAoBlM,KAAKiI,MAAMkE,MAC/E,EACA3V,EAAW4V,oBAAsB,WAC7B,OAAOpM,KAAK8L,cAAc9L,KAAKiI,MAAMO,OAAO6D,oBAAqBrM,KAAKiI,MAAMqE,OAChF,EACA9V,EAAW+V,uBAAyB,SAAgCC,GAChE,IAEIC,EADAjE,EADKxI,KAAKiI,MACEO,OAShB,MAPe,MAAXgE,EACAC,EAASjE,EAAOkE,aACE,OAAXF,EACPC,EAASjE,EAAOmE,cACE,MAAXH,IACPC,EAASjE,EAAOoE,cAEbH,CACX,EACAjW,EAAWqW,aAAe,SAAsBL,GAC5C,IAAIC,EAASzM,KAAKuM,uBAAuBC,GACzC,OAAOlP,EAASmP,GAAUA,EAASA,EAASA,EAAOjT,KAAO,IAC9D,EACAhD,EAAWsW,aAAe,SAAsBN,EAAQhT,GACpD,IACIgP,EADKxI,KAAKiI,MACEO,OACZiE,EAASzM,KAAKuM,uBAAuBC,GACrClP,EAASmP,GACM,MAAXD,EACAhE,EAAOkE,aAAelT,EACJ,OAAXgT,EACPhE,EAAOmE,cAAgBnT,EACL,MAAXgT,IACPhE,EAAOoE,aAAepT,GAEnBiT,IACPA,EAAOjT,KAAOA,EAEtB,EACAhD,EAAWuW,iBAAmB,SAA0BP,EAAQQ,GAC5D,IAAIP,EAASzM,KAAKuM,uBAAuBC,GACrCS,EAAWR,GAA8E,iBAAjD,IAAXA,EAAyB,YAAclR,EAAQkR,KAAyBA,EAAOQ,SAAWR,EAAOQ,SAAWD,EAC7I,MAAO,CACHE,QAASD,EAASE,QAAQ,UAAY,EACtCC,QAASH,EAASE,QAAQ,UAAY,EACtCE,OAAQJ,EAASE,QAAQ,SAAW,EACpCG,SAAUL,EAASE,QAAQ,WAAa,EACxCI,QAASN,EAASE,QAAQ,UAAY,EACtCK,MAAOP,EAASE,QAAQ,QAAU,EAClCM,SAAUR,EAASE,QAAQ,WAAa,EACxCO,SAAUT,EAASE,QAAQ,WAAa,EAEhD,EACA3W,EAAWmX,sBAAwB,WAC/B,OAAO3N,KAAK+M,iBAAiB,IAAK/M,KAAKiI,MAAMO,OAAOO,aAAe,YAAc,cACrF,EACAvS,EAAWoX,sBAAwB,WAC/B,OAAO5N,KAAK+M,iBAAiB,IAAK/M,KAAKiI,MAAMO,OAAOO,aAAe,cAAgB,YACvF,EACAvS,EAAWqX,uBAAyB,WAChC,OAAO7N,KAAK+M,iBAAiB,KAAM/M,KAAKiI,MAAMO,OAAOO,aAAe,cAAgB,YACxF,EACAvS,EAAWsX,qBAAuB,SAA8BzC,GAC5D,MAAc,OAAPA,EAAcrL,KAAK6N,yBAAkC,MAAPxC,EAAarL,KAAK4N,wBAA0B5N,KAAK2N,uBAC1G,EACAnX,EAAWuX,kBAAoB,WAC3B,OAAO/N,KAAK6M,aAAa,IAC7B,EACArW,EAAWwX,kBAAoB,WAC3B,OAAOhO,KAAK6M,aAAa,IAC7B,EACArW,EAAWyX,mBAAqB,WAC5B,OAAOjO,KAAK6M,aAAa,KAC7B,EACArW,EAAW0X,cAAgB,SAAuBC,EAAelB,GAC7D,IAAI1E,EAAKvI,KAAKiI,MACd,OAAIkG,EACOlB,EAASI,OAAS,EAAIJ,EAASK,SAAW/E,EAAG7I,MAAQ,EAAI6I,EAAG7I,MAE5DuN,EAASS,UAAYnF,EAAG5I,OAASsN,EAASQ,UAAYlF,EAAG5I,OAAS,EAAI,CAErF,EACAnJ,EAAW4X,eAAiB,SAAwBD,EAAelB,GAC/D,OAAIkB,EACOlB,EAASI,OAAS,QAAUJ,EAASM,QAAU,SAAW,IAE1DN,EAASO,MAAQ,SAAWP,EAASS,SAAW,QAAU,GAEzE,EACAlX,EAAW6X,uBAAyB,SAAgCF,EAAelB,GAC/E,OAAIkB,EACOlB,EAASI,OAAS,QAAUJ,EAASK,SAAW,SAAW,MAE3DL,EAASS,SAAW,QAAUT,EAASQ,SAAW,SAAW,KAE5E,EACAjX,EAAW8X,eAAiB,WACxB,OAAOtO,KAAKkO,eAAelO,KAAKiI,MAAMO,OAAOO,aAAc/I,KAAK2N,wBACpE,EACAnX,EAAW+X,eAAiB,WACxB,OAAOvO,KAAKkO,cAAclO,KAAKiI,MAAMO,OAAOO,aAAc/I,KAAK4N,wBACnE,EACApX,EAAWgY,gBAAkB,WACzB,OAAOxO,KAAKkO,cAAclO,KAAKiI,MAAMO,OAAOO,aAAc/I,KAAK6N,yBACnE,EACArX,EAAWiY,gBAAkB,WACzB,OAAOzO,KAAKoO,gBAAgBpO,KAAKiI,MAAMO,OAAOO,aAAc/I,KAAK2N,wBACrE,EACAnX,EAAWkY,gBAAkB,WACzB,OAAO1O,KAAKoO,eAAepO,KAAKiI,MAAMO,OAAOO,aAAc/I,KAAK4N,wBACpE,EACApX,EAAWmY,iBAAmB,WAC1B,OAAO3O,KAAKoO,eAAepO,KAAKiI,MAAMO,OAAOO,aAAc/I,KAAK6N,yBACpE,EACArX,EAAWoY,gBAAkB,WACzB,IAAIrG,EAAKvI,KAAKiI,MACVO,EAASD,EAAGC,OACZyE,EAAWjN,KAAK2N,wBACpB,OAAInF,EAAOO,aACAkE,EAASC,QAAU,SAAW,IAAM3E,EAAGC,OAAOG,aAAe,EAAI3I,KAAK6O,gBAAgB,MAEtF5B,EAASC,QAAU,SAAW1E,EAAOsG,cAAgBtG,EAAOsG,cAAgB,GAAK,KAEhG,EACAtY,EAAWuY,gBAAkB,WACzB,IAAIxG,EAAKvI,KAAKiI,MACVgF,EAAWjN,KAAK4N,wBACpB,OAAIrF,EAAGC,OAAOO,aACHkE,EAASC,QAAU,SAAW,MAE9BD,EAASC,QAAU,SAAW,IAAM3E,EAAGC,OAAOU,aAAe,EAAIlJ,KAAK6O,gBAAgB,KAAO,GAE5G,EACArY,EAAWwY,iBAAmB,WAC1B,IAAIzG,EAAKvI,KAAKiI,MACVgF,EAAWjN,KAAK6N,yBACpB,OAAItF,EAAGC,OAAOO,aACHkE,EAASC,QAAU,QAAU,SAE7BD,EAASC,QAAU,SAAW,IAAM3E,EAAGC,OAAOyG,cAAgB,EAAIjP,KAAK6O,gBAAgB,MAAQ,GAE9G,EACArY,EAAWwS,wBAA0B,WACjC,IAAIT,EAAKvI,KAAKiI,MACd,OAAOjI,KAAKqO,wBAAwB9F,EAAGC,OAAOO,aAAc/I,KAAK2N,wBACrE,EACAnX,EAAW6S,wBAA0B,WACjC,IAAId,EAAKvI,KAAKiI,MACd,OAAOjI,KAAKqO,uBAAuB9F,EAAGC,OAAOO,aAAc/I,KAAK4N,wBACpE,EACApX,EAAWgT,yBAA2B,WAClC,IAAIjB,EAAKvI,KAAKiI,MACd,OAAOjI,KAAKqO,uBAAuB9F,EAAGC,OAAOO,aAAc/I,KAAK6N,yBACpE,EACArX,EAAWqY,gBAAkB,SAAyBxD,EAAI6D,GACtD,IAGIC,EACAjP,EACA5F,EACA8U,EANA7G,EAAKvI,KAAKiI,MACVO,EAASD,EAAGC,OACZtE,EAAW,EAMf,OAAIgL,GAAoB3G,EAAG8G,qBAAqBhE,KAG5C9C,EAAG+G,MACHH,EAAgB5G,EAAGgH,oBAAoBhH,EAAGrC,KAAKqE,SACpC,MAAPc,GACAnL,EAAQqI,EAAG/I,EAAE0C,OAAOX,OAAOgH,EAAGiH,WAAWL,EAAe,MACxD7U,EAAO0F,KAAK8K,SAAS5K,EAAOqI,EAAGkH,QAASjH,EAAOkH,mBAAoBnH,EAAGoH,iBAAiB,GAAO,GAAM,IACtF,OAAPtE,GACPnL,EAAQqI,EAAGe,GAAGpH,OAAOX,OAAOgH,EAAGiH,WAAWL,EAAe,OACzD7U,EAAO0F,KAAK8K,SAAS5K,EAAOqI,EAAGqH,SAAUpH,EAAOqH,oBAAqBtH,EAAGuH,kBAAkB,GAAO,GAAM,KAEvG5P,EAAQqI,EAAGhJ,EAAE2C,OAAOX,OAAOgH,EAAGwH,WAAWZ,IACzC7U,EAAO0F,KAAKyJ,SAASvJ,EAAOqI,EAAGyH,QAASzH,EAAG0H,gBAAiB1H,EAAG2H,iBAAiB,GAAO,GAAM,GAC7FlQ,KAAKsK,sBAAsB6E,EAAe7U,KAE9C8U,EAAQ7G,EAAGtI,GAAG4C,OAAO,QAAQ8D,OAAO,OAAOwJ,QAAQ,MAAM,IAC7CxJ,OAAO,OAAOL,MAAM,aAAc,UAAUA,MAAM,WAAY,SAASA,MAAM,MAAO,GAAGA,MAAM,OAAQ,GAAQK,OAAO,KAAK7J,KAAKxC,GAAMwI,MAAK,WACjJyF,EAAGtI,GAAG4C,OAAO7C,MAAMiG,UAAU,QAAQnD,MAAK,WACtC,IAAI5D,EAAMc,KAAKb,wBACX+E,EAAWhF,EAAIQ,QACfwE,EAAWhF,EAAIQ,MAEvB,IACA0P,EAAM3I,QACV,KAEJ8B,EAAG8G,qBAAqBhE,GAAMnH,GAAY,EAAIqE,EAAG8G,qBAAqBhE,GAAMnH,GA1BjEqE,EAAG8G,qBAAqBhE,EA4BvC,EAEA7U,EAAW4Z,aAAe,SAAsBC,GAC5C,IAAI9H,EAAKvI,KAAKiI,MACVzN,EAAa+N,EAAGE,KAAK5F,OAAO,IAAMnM,EAAM6D,MAAQ,KAAO7D,EAAM8D,YAC7DE,EAAa6N,EAAGE,KAAK5F,OAAO,IAAMnM,EAAM+D,MAAQ,KAAO/D,EAAMgE,YAC7DE,EAAc2N,EAAGE,KAAK5F,OAAO,IAAMnM,EAAMiE,OAAS,KAAOjE,EAAMkE,cAClEyV,EAAiB7V,EAAW0I,aAAe1I,GAAY6G,KAAK,IAAKrB,KAAKsO,eAAerF,KAAKjJ,OAAOqB,KAAK,KAAMrB,KAAKyO,gBAAgBxF,KAAKjJ,OAAOqB,KAAK,KAAMrB,KAAK4O,gBAAgB3F,KAAKjJ,OAAOxG,KAAKwG,KAAK+N,kBAAkB9E,KAAKjJ,QAC1NqQ,EAAiB3V,EAAWwI,aAAexI,GAAY2G,KAAK,IAAKrB,KAAKuO,eAAetF,KAAKjJ,OAAOqB,KAAK,KAAMrB,KAAK0O,gBAAgBzF,KAAKjJ,OAAOqB,KAAK,KAAMrB,KAAK+O,gBAAgB9F,KAAKjJ,OAAOxG,KAAKwG,KAAKgO,kBAAkB/E,KAAKjJ,QAC1NqQ,EAAiBzV,EAAYsI,aAAetI,GAAayG,KAAK,IAAKrB,KAAKwO,gBAAgBvF,KAAKjJ,OAAOqB,KAAK,KAAMrB,KAAK2O,iBAAiB1F,KAAKjJ,OAAOqB,KAAK,KAAMrB,KAAKgP,iBAAiB/F,KAAKjJ,OAAOxG,KAAKwG,KAAKiO,mBAAmBhF,KAAKjJ,MACrO,EACAxJ,EAAW8Z,WAAa,SAAoBC,EAAShS,EAAKC,EAAcgS,GACpE,IAAIC,EAAuB,iBAAZF,EAAuBA,EAAUA,EAAQhS,GACxD,OAAKvB,EAAQyT,GAGQ,UAAjBF,EAAQG,KACDH,EAAQhS,GAAOiS,EAGnBxQ,KAAK2Q,2BAA2BF,EAAGD,GAN/BhS,CAOf,EACAhI,EAAWma,2BAA6B,SAAoCC,EAAQJ,GAChF,IAAIjI,EAAKvI,KAAKiI,MAEd,OAAOuI,GAAgBI,GADVrI,EAAGC,OAAOO,aAAeR,EAAG7I,MAAQ6I,EAAG5I,QAExD,EACAnJ,EAAWkU,mBAAqB,SAA4BmG,EAAQC,EAAWC,GAC3E,IACIC,EACAxP,EACAyP,EACAC,EACAxJ,EACA/F,EACAwP,EAPAzQ,EAAamQ,EAQjB,GAAIC,EAGA,GAAoB,KAFpBE,EAAc9T,EAAW4T,GAAaA,IAAcA,GAGhDpQ,EAAa,CAACmQ,EAAO,SAClB,GAAoB,IAAhBG,EACPtQ,EAAa,CAACmQ,EAAO,GAAIA,EAAOA,EAAO5S,OAAS,SAC7C,GAAI+S,EAAc,EAAG,CAOxB,IANAE,EAAQF,EAAc,EACtBxP,EAAQqP,EAAO,GAEfnJ,IADAuJ,EAAMJ,EAAOA,EAAO5S,OAAS,IACXuD,IAAU0P,EAAQ,GAEpCxQ,EAAa,CAACc,GACTG,EAAI,EAAGA,EAAIuP,EAAOvP,IACnBwP,GAAa3P,EAAQkG,GAAY/F,EAAI,GACrCjB,EAAWoB,KAAKiP,EAAgB,IAAIK,KAAKD,GAAaA,GAE1DzQ,EAAWoB,KAAKmP,EACpB,CAOJ,OALKF,IACDrQ,EAAaA,EAAW2Q,MAAK,SAAUC,EAAGC,GACtC,OAAOD,EAAIC,CACf,KAEG7Q,CACX,EACAlK,EAAWgb,oBAAsB,SAA6BC,GAC1D,IACI/I,EADK1I,KAAKiI,MACAS,KACd,MAAO,CACHnO,MAAOkX,EAAW/I,EAAKnJ,EAAE2D,aAAauO,SAASA,GAAY/I,EAAKnJ,EAChE9E,MAAOgX,EAAW/I,EAAKlJ,EAAE0D,aAAauO,SAASA,GAAY/I,EAAKlJ,EAChE7E,OAAQ8W,EAAW/I,EAAKY,GAAGpG,aAAauO,SAASA,GAAY/I,EAAKY,GAClEoI,SAAUD,EAAW/I,EAAKiJ,KAAKzO,aAAauO,SAASA,GAAY/I,EAAKiJ,KAE9E,EACAnb,EAAWob,OAAS,SAAgBC,EAAaC,GAC7C,IAAIvJ,EAAKvI,KAAKiI,MACdM,EAAGG,KAAKnJ,EAAE+G,MAAM,UAAWwL,EAAW,EAAI,GAC1CvJ,EAAGG,KAAKlJ,EAAE8G,MAAM,UAAWwL,EAAW,EAAI,GAC1CvJ,EAAGG,KAAKY,GAAGhD,MAAM,UAAWwL,EAAW,EAAI,GAC3CvJ,EAAGG,KAAKiJ,KAAKrL,MAAM,UAAWwL,EAAW,EAAI,GAC7CD,EAAYtX,MAAMuC,KAAKyL,EAAGqC,OAC1BiH,EAAYpX,MAAMqC,KAAKyL,EAAG4D,OAC1B0F,EAAYlX,OAAOmC,KAAKyL,EAAG+D,QAC3BuF,EAAYH,SAAS5U,KAAKyL,EAAGsC,SACjC,EAEA,IAEIkH,EACA3T,EAHA4T,EAAK,CAAEC,QAAS,UAKpB,SAAS5J,EAAUJ,EAAOiK,EAAchK,GACpClI,KAAKiI,MAAQA,EACb+J,EAAGpb,MAAMmJ,SAASmS,GAAgBhK,CACtC,CAEA,SAASiK,EAAM3J,GACX,IAAID,EAAKvI,KAAKD,SAAW,IAAIqS,EAAcpS,MAC3CuI,EAAG8J,WAAW7J,GAEdD,EAAG+J,WAAW9J,GACdD,EAAGD,OACHC,EAAGgK,UAAU/J,GAGb,SAAUgK,EAAStK,EAAIvR,EAAQ8b,GAC3BrW,OAAO8B,KAAKgK,GAAItJ,SAAQ,SAAUL,GAC9B5H,EAAO4H,GAAO2J,EAAG3J,GAAK0K,KAAKwJ,GACvBrW,OAAO8B,KAAKgK,EAAG3J,IAAMN,OAAS,GAC9BuU,EAAStK,EAAG3J,GAAM5H,EAAO4H,GAAMkU,EAEvC,GACH,CAPD,CAOGV,EAAa/R,KAAMA,KAC1B,CAEA,SAASoS,EAAcM,GACnB,IAAInK,EAAKvI,KACTuI,EAAGtI,GAAK0S,OAAO1S,GAAK0S,OAAO1S,GAAsC,EAAQ,MACzEsI,EAAGmK,IAAMA,EACTnK,EAAGC,OAASD,EAAGqK,mBACfrK,EAAGrC,KAAO,CAAC,EACXqC,EAAGsK,MAAQ,CAAC,EACZtK,EAAGG,KAAO,CAAC,CACf,CA0mQA,OAxmQAsJ,EAAGc,SAAW,SAAUtK,GACpB,OAAO,IAAI2J,EAAM3J,EACrB,EAEAwJ,EAAGpb,MAAQ,CACPsR,GAAIiK,EAAMvW,UACVmE,SAAU,CACNmI,GAAIkK,EAAcxW,YAG1BmW,EAAcC,EAAGpb,MAAMsR,IACvB9J,EAAuB4T,EAAGpb,MAAMmJ,SAASmI,IAEpBoK,WAAa,WAElC,EACAlU,EAAqBmU,UAAY,WAEjC,EACAnU,EAAqBkK,KAAO,WACxB,IAAIC,EAAKvI,KACLwI,EAASD,EAAGC,OAIhB,GAFAD,EAAGwK,aAECvK,EAAOwK,SACPzK,EAAG0K,iBAAiBzK,EAAOwK,SAAUxK,EAAO0K,cAAe1K,EAAO2K,aAAc3K,EAAO4K,UAAW7K,EAAG8K,mBAClG,GAAI7K,EAAO8K,UACd/K,EAAG8K,aAAa9K,EAAGgL,kBAAkB/K,EAAO8K,UAAW9K,EAAO4K,iBAC3D,GAAI5K,EAAOgL,UACdjL,EAAG8K,aAAa9K,EAAGkL,kBAAkBjL,EAAOgL,gBACzC,KAAIhL,EAAOkL,aAGd,MAAMC,MAAM,+CAFZpL,EAAG8K,aAAa9K,EAAGqL,qBAAqBpL,EAAOkL,cAGnD,CACJ,EAEAtV,EAAqB2U,WAAa,WAC9B,IAAIxK,EAAKvI,KACLC,EAAKsI,EAAGtI,GACRuI,EAASD,EAAGC,OAGhBD,EAAGsL,OAAS,QAAS,IAAIzC,KAAS,QAAS7I,EAAGuL,eAAiBvL,EAAGsL,OAAS,SAAUtL,EAAGwL,eAAiBxL,EAAGsL,OAAS,SAAUtL,EAAGyL,cAAgBzL,EAAGsL,OAAS,QAAStL,EAAG0L,kBAAoB1L,EAAGsL,OAAS,YAAatL,EAAG2L,SAAW3L,EAAG4L,YAAY5L,EAAGsL,QAAStL,EAAGK,iBAAmBL,EAAG4L,YAAY5L,EAAGuL,gBAAiBvL,EAAGY,iBAAmBZ,EAAG4L,YAAY5L,EAAGwL,gBACjWxL,EAAG6L,gBAAkB7L,EAAG4L,YAAY5L,EAAGyL,eAAgBzL,EAAG8L,oBAAsB9L,EAAG4L,YAAY5L,EAAG0L,mBAAoB1L,EAAG+L,UAAY,KACrI/L,EAAGgM,UAAW,EACdhM,EAAGiM,SAAU,EACbjM,EAAGkM,aAAc,EACjBlM,EAAGmM,WAAY,EACfnM,EAAGoM,YAAa,EAEhBpM,EAAGqM,MAAQrM,EAAGsM,gBACdtM,EAAGuM,WAAavM,EAAGwM,qBAEnBxM,EAAGyM,eAAiBxM,EAAOyM,gBAAkBhV,EAAGgL,KAAK1D,OAAStH,EAAGgL,KAAK1D,OAAO2N,IAC7E3M,EAAGsD,eAAiBrD,EAAO2M,iBAAmBlV,EAAGgL,KAAK1D,OAAStH,EAAGgL,KAAK1D,OAAO2N,IAC9E3M,EAAGiD,sBAAwBjD,EAAGsD,eAAeuJ,MAAM,CAAC,CAAC,MAAO,SAAUrX,GAClE,OAAOA,EAAEsX,iBACb,GAAI,CAAC,MAAO,SAAUtX,GAClB,OAAOA,EAAEuX,YACb,GAAI,CAAC,QAAS,SAAUvX,GACpB,OAAOA,EAAEwX,YACb,GAAI,CAAC,QAAS,SAAUxX,GACpB,OAAOA,EAAEyX,UACb,GAAI,CAAC,UAAW,SAAUzX,GACtB,OAAOA,EAAE0X,UAA4B,IAAhB1X,EAAE2X,SAC3B,GAAI,CAAC,UAAW,SAAU3X,GACtB,OAAuB,IAAhBA,EAAE2X,SACb,GAAI,CAAC,UAAW,SAAU3X,GACtB,OAAOA,EAAE4X,UACb,GAAI,CAAC,aAAc,WACf,OAAO,CACX,KAEApN,EAAGqN,gBAAkB,GACrBrN,EAAGsN,gBAAkB,GACrBtN,EAAGuN,iBAAmB,GACtBvN,EAAGwN,mBAAqB,GAExBxN,EAAGyH,QAAUxH,EAAOO,aAAeP,EAAOG,aAAe,QAAU,OAASH,EAAOG,aAAe,MAAQ,SAC1GJ,EAAGkH,QAAUjH,EAAOO,aAAeP,EAAOU,aAAe,MAAQ,SAAWV,EAAOU,aAAe,QAAU,OAC5GX,EAAGqH,SAAWpH,EAAOO,aAAeP,EAAOyG,cAAgB,SAAW,MAAQzG,EAAOyG,cAAgB,OAAS,QAC9G1G,EAAGyN,WAAaxN,EAAOO,aAAe,OAAS,SAE/CR,EAAG0N,cAA2C,UAA3BzN,EAAO0N,gBAC1B3N,EAAG4N,cAA2C,UAA3B3N,EAAO0N,gBAC1B3N,EAAG6N,YAA6C,aAA/B5N,EAAO6N,qBAAqE,cAA/B7N,EAAO6N,oBACrE9N,EAAG+N,aAA8C,aAA/B9N,EAAO6N,qBAAqE,gBAA/B7N,EAAO6N,oBACtE9N,EAAGgO,WAAa,EAChBhO,EAAGiO,gBAAkB,EACrBjO,EAAGkO,iBAAmB,EAEtBlO,EAAG8G,qBAAuB,CACtB9P,EAAG,EACHC,EAAG,EACH8J,GAAI,GAGRf,EAAGmO,qBAAuB,GAC1BnO,EAAGoO,sBAAwBnO,EAAOO,eAAiBP,EAAOM,YAAc,EAAI,GAC5EP,EAAGqO,oBAAsB,EAEzBrO,EAAGsO,cAAgB,CAAC,EAEpBtO,EAAGuO,gCAA6B/T,EAEhCwF,EAAGG,KAAKiJ,KAAO1R,EAAGgG,UAAU,GAChC,EAEA7H,EAAqB2Y,kBAAoB,WACjC/W,KAAKgX,SACLhX,KAAKgX,UAELhX,KAAKiX,UACLjX,KAAKiX,WAELjX,KAAKkX,SACLlX,KAAKkX,UAELlX,KAAKmX,WACLnX,KAAKmX,YAELnX,KAAKoX,UACLpX,KAAKoX,UAEb,EAEAhZ,EAAqBiV,aAAe,SAAUnN,GAC1C,IAGImR,EACA5O,EAJAF,EAAKvI,KACLC,EAAKsI,EAAGtI,GACRuI,EAASD,EAAGC,OAGZ8O,GAAU,EAEd/O,EAAGjO,KAAO,IAAIyN,EAAKQ,GAEfA,EAAGgP,SACHhP,EAAGgP,UAEHhP,EAAGiP,WACHjP,EAAGiP,YAEHjP,EAAGkP,UACHlP,EAAGkP,WAGFjP,EAAOkP,OAE6B,mBAAvBlP,EAAOkP,OAAO/P,KAC5BY,EAAGoP,YAAcnP,EAAOkP,OAExBnP,EAAGoP,YAAc1X,EAAG4C,OAAO2F,EAAOkP,QAJlCnP,EAAGoP,YAAc1X,EAAGgG,UAAU,IAM9BsC,EAAGoP,YAAYpe,UACfgP,EAAGoP,YAAc1X,EAAG4C,OAAO+U,SAASC,cAAc,QAAQvR,MAAM,UAAW,GAC3EiC,EAAGuP,gBAAgBvP,EAAGoP,aACtBL,GAAU,GAEd/O,EAAGoP,YAAYI,KAAK,IAAI5H,QAAQ,MAAM,GAGtC5H,EAAGrC,KAAK8R,GAAK,CAAC,EACdzP,EAAGrC,KAAKqE,QAAUhC,EAAG0P,qBAAqB/R,GAEtCsC,EAAO0P,cACP3P,EAAGrC,KAAKqE,QAAUhC,EAAGrC,KAAKqE,QAAQ4N,OAAO3P,EAAO0P,cAIhD1P,EAAO4P,WACP7P,EAAG8P,oBAAwC,IAArB7P,EAAO4P,UAAqB7P,EAAG+P,SAAS/P,EAAGrC,KAAKqE,SAAW/B,EAAO4P,WAExF5P,EAAO+P,aACPhQ,EAAGiQ,oBAA0C,IAAvBhQ,EAAO+P,YAAuBhQ,EAAG+P,SAAS/P,EAAGrC,KAAKqE,SAAW/B,EAAO+P,aAI9FhQ,EAAGkQ,cACHlQ,EAAGmQ,eAGHnQ,EAAGhJ,EAAEgC,OAAOtB,EAAG0Y,OAAOpQ,EAAGwH,WAAWxH,EAAGrC,KAAKqE,WAC5ChC,EAAG/I,EAAE+B,OAAOgH,EAAGiH,WAAWjH,EAAGrC,KAAKqE,QAAS,MAC3ChC,EAAGe,GAAG/H,OAAOgH,EAAGiH,WAAWjH,EAAGrC,KAAKqE,QAAS,OAC5ChC,EAAGqQ,KAAKrX,OAAOgH,EAAGhJ,EAAEgC,UACpBgH,EAAGsQ,KAAKtX,OAAOgH,EAAG/I,EAAE+B,UACpBgH,EAAGuQ,MAAMvX,OAAOgH,EAAGe,GAAG/H,UAGtBgH,EAAGwQ,WAAaxQ,EAAGhJ,EAAEgC,SAGjBgH,EAAGtQ,OACHsQ,EAAGtQ,MAAMiI,MAAMqI,EAAGqQ,MAElBpQ,EAAOwQ,cACPzQ,EAAG0Q,KAAK/Y,MAAMqI,EAAGhJ,GAMrBgJ,EAAG+G,IAAM/G,EAAGoP,YAAYhR,OAAO,OAAOL,MAAM,WAAY,UAAU4S,GAAG,cAAc,WAC/E,OAAO1Q,EAAO2Q,YAAYrc,KAAKyL,EACnC,IAAG2Q,GAAG,cAAc,WAChB,OAAO1Q,EAAO4Q,WAAWtc,KAAKyL,EAClC,IAEIA,EAAGC,OAAO6Q,eACV9Q,EAAG+G,IAAIjO,KAAK,QAASkH,EAAGC,OAAO6Q,eAInChC,EAAO9O,EAAG+G,IAAI3I,OAAO,QACrB4B,EAAG+Q,UAAY/Q,EAAGgR,WAAWlC,EAAM9O,EAAGsL,QACtCtL,EAAGiR,UAAYjR,EAAGgR,WAAWlC,EAAM9O,EAAGuL,gBACtCvL,EAAGkR,UAAYlR,EAAGgR,WAAWlC,EAAM9O,EAAGwL,gBACtCxL,EAAGmR,SAAWnR,EAAGgR,WAAWlC,EAAM9O,EAAGyL,eACrCzL,EAAGoR,aAAepR,EAAGgR,WAAWlC,EAAM9O,EAAG0L,mBACzC1L,EAAGqR,gBAGHnR,EAAOF,EAAGE,KAAOF,EAAG+G,IAAI3I,OAAO,KAAKtF,KAAK,YAAakH,EAAGM,aAAa,SAElEN,EAAGsR,cACHtR,EAAGsR,eAEHtR,EAAGuR,aACHvR,EAAGuR,cAEHvR,EAAGwR,YACHxR,EAAGwR,aAEHxR,EAAGyR,WACHzR,EAAGyR,YAMPvR,EAAK9B,OAAO,QAAQtF,KAAK,QAAS3K,EAAM8C,KAAO,IAAM9C,EAAM6C,OAAO8H,KAAK,cAAe,UACrFA,KAAK,oBAAqB,UAG3BkH,EAAG0R,aAGH1R,EAAG2R,WAGHzR,EAAK9B,OAAO,KAAKtF,KAAK,YAAakH,EAAG2L,UAAU7S,KAAK,QAAS3K,EAAME,OAGhE4R,EAAO2R,kBACP5R,EAAG6R,gBAIP7R,EAAG8R,gBAGH9R,EAAGwO,oBAIHtO,EAAKpC,OAAO,OAAQmC,EAAO8R,gBAAkB,KAAO,KAAO5jB,EAAM2B,SAASgJ,KAAK,QAAS3K,EAAMsB,UAAUqJ,KAAK,QAASkH,EAAG7I,OAAO2B,KAAK,SAAUkH,EAAG5I,QAAQ2G,MAAM,UAAW,GAAG4S,GAAG,gBAAiB,MAG9L1Q,EAAO+R,eACPhS,EAAGtQ,MAAM0gB,OAAOpQ,EAAGiS,oBAIvBjS,EAAGjO,KAAKgO,OAGRC,EAAGkS,cAAclS,EAAGrC,KAAKqE,SAGrB+M,IACA/O,EAAGmS,kBACHnS,EAAGC,OAAOmS,OAAO7d,KAAKyL,GACtBA,EAAGqJ,OAAO,CACNvB,gBAAgB,EAChBuK,eAAe,EACfC,mBAAmB,EACnBC,sBAAsB,EACtBC,uBAAuB,KAK/BxS,EAAGyS,aAGHzS,EAAGmK,IAAIuI,QAAU1S,EAAGoP,YAAYhQ,MACpC,EAEAvJ,EAAqB8c,YAAc,SAAUC,EAAIC,GAC7C,IAAI7S,EAAKvI,KACI,SAATob,GACAD,EAAGrY,MAAK,WACJ,IAAI4C,EAAI6C,EAAGtI,GAAG4C,OAAO7C,MACjBqb,EAAK3V,EAAErE,KAAK,MACZia,EAAK5V,EAAErE,KAAK,MACZka,EAAK7V,EAAErE,KAAK,MACZiI,EAAK5D,EAAErE,KAAK,MAChBqE,EAAErE,KAAK,CACH,GAAM3D,KAAKC,KAAK0d,GAChB,GAAM3d,KAAKC,KAAK2d,GAChB,GAAM5d,KAAKC,KAAK4d,GAChB,GAAM7d,KAAKC,KAAK2L,IAExB,GAER,EAEAlL,EAAqBqa,YAAc,WAC/B,IAAIlQ,EAAKvI,KACLwI,EAASD,EAAGC,OACZgT,EAAejT,EAAGkT,OAASlT,EAAGmT,kBAAoB,EAClDC,EAAcpT,EAAGkT,OAASlT,EAAGqT,iBAAmB,EAChDC,EAAwBtT,EAAG0N,eAAiB1N,EAAG4N,cAAgB,EAAIqF,EACnEM,EAASvT,EAAGwT,aACZC,EAAcxT,EAAOO,cAAgB+S,EAAS,EAAIvT,EAAG0T,wBAAwB,KAC7EC,EAAiB1T,EAAO2T,gBAAkBL,EAAStT,EAAO4T,qBAAuBJ,EAAc,EAEnGzT,EAAG8T,aAAe9T,EAAG+T,kBACrB/T,EAAGgU,cAAgBhU,EAAGiU,mBAGtBjU,EAAGkU,OAASjU,EAAOO,aAAe,CAC9B5B,IAAKoB,EAAG0T,wBAAwB,MAAQ1T,EAAGmU,uBAC3CtV,MAAO0U,EAAS,EAAIvT,EAAGoU,yBACvBtV,OAAQkB,EAAG0T,wBAAwB,KAAOJ,EAAwBtT,EAAGqU,0BACrEtV,KAAM4U,GAAkBJ,EAAS,EAAIvT,EAAGsU,0BACxC,CACA1V,IAAK,EAAIoB,EAAGmU,uBACZtV,MAAO0U,EAAS,EAAIvT,EAAGoU,yBACvBtV,OAAQ2U,EAAcE,EAAiBL,EAAwBtT,EAAGqU,0BAClEtV,KAAMwU,EAAS,EAAIvT,EAAGsU,yBAI1BtU,EAAGuU,QAAUtU,EAAOO,aAAe,CAC/B5B,IAAKoB,EAAGkU,OAAOtV,IACfC,MAAO2V,IACP1V,OAAQ,GAAKwU,EACbvU,KAAMiB,EAAGmO,sBACT,CACAvP,IAAKoB,EAAGgU,cAAgBL,EAAiBL,EACzCzU,MAAO2V,IACP1V,OAAQ2U,EAAcH,EACtBvU,KAAMiB,EAAGkU,OAAOnV,MAIpBiB,EAAGyU,QAAU,CACT7V,IAAK,EACLC,MAAO2V,IACP1V,OAAQ,EACRC,KAAM,GAENiB,EAAG0U,qBACH1U,EAAG0U,oBAAoBzB,EAAcG,GAGzCpT,EAAG7I,MAAQ6I,EAAG8T,aAAe9T,EAAGkU,OAAOnV,KAAOiB,EAAGkU,OAAOrV,MACxDmB,EAAG5I,OAAS4I,EAAGgU,cAAgBhU,EAAGkU,OAAOtV,IAAMoB,EAAGkU,OAAOpV,OACrDkB,EAAG7I,MAAQ,IACX6I,EAAG7I,MAAQ,GAEX6I,EAAG5I,OAAS,IACZ4I,EAAG5I,OAAS,GAGhB4I,EAAG2U,OAAS1U,EAAOO,aAAeR,EAAGkU,OAAOnV,KAAOiB,EAAGmO,qBAAuBnO,EAAGoO,sBAAwBpO,EAAG7I,MAC3G6I,EAAG4U,QAAU3U,EAAOO,aAAeR,EAAG5I,OAAS4I,EAAGgU,cAAgBhU,EAAGuU,QAAQ3V,IAAMoB,EAAGuU,QAAQzV,OAC1FkB,EAAG2U,OAAS,IACZ3U,EAAG2U,OAAS,GAEZ3U,EAAG4U,QAAU,IACb5U,EAAG4U,QAAU,GAIjB5U,EAAG6U,SAAW7U,EAAG7I,OAAS6I,EAAG0N,cAAgB0F,EAAc,GAAK,GAChEpT,EAAG8U,UAAY9U,EAAG5I,QAAU4I,EAAG0N,cAAgB,EAAI,IAC/C1N,EAAG+U,QAAQ,WAAa9U,EAAO+U,mBAC/BhV,EAAG8U,WAAa9U,EAAG5I,OAAS4I,EAAGiV,uBAE/BjV,EAAGkV,cACHlV,EAAGkV,eAGHlV,EAAG0N,eAAiB6F,IACpBvT,EAAGyU,QAAQ1V,KAAOiB,EAAG6U,SAAW,EAAwB,IAApB7U,EAAGmV,eAE/C,EAEAtf,EAAqBqc,cAAgB,SAAUlQ,GAC3C,IAAIhC,EAAKvI,KAKTuI,EAAGoV,qBAAqBpT,GAGxBhC,EAAGqV,oBAAoBrT,GAGvBhC,EAAGsV,qBAAqBtT,GAGpBhC,EAAGwT,cAAgBxT,EAAGuV,qBACtBvV,EAAGuV,oBAAoBvT,GAKvBhC,EAAGwV,0BACHxV,EAAGwV,yBAAyBxT,GAIhChC,EAAGyV,aACP,EACA5f,EAAqB4f,YAAc,WAC/B,IAAIzV,EAAKvI,KACTuI,EAAG+G,IAAIrJ,UAAU,IAAMvP,EAAMC,QAAQwhB,QAAO,SAAUpa,GAClD,OAAOwK,EAAG0V,eAAelgB,EAAEsN,GAC/B,IAAGnI,aAAauO,SAASlJ,EAAGC,OAAO0V,qBAAqB5X,MAAM,UAAW,EAC7E,EAEAlI,EAAqBwT,OAAS,SAAUtT,EAASuT,GAC7C,IAOIsM,EAAOC,EAAc/N,EAAgBgO,EAAuBtD,EAAuBH,EAAeC,EAAmBC,EAAsBwD,EAAiBC,EAAYC,EAAeC,EAAeC,EAEtMC,EAAUC,EAASC,EAAUC,EAAUC,EACvCtN,EAAUuN,EAAiBC,EAC3BC,EAAaC,EAEbze,EACAiB,EACAyd,EACAC,EAEAC,EACAC,EAnBAhX,EAAKvI,KACLyI,EAAOF,EAAGE,KACVxI,EAAKsI,EAAGtI,GACRuI,EAASD,EAAGC,OACZgX,EAAcjX,EAAGkX,gBAAgBlX,EAAGmX,YACpCC,EAAapX,EAAGkX,gBAAgBlX,EAAGqX,WACnCC,EAActX,EAAGkX,gBAAgBlX,EAAGuX,YAEpCC,EAAWxX,EAAGwT,aAId5M,EAAgB5G,EAAGgH,oBAAoBhH,EAAGrC,KAAKqE,SAK/CyV,EAAKzX,EAAGyX,GAAG/W,KAAKV,GAsEpB,GAjEA4V,EAAQ9f,EADRC,EAAUA,GAAW,CAAC,EACK,SAAS,GACpC8f,EAAe/f,EAAUC,EAAS,gBAAgB,GAClD+R,EAAiBhS,EAAUC,EAAS,kBAAkB,GACtDsc,EAAgBvc,EAAUC,EAAS,iBAAiB,GACpDuc,EAAoBxc,EAAUC,EAAS,qBAAqB,GAC5Dwc,EAAuBzc,EAAUC,EAAS,wBAAwB,GAClEggB,EAAkBjgB,EAAUC,EAAS,mBAAmB,GACxDogB,EAAkBrgB,EAAUC,EAAS,kBAAmBuc,GACxD0D,EAAalgB,EAAUC,EAAS,cAAc,GAC9CkgB,EAAgBngB,EAAUC,EAAS,iBAAiB,GACpDmgB,EAAgBpgB,EAAUC,EAAS,iBAAiB,GACpD+f,EAAwBhgB,EAAUC,EAAS,wBAAyB+R,GACpE0K,EAAwB1c,EAAUC,EAAS,wBAAyB+R,GAEpEoB,EAAWpB,EAAiB7H,EAAO0V,oBAAsB,EACzDc,EAAkBX,EAAwB5M,EAAW,EACrDwN,EAAkBlE,EAAwBtJ,EAAW,EAErDI,EAAcA,GAAetJ,EAAGjO,KAAKkX,oBAAoByN,GAGrDV,GAAc/V,EAAOyX,YACrB1X,EAAG2X,aAAa3X,EAAG+P,SAAS/P,EAAGrC,KAAKqE,SAAUjM,EAASuT,GAChD4M,GAGPlW,EAAGmS,iBAAgB,GAInBnS,EAAGqB,iBAA4C,IAAzBuF,EAAclR,QACpCsK,EAAGhJ,EAAEgC,OAAO,CAAC,EAAGgH,EAAGG,KAAKnJ,EAAE0G,UAAU,SAASvD,SAG7CyM,EAAclR,QACdsK,EAAG4X,cAAchR,EAAe0L,EAAmBC,EAAsBwD,GACpE9V,EAAOwD,qBACRtL,EAAa6H,EAAGjO,KAAKgQ,sBAAsB6E,MAG/C5G,EAAGqC,MAAMlK,WAAW,IACpB6H,EAAGsC,SAASnK,WAAW,KAGvB8H,EAAO4X,eAAiB9hB,EAAQ6gB,OAChCE,EAAiB9W,EAAGhJ,EAAE8gB,aAG1B9X,EAAG/I,EAAE+B,OAAOgH,EAAGiH,WAAWL,EAAe,IAAKkQ,IAC9C9W,EAAGe,GAAG/H,OAAOgH,EAAGiH,WAAWL,EAAe,KAAMkQ,KAE3C7W,EAAO0D,oBAAsB1D,EAAO8X,mBACrC/X,EAAG4D,MAAMzL,WAAW6H,EAAGjO,KAAKoQ,mBAAmBnC,EAAG/I,EAAE+B,SAAUiH,EAAO8X,qBAEpE9X,EAAO6D,qBAAuB7D,EAAO+X,oBACtChY,EAAG+D,OAAO5L,WAAW6H,EAAGjO,KAAKoQ,mBAAmBnC,EAAGe,GAAG/H,SAAUiH,EAAO+X,qBAI3EhY,EAAGjO,KAAKsX,OAAOC,EAAakO,GAG5BxX,EAAGjO,KAAK8V,aAAaC,IAGhBwK,GAAqB6D,IAAoBvP,EAAclR,OACxD,GAAIuK,EAAO6B,qBAAuB3J,EAAY,CAC1C,IAAKiB,EAAI,EAAGA,EAAIjB,EAAWzC,OAAQ0D,IAC/B,GAAIjB,EAAWzC,OAAS0D,EAAI6G,EAAOgY,wBAAyB,CACxDpB,EAAqBzd,EACrB,KACJ,CAEJ4G,EAAG+G,IAAIrJ,UAAU,IAAMvP,EAAM6D,MAAQ,eAAeuI,MAAK,SAAU2d,GAC/D,IAAI5c,EAAQnD,EAAWyM,QAAQsT,GAC3B5c,GAAS,GACT5D,EAAG4C,OAAO7C,MAAMsG,MAAM,UAAWzC,EAAQub,EAAqB,OAAS,QAE/E,GACJ,MACI7W,EAAG+G,IAAIrJ,UAAU,IAAMvP,EAAM6D,MAAQ,eAAe+L,MAAM,UAAW,SAK7EqY,EAAWpW,EAAGmY,iBAAmBnY,EAAGmY,iBAAiBlB,GAAa,QAASzc,EAC3E6b,EAAUrW,EAAGoY,gBAAkBpY,EAAGoY,gBAAgBhB,QAAc5c,EAChE8b,EAAWtW,EAAGqY,iBAAmBrY,EAAGqY,iBAAiBf,GAAa,QAAS9c,EAC3E+b,EAAWvW,EAAGsY,kBAAkBrB,EAAaG,EAAYE,GAAa,GACtEd,EAAWxW,EAAGsY,kBAAkBrB,EAAaG,EAAYE,GAAa,GAGlE1B,IACA5V,EAAGsQ,KAAKtX,OAAOgH,EAAGiH,WAAWL,EAAe,MAC5C5G,EAAGuQ,MAAMvX,OAAOgH,EAAGiH,WAAWL,EAAe,QAIjD5G,EAAGuY,mBAGHrY,EAAK5F,OAAO,QAAUnM,EAAM8C,KAAO,IAAM9C,EAAM6C,OAAO8H,KAAK,IAAKkH,EAAG7I,MAAQ,GAAG2B,KAAK,IAAKkH,EAAG5I,OAAS,GAAGnG,KAAKgP,EAAOuY,uBAAuB7d,aAAaoD,MAAM,UAAW6I,EAAclR,OAAS,EAAI,GAGnMsK,EAAGyY,WAAWvP,GAGdlJ,EAAG0Y,aAAaxP,GAGhBlJ,EAAG2Y,UAAUlC,GAGbzW,EAAG4Y,WAAWnC,GACdzW,EAAG6Y,WAAWpC,GACdzW,EAAG8Y,eAGC9Y,EAAG+Y,gBACH/Y,EAAGgZ,WAAWvC,GAIdzW,EAAGiZ,aACHjZ,EAAGiZ,cAIHjZ,EAAGkZ,WACHlZ,EAAGkZ,UAAUhQ,EAAUuN,EAAiBpE,GAIxCrS,EAAGmZ,gBACHnZ,EAAGmZ,eAAetD,EAAcvM,EAAaJ,EAAUuN,EAAiBQ,EAAaG,EAAYE,GAIrGpX,EAAKxC,UAAU,IAAMvP,EAAMiB,iBAAiBwgB,OAAO5P,EAAGqX,UAAU3W,KAAKV,IAAKtC,UAAU,UAAUQ,SAG1F+B,EAAOmZ,sBAAwBrjB,EAAQ6gB,MAAQX,IAC/CjW,EAAGqZ,kBACCrZ,EAAGsZ,YACHtZ,EAAGsZ,cAKXtZ,EAAGuZ,gBAGHxC,GAAM/W,EAAGC,OAAOO,aAAeR,EAAGwZ,QAAUxZ,EAAGyZ,SAAS/Y,KAAKV,GAC7DgX,GAAMhX,EAAGC,OAAOO,aAAeR,EAAGyZ,QAAUzZ,EAAGwZ,SAAS9Y,KAAKV,GAEzDjK,EAAQ6gB,OACRA,EAAO5W,EAAG0Z,aAAa,CACnB1X,QAAS4E,EACTgQ,KAAM7gB,EAAQ6gB,KACd1N,SAAUnT,EAAQ6gB,KAAK1N,SACvBmN,QAASA,EACTC,SAAUA,EACVF,SAAUA,EACVW,GAAIA,EACJC,GAAIA,EACJS,GAAIA,EACJlB,SAAUA,EACVC,SAAUA,MAIbtN,GAAY0N,IAAS5W,EAAG2Z,eAGzBjiB,EAAGiD,aAAauO,SAASA,GAAU3O,MAAK,WACpC,IAAIqf,EAAoB,GAGxB,CAAC5Z,EAAG6Z,UAAUxD,GAAS,GAAOrW,EAAG8Z,WAAWxD,GAAU,GAAOtW,EAAG+Z,WAAW3D,GAAU,GAAOpW,EAAGga,aAAajD,EAAIC,GAAI,GAAOhX,EAAGia,WAAW1D,EAAUC,EAAUzgB,EAAQ6gB,MAAM,GAAO5W,EAAGka,cAAa,GAAOla,EAAGma,YAAW,IAAO9jB,SAAQ,SAAUiT,GAC5OA,EAAYjT,SAAQ,SAAUsE,GAC1Bif,EAAkBrgB,KAAKoB,EAC3B,GACJ,IAGAgc,EAAc3W,EAAGoa,eACjBR,EAAkBvjB,SAAQ,SAAUgkB,GAChC1D,EAAY2D,IAAID,EACpB,GACJ,IAAG9lB,KAAKoiB,GAAa,WACbC,GACAA,IAEA3W,EAAOsa,YACPta,EAAOsa,WAAWhmB,KAAKyL,EAE/B,KAEAA,EAAG6Z,UAAUxD,GACbrW,EAAG8Z,WAAWxD,GACdtW,EAAG+Z,WAAW3D,GACdpW,EAAGga,aAAajD,EAAIC,GACpBhX,EAAGia,WAAW1D,EAAUC,EAAUzgB,EAAQ6gB,MAC1C5W,EAAGka,eACHla,EAAGma,aACCla,EAAOsa,YACPta,EAAOsa,WAAWhmB,KAAKyL,IAK/BA,EAAG+P,SAAS/P,EAAGrC,KAAKqE,SAAS3L,SAAQ,SAAUyM,GAC3C9C,EAAGsO,cAAcxL,IAAM,CAC3B,GACJ,EAEAjN,EAAqB2kB,gBAAkB,SAAUzkB,GAC7C,IAEIuT,EAFAtJ,EAAKvI,KACLwI,EAASD,EAAGC,QAEhBlK,EAAUA,GAAW,CAAC,GAEd+R,eAAiBhS,EAAUC,EAAS,kBAAkB,GAC9DA,EAAQsc,cAAgBvc,EAAUC,EAAS,iBAAiB,GAC5DA,EAAQigB,WAAalgB,EAAUC,EAAS,cAAc,GAEtDA,EAAQuc,mBAAoB,EAC5Bvc,EAAQwc,sBAAuB,EAC/Bxc,EAAQ+f,uBAAwB,EAChC/f,EAAQ0kB,2BAA6B3kB,EAAUC,EAAS,6BAA8BA,EAAQ+R,gBAE9F9H,EAAGkQ,cAEGna,EAAQigB,YAAc/V,EAAOyX,cAC/BpO,EAActJ,EAAGjO,KAAKkX,oBAAoBlT,EAAQyc,sBAAwBvS,EAAO0V,oBAAsB,GAEvG3V,EAAGmQ,eACHnQ,EAAGqR,gBAEHrR,EAAG0a,aAAa3kB,EAAQ0kB,2BAA4BnR,IAGxDtJ,EAAGqJ,OAAOtT,EAASuT,EACvB,EACAzT,EAAqB8kB,qBAAuB,WACxCljB,KAAK4R,OAAO,CACRuM,OAAO,EACPC,cAAc,EACdI,eAAe,EACfzD,uBAAuB,GAE/B,EAEA3c,EAAqB8L,aAAe,WAChC,MAAmC,eAA5BlK,KAAKwI,OAAO2a,WACvB,EACA/kB,EAAqBwL,cAAgB,WACjC,OAAO5J,KAAKwI,OAAO2a,YAAYhW,QAAQ,YAAc,CACzD,EACA/O,EAAqBglB,UAAY,WAC7B,IAAI7a,EAAKvI,KACLwI,EAASD,EAAGC,OAChB,OAAQD,EAAG2B,iBAAmB1B,EAAO6a,QAAUllB,EAASqK,EAAO8a,SACnE,EAEAllB,EAAqB4M,cAAgB,WACjC,MAAmC,eAA5BhL,KAAKwI,OAAO+a,WACvB,EAEAnlB,EAAqByK,aAAe,SAAUlS,GAC1C,IAEI4I,EACAC,EAHA+I,EAAKvI,KACLwI,EAASD,EAAGC,OA4BhB,MAzBe,SAAX7R,GACA4I,EAAI3B,EAAY2K,EAAGkU,OAAOnV,MAC1B9H,EAAI5B,EAAY2K,EAAGkU,OAAOtV,MACR,YAAXxQ,GACP4I,EAAI3B,EAAY2K,EAAGuU,QAAQxV,MAC3B9H,EAAI5B,EAAY2K,EAAGuU,QAAQ3V,MACT,WAAXxQ,GACP4I,EAAIgJ,EAAGyU,QAAQ1V,KACf9H,EAAI+I,EAAGyU,QAAQ7V,KACG,MAAXxQ,GACP4I,EAAI,EACJC,EAAIgJ,EAAOO,aAAe,EAAIR,EAAG5I,QACf,MAAXhJ,GACP4I,EAAI,EACJC,EAAIgJ,EAAOO,aAAeR,EAAG5I,OAAS,GACpB,OAAXhJ,GACP4I,EAAIiJ,EAAOO,aAAe,EAAIR,EAAG7I,MACjCF,EAAIgJ,EAAOO,aAAe,EAAI,GACZ,SAAXpS,GACP4I,EAAI,EACJC,EAAIgJ,EAAOO,aAAe,EAAIR,EAAG4U,SACf,QAAXxmB,IACP4I,EAAIgJ,EAAG6U,SAAW,EAClB5d,EAAI+I,EAAG8U,UAAY,GAAK9U,EAAG+U,QAAQ,SAAW,EAAI,IAE/C,aAAe/d,EAAI,IAAMC,EAAI,GACxC,EACApB,EAAqBolB,eAAiB,SAAUzlB,GAC5C,OAAmB,OAAZA,EAAEzB,OAAkB0D,KAAK6W,cAAc9Y,EAAEsN,IAAM,EAAI,CAC9D,EACAjN,EAAqBqlB,wBAA0B,SAAU1lB,GACrD,OAAmB,OAAZA,EAAEzB,OAAkB0D,KAAK6W,cAAc9Y,EAAEsN,IAAMrL,KAAK0jB,iBAAiB3lB,GAAK,CACrF,EACAK,EAAqBslB,iBAAmB,SAAU3lB,GAC9C,IACI4lB,GADuBzmB,EAAW8C,KAAKwI,OAAOob,YAAc5jB,KAAKwI,OAAOob,WAAW7lB,GAAKiC,KAAKwI,OAAOob,YACnE,EAAI,EACzC,OAAO5mB,EAAQe,EAAEzB,OAAS0D,KAAK6jB,cAAc9lB,GAAK,GAAM4lB,EAAU,CACtE,EACAvlB,EAAqB0lB,eAAiB,WAClC,OAAO9jB,KAAKshB,eAAiB,EAAI,CACrC,EACAljB,EAAqB2lB,GAAK,SAAUhmB,GAChC,OAAOA,EAAIiC,KAAKT,EAAExB,EAAEwB,GAAK,IAC7B,EACAnB,EAAqB4hB,GAAK,SAAUjiB,GAChC,IAAIwK,EAAKvI,KACL1D,EAAQyB,EAAEzB,MAMd,OALIiM,EAAG2B,eACH5N,EAAQiM,EAAG4B,UAAUpM,EAAEzB,OAChBiM,EAAGqB,iBAAsC,iBAAZ7L,EAAEzB,QACtCA,EAAQiM,EAAGC,OAAOwb,kBAAkB7W,QAAQpP,EAAEzB,QAE3CoB,KAAKC,KAAK4K,EAAGhJ,EAAEjD,GAC1B,EACA8B,EAAqB6lB,GAAK,SAAUlmB,GAChC,IAAIwK,EAAKvI,KACLkkB,EAASnmB,EAAEzD,MAAmB,OAAXyD,EAAEzD,KAAgBiO,EAAGe,GAAKf,EAAG/I,EACpD,OAAO9B,KAAKC,KAAKumB,EAAOnmB,EAAEzB,OAC9B,EACA8B,EAAqB+lB,MAAQ,SAAUpmB,GACnC,OAAOA,EAAIiC,KAAK4Y,KAAK7a,EAAEwB,GAAK,IAChC,EAEAnB,EAAqBgmB,cAAgB,SAAU/T,EAAgBwB,GAC3D,IACIjH,EACAuB,EACAG,EAHA/D,EAAKvI,KAIL6R,GAAeA,EAAYtX,MAC3BqQ,EAAQiH,EAAYtX,OAEpBqQ,EAAQrC,EAAGE,KAAK5F,OAAO,IAAMnM,EAAM6D,OAC/B8V,IACAzF,EAAQA,EAAM1H,eAGlB2O,GAAeA,EAAYpX,MAC3B0R,EAAQ0F,EAAYpX,OAEpB0R,EAAQ5D,EAAGE,KAAK5F,OAAO,IAAMnM,EAAM+D,OAC/B4V,IACAlE,EAAQA,EAAMjJ,eAGlB2O,GAAeA,EAAYlX,OAC3B2R,EAASuF,EAAYlX,QAErB2R,EAAS/D,EAAGE,KAAK5F,OAAO,IAAMnM,EAAMiE,QAChC0V,IACA/D,EAASA,EAAOpJ,gBAGvBmN,EAAiB9H,EAAGE,KAAKvF,aAAeqF,EAAGE,MAAMpH,KAAK,YAAakH,EAAGM,aAAa,SACpF+B,EAAMvJ,KAAK,YAAakH,EAAGM,aAAa,MACxCsD,EAAM9K,KAAK,YAAakH,EAAGM,aAAa,MACxCyD,EAAOjL,KAAK,YAAakH,EAAGM,aAAa,OACzCN,EAAGE,KAAK5F,OAAO,IAAMnM,EAAMU,WAAWiK,KAAK,YAAakH,EAAGM,aAAa,OAC5E,EACAzK,EAAqB6kB,aAAe,SAAU5S,EAAgBwB,GAC1D,IAAItJ,EAAKvI,KACTuI,EAAG6b,cAAc/T,EAAgBwB,GAC7BtJ,EAAGC,OAAO2T,eACV5T,EAAG8b,iBAAiBhU,EAAgBwB,GAEpCtJ,EAAGkT,QACHlT,EAAG+b,gBAAgBjU,EAE3B,EAEAjS,EAAqBwb,cAAgB,WACjC,IAAIrR,EAAKvI,KACL/H,EAAQsQ,EAAG+G,IAAIzM,OAAO,yBAC1B0F,EAAG+G,IAAIjO,KAAK,QAASkH,EAAG8T,cAAchb,KAAK,SAAUkH,EAAGgU,eACxDhU,EAAG+G,IAAIrJ,UAAU,CAAC,IAAMsC,EAAGsL,OAAQ,IAAMtL,EAAGyL,gBAAgBnR,OAAO,QAAQxB,KAAK,QAASkH,EAAG7I,OAAO2B,KAAK,SAAUkH,EAAG5I,QACrH4I,EAAG+G,IAAIzM,OAAO,IAAM0F,EAAGuL,gBAAgBjR,OAAO,QAAQxB,KAAK,IAAKkH,EAAGgc,cAActb,KAAKV,IAAKlH,KAAK,IAAKkH,EAAGic,cAAcvb,KAAKV,IAAKlH,KAAK,QAASkH,EAAGkc,kBAAkBxb,KAAKV,IAAKlH,KAAK,SAAUkH,EAAGmc,mBAAmBzb,KAAKV,IACvNA,EAAG+G,IAAIzM,OAAO,IAAM0F,EAAGwL,gBAAgBlR,OAAO,QAAQxB,KAAK,IAAKkH,EAAGoc,cAAc1b,KAAKV,IAAKlH,KAAK,IAAKkH,EAAGqc,cAAc3b,KAAKV,IAAKlH,KAAK,QAASkH,EAAGsc,kBAAkB5b,KAAKV,IAAKlH,KAAK,SAAUkH,EAAGuc,mBAAmB7b,KAAKV,IACvNA,EAAG+G,IAAIzM,OAAO,IAAM0F,EAAG0L,mBAAmBpR,OAAO,QAAQxB,KAAK,QAASkH,EAAG7I,OAAO2B,KAAK,SAAUpJ,EAAMyK,OAASzK,EAAMoJ,KAAK,UAAY,GACtIkH,EAAG+G,IAAIzM,OAAO,IAAMnM,EAAMsB,UAAUqJ,KAAK,QAASkH,EAAG7I,OAAO2B,KAAK,SAAUkH,EAAG5I,QAE9E4I,EAAGoP,YAAYrR,MAAM,aAAciC,EAAGgU,cAAgB,KAC1D,EAEAne,EAAqBsc,gBAAkB,SAAUqK,GAC7C,IAAIxc,EAAKvI,KACJ+kB,IACGxc,EAAGC,OAAOO,cACVR,EAAGG,KAAKnJ,EAAEzC,KAAKyL,EAAGqC,OAClBrC,EAAGG,KAAKiJ,KAAK7U,KAAKyL,EAAGsC,YAErBtC,EAAGG,KAAKlJ,EAAE1C,KAAKyL,EAAG4D,OAClB5D,EAAGG,KAAKY,GAAGxM,KAAKyL,EAAG+D,UAG3B/D,EAAGkQ,cACHlQ,EAAGmQ,eACHnQ,EAAGqR,gBACHrR,EAAG0a,cAAa,EACpB,EAEA7kB,EAAqB0Z,gBAAkB,SAAU1W,GAC7C,IACI4jB,EADAzc,EAAKvI,KAEuB,oBAArBilB,kBAIXD,EAAW,IAAIC,kBAAiB,SAAUC,GACtCA,EAAUtmB,SAAQ,SAAUumB,GACF,cAAlBA,EAAS/J,MAAwB+J,EAASC,kBAC1CJ,EAASK,aAET9c,EAAGuO,2BAA6BnE,OAAO2S,aAAY,WAE3ClkB,EAAUuG,OAAO4d,aACjB5S,OAAO6S,cAAcjd,EAAGuO,4BACxBvO,EAAGmS,kBACCnS,EAAGtQ,OACHsQ,EAAGtQ,MAAMwtB,SAEbld,EAAGC,OAAOmS,OAAO7d,KAAKyL,GACtBA,EAAGqJ,OAAO,CACNgJ,eAAe,EACfC,mBAAmB,EACnBC,sBAAsB,EACtBzK,gBAAgB,EAChB2S,4BAA4B,EAC5BzE,YAAY,IAEhBnd,EAAU8B,aAAaoD,MAAM,UAAW,GAEhD,GAAG,IAEX,GACJ,KACSof,QAAQtkB,EAAUuG,OAAQ,CAAEge,YAAY,EAAMC,WAAW,EAAMC,eAAe,IA/BnFlT,OAAOmT,QAAQC,MAAM,gCAgC7B,EAEA3nB,EAAqB4c,WAAa,WAC9B,IAAIzS,EAAKvI,KACLwI,EAASD,EAAGC,OA+BhB,GA7BAD,EAAGyd,eAAiBzd,EAAG0d,iBAEvB1d,EAAGyd,eAAenD,KAAI,WAClBra,EAAO0d,SAASppB,KAAKyL,EACzB,IACIC,EAAO2d,aACP5d,EAAGyd,eAAenD,KAAI,gBACO9f,IAArBwF,EAAG6d,eACHzT,OAAO0T,aAAa9d,EAAG6d,eAE3B7d,EAAG6d,cAAgBzT,OAAO2T,YAAW,kBAC1B/d,EAAG6d,cACV7d,EAAGmK,IAAI6T,OACX,GAAG,IACP,IAEJhe,EAAGyd,eAAenD,KAAI,WAClBra,EAAOge,UAAU1pB,KAAKyL,EAC1B,IAEAA,EAAGke,yBAA2B,WAEZ,MAAVle,EAAGmK,KAAgBnK,EAAGmK,IAAIuI,QAAQyL,cAItCne,EAAGyd,gBACP,EAEIrT,OAAOgU,YACPhU,OAAOgU,YAAY,WAAYpe,EAAGke,+BAC/B,GAAI9T,OAAOiU,iBACdjU,OAAOiU,iBAAiB,SAAUre,EAAGke,0BAA0B,OAC5D,CAEH,IAAII,EAAUlU,OAAOuT,SAChBW,EAGOA,EAAQhE,KAAQgE,EAAQpgB,SAEhCogB,EAAUte,EAAG0d,kBACLpD,IAAIlQ,OAAOuT,UAJnBW,EAAUte,EAAG0d,iBAOjBY,EAAQhE,IAAIta,EAAGyd,gBACfrT,OAAOuT,SAAW,WAET3d,EAAGmK,IAAIuI,QAAQyL,cAIpBG,GACJ,CACJ,CACJ,EAEAzoB,EAAqB6nB,eAAiB,WAClC,IAAIa,EAAkB,GACtB,SAASC,IACLD,EAAgBloB,SAAQ,SAAUooB,GAC9BA,GACJ,GACJ,CAYA,OAXAD,EAAoBlE,IAAM,SAAUmE,GAChCF,EAAgBhlB,KAAKklB,EACzB,EACAD,EAAoBtgB,OAAS,SAAUugB,GACnC,IAAK,IAAIrlB,EAAI,EAAGA,EAAImlB,EAAgB7oB,OAAQ0D,IACxC,GAAImlB,EAAgBnlB,KAAOqlB,EAAG,CAC1BF,EAAgBG,OAAOtlB,EAAG,GAC1B,KACJ,CAER,EACOolB,CACX,EAEA3oB,EAAqB8oB,OAAS,SAAUhkB,EAAYikB,GAChD,IAAItpB,EAAI,EACRqF,EAAWJ,MAAK,aACVjF,CACN,IAAGiF,KAAK,OAAO,aACHjF,GACJspB,EAAStlB,MAAM7B,KAAMkH,UAE7B,GACJ,EACA9I,EAAqBukB,aAAe,WAChC,IAAIR,EAAoB,GACpB6E,EAAI,SAAW9jB,EAAYikB,GAC3B,IAAIC,EAAQ9B,aAAY,WACpB,IAAI+B,EAAO,EACXlF,EAAkBvjB,SAAQ,SAAUgkB,GAChC,GAAIA,EAAErpB,QACF8tB,GAAQ,OAGZ,IACIzE,EAAE1f,YACN,CAAE,MAAOud,GACL4G,GAAQ,CACZ,CACJ,IACIA,IAASlF,EAAkBlkB,SAC3BunB,cAAc4B,GACVD,GACAA,IAGZ,GAAG,GACP,EAIA,OAHAH,EAAEnE,IAAM,SAAU3f,GACdif,EAAkBrgB,KAAKoB,EAC3B,EACO8jB,CACX,EAEA5oB,EAAqB+L,UAAY,SAAUyB,GACvC,IACI0b,EADA/e,EAAKvI,KAcT,OAZI4L,aAAgBwF,KAChBkW,EAAa1b,EACU,iBAATA,EACd0b,EAAa/e,EAAGyM,eAAezM,EAAGC,OAAO+e,cAAcC,MAAM5b,GACU,iBAA/C,IAATA,EAAuB,YAAcrQ,EAAQqQ,IAC5D0b,EAAa,IAAIlW,MAAMxF,GACA,iBAATA,GAAsB6b,MAAM7b,KAC1C0b,EAAa,IAAIlW,MAAMxF,IAEtB0b,IAAcG,OAAOH,IACtB3U,OAAOmT,QAAQC,MAAM,sBAAwBna,EAAO,oBAEjD0b,CACX,EAEAlpB,EAAqB8jB,aAAe,WAChC,IAAIwF,EAYJ,YAX+B,IAApB9P,SAAS8P,OAEhBA,EAAS,cAC4B,IAAvB9P,SAAS+P,UACvBD,EAAS,iBAC2B,IAAtB9P,SAASgQ,SACvBF,EAAS,gBAC+B,IAA1B9P,SAASiQ,eACvBH,EAAS,iBAGN9P,SAAS8P,EACpB,EAEAtpB,EAAqBpB,QAAUA,EAC/BoB,EAAqBlB,WAAaA,EAClCkB,EAAqBd,SAAWA,EAChCc,EAAqBb,YAAcA,EACnCa,EAAqBZ,UAAYA,EACjCY,EAAqBX,OAASA,EAC9BW,EAAqBR,YAAcA,EACnCQ,EAAqBN,WAAaA,EAClCM,EAAqBJ,QAAUA,EAC/BI,EAAqBD,SAAWA,EAChCC,EAAqBD,SAAWA,EAChCC,EAAqBC,UAAYA,EACjCD,EAAqBK,SAAWA,EAChCL,EAAqBS,SAAWA,EAChCT,EAAqBY,WAAaA,EAClCZ,EAAqB1H,MAAQA,EAQxBoxB,SAASlsB,UAAUqN,OACpB6e,SAASlsB,UAAUqN,KAAO,SAAU8e,GAChC,GAAoB,mBAAT/nB,KAGP,MAAM,IAAIhE,UAAU,wEAGxB,IAAIgsB,EAAQ3qB,MAAMzB,UAAU4I,MAAM1H,KAAKoK,UAAW,GAC9C+gB,EAAUjoB,KACVkoB,EAAO,WAAiB,EACxBC,EAAS,WACT,OAAOF,EAAQpmB,MAAM7B,gBAAgBkoB,EAAOloB,KAAO+nB,EAAOC,EAAMxkB,OAAOnG,MAAMzB,UAAU4I,MAAM1H,KAAKoK,YACtG,EAKA,OAHAghB,EAAKtsB,UAAYoE,KAAKpE,UACtBusB,EAAOvsB,UAAY,IAAIssB,EAEhBC,CACX,GAYM,eAAgBxV,SAElBA,OAAOyV,WAAa,SAAUhN,EAAMiN,EAAcC,GAC9CtoB,KAAKuoB,YAAcnN,EACnBpb,KAAKwoB,oBAAsBH,EAC3BroB,KAAKyoB,mBAAqBH,CAC9B,EAEA3V,OAAOyV,WAAWxsB,UAAU8sB,UAAY,aAExC/V,OAAOyV,WAAWO,gBAAkB,EACpChW,OAAOyV,WAAWQ,kBAAoB,EACtCjW,OAAOyV,WAAWS,mBAAqB,EACvClW,OAAOyV,WAAWU,mBAAqB,EACvCnW,OAAOyV,WAAWW,mBAAqB,EACvCpW,OAAOyV,WAAWY,mBAAqB,EACvCrW,OAAOyV,WAAWa,0BAA4B,EAC9CtW,OAAOyV,WAAWc,0BAA4B,EAC9CvW,OAAOyV,WAAWe,8BAAgC,EAClDxW,OAAOyV,WAAWgB,8BAAgC,EAClDzW,OAAOyV,WAAWiB,gBAAkB,GACpC1W,OAAOyV,WAAWkB,gBAAkB,GACpC3W,OAAOyV,WAAWmB,8BAAgC,GAClD5W,OAAOyV,WAAWoB,8BAAgC,GAClD7W,OAAOyV,WAAWqB,4BAA8B,GAChD9W,OAAOyV,WAAWsB,4BAA8B,GAChD/W,OAAOyV,WAAWuB,iCAAmC,GACrDhX,OAAOyV,WAAWwB,iCAAmC,GACrDjX,OAAOyV,WAAWyB,qCAAuC,GACzDlX,OAAOyV,WAAW0B,qCAAuC,GAGzDnX,OAAOyV,WAAWxsB,UAAUmuB,gBAAkB,WACtC/pB,KAAKyoB,oBAAoBzoB,KAAKyoB,mBAAmBuB,eAAehqB,KACxE,EAEA2S,OAAOsX,oBAAsB,SAAU3B,GACnC3V,OAAOyV,WAAWtrB,KAAKkD,KAAM2S,OAAOyV,WAAWQ,kBAAmB,IAAKN,EAC3E,EACA3V,OAAOsX,oBAAoBruB,UAAYQ,OAAOC,OAAOsW,OAAOyV,WAAWxsB,WACvE+W,OAAOsX,oBAAoBruB,UAAUwI,SAAW,WAC5C,MAAO,8BACX,EACAuO,OAAOsX,oBAAoBruB,UAAUsuB,cAAgB,WACjD,OAAOlqB,KAAKwoB,mBAChB,EACA7V,OAAOsX,oBAAoBruB,UAAUuuB,MAAQ,WACzC,OAAO,IAAIxX,OAAOsX,yBAAoBlnB,EAC1C,EAEA4P,OAAOyX,oBAAsB,SAAU9B,EAAmB/oB,EAAGC,GACzDmT,OAAOyV,WAAWtrB,KAAKkD,KAAM2S,OAAOyV,WAAWS,mBAAoB,IAAKP,GACxEtoB,KAAKqqB,GAAK9qB,EACVS,KAAKsqB,GAAK9qB,CACd,EACAmT,OAAOyX,oBAAoBxuB,UAAYQ,OAAOC,OAAOsW,OAAOyV,WAAWxsB,WACvE+W,OAAOyX,oBAAoBxuB,UAAUwI,SAAW,WAC5C,MAAO,8BACX,EACAuO,OAAOyX,oBAAoBxuB,UAAUsuB,cAAgB,WACjD,OAAOlqB,KAAKwoB,oBAAsB,IAAMxoB,KAAKqqB,GAAK,IAAMrqB,KAAKsqB,EACjE,EACA3X,OAAOyX,oBAAoBxuB,UAAUuuB,MAAQ,WACzC,OAAO,IAAIxX,OAAOyX,yBAAoBrnB,EAAW/C,KAAKqqB,GAAIrqB,KAAKsqB,GACnE,EACAluB,OAAOmuB,eAAe5X,OAAOyX,oBAAoBxuB,UAAW,IAAK,CAAE4uB,IAAK,WAChE,OAAOxqB,KAAKqqB,EAChB,EAAGI,IAAK,SAAalrB,GACjBS,KAAKqqB,GAAK9qB,EAAES,KAAK+pB,iBACrB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOyX,oBAAoBxuB,UAAW,IAAK,CAAE4uB,IAAK,WAChE,OAAOxqB,KAAKsqB,EAChB,EAAGG,IAAK,SAAajrB,GACjBQ,KAAKsqB,GAAK9qB,EAAEQ,KAAK+pB,iBACrB,EAAGxtB,YAAY,IAEnBoW,OAAO+X,oBAAsB,SAAUpC,EAAmB/oB,EAAGC,GACzDmT,OAAOyV,WAAWtrB,KAAKkD,KAAM2S,OAAOyV,WAAWU,mBAAoB,IAAKR,GACxEtoB,KAAKqqB,GAAK9qB,EACVS,KAAKsqB,GAAK9qB,CACd,EACAmT,OAAO+X,oBAAoB9uB,UAAYQ,OAAOC,OAAOsW,OAAOyV,WAAWxsB,WACvE+W,OAAO+X,oBAAoB9uB,UAAUwI,SAAW,WAC5C,MAAO,8BACX,EACAuO,OAAO+X,oBAAoB9uB,UAAUsuB,cAAgB,WACjD,OAAOlqB,KAAKwoB,oBAAsB,IAAMxoB,KAAKqqB,GAAK,IAAMrqB,KAAKsqB,EACjE,EACA3X,OAAO+X,oBAAoB9uB,UAAUuuB,MAAQ,WACzC,OAAO,IAAIxX,OAAO+X,yBAAoB3nB,EAAW/C,KAAKqqB,GAAIrqB,KAAKsqB,GACnE,EACAluB,OAAOmuB,eAAe5X,OAAO+X,oBAAoB9uB,UAAW,IAAK,CAAE4uB,IAAK,WAChE,OAAOxqB,KAAKqqB,EAChB,EAAGI,IAAK,SAAalrB,GACjBS,KAAKqqB,GAAK9qB,EAAES,KAAK+pB,iBACrB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAO+X,oBAAoB9uB,UAAW,IAAK,CAAE4uB,IAAK,WAChE,OAAOxqB,KAAKsqB,EAChB,EAAGG,IAAK,SAAajrB,GACjBQ,KAAKsqB,GAAK9qB,EAAEQ,KAAK+pB,iBACrB,EAAGxtB,YAAY,IAEnBoW,OAAOgY,oBAAsB,SAAUrC,EAAmB/oB,EAAGC,GACzDmT,OAAOyV,WAAWtrB,KAAKkD,KAAM2S,OAAOyV,WAAWW,mBAAoB,IAAKT,GACxEtoB,KAAKqqB,GAAK9qB,EACVS,KAAKsqB,GAAK9qB,CACd,EACAmT,OAAOgY,oBAAoB/uB,UAAYQ,OAAOC,OAAOsW,OAAOyV,WAAWxsB,WACvE+W,OAAOgY,oBAAoB/uB,UAAUwI,SAAW,WAC5C,MAAO,8BACX,EACAuO,OAAOgY,oBAAoB/uB,UAAUsuB,cAAgB,WACjD,OAAOlqB,KAAKwoB,oBAAsB,IAAMxoB,KAAKqqB,GAAK,IAAMrqB,KAAKsqB,EACjE,EACA3X,OAAOgY,oBAAoB/uB,UAAUuuB,MAAQ,WACzC,OAAO,IAAIxX,OAAOgY,yBAAoB5nB,EAAW/C,KAAKqqB,GAAIrqB,KAAKsqB,GACnE,EACAluB,OAAOmuB,eAAe5X,OAAOgY,oBAAoB/uB,UAAW,IAAK,CAAE4uB,IAAK,WAChE,OAAOxqB,KAAKqqB,EAChB,EAAGI,IAAK,SAAalrB,GACjBS,KAAKqqB,GAAK9qB,EAAES,KAAK+pB,iBACrB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOgY,oBAAoB/uB,UAAW,IAAK,CAAE4uB,IAAK,WAChE,OAAOxqB,KAAKsqB,EAChB,EAAGG,IAAK,SAAajrB,GACjBQ,KAAKsqB,GAAK9qB,EAAEQ,KAAK+pB,iBACrB,EAAGxtB,YAAY,IAEnBoW,OAAOiY,oBAAsB,SAAUtC,EAAmB/oB,EAAGC,GACzDmT,OAAOyV,WAAWtrB,KAAKkD,KAAM2S,OAAOyV,WAAWY,mBAAoB,IAAKV,GACxEtoB,KAAKqqB,GAAK9qB,EACVS,KAAKsqB,GAAK9qB,CACd,EACAmT,OAAOiY,oBAAoBhvB,UAAYQ,OAAOC,OAAOsW,OAAOyV,WAAWxsB,WACvE+W,OAAOiY,oBAAoBhvB,UAAUwI,SAAW,WAC5C,MAAO,8BACX,EACAuO,OAAOiY,oBAAoBhvB,UAAUsuB,cAAgB,WACjD,OAAOlqB,KAAKwoB,oBAAsB,IAAMxoB,KAAKqqB,GAAK,IAAMrqB,KAAKsqB,EACjE,EACA3X,OAAOiY,oBAAoBhvB,UAAUuuB,MAAQ,WACzC,OAAO,IAAIxX,OAAOiY,yBAAoB7nB,EAAW/C,KAAKqqB,GAAIrqB,KAAKsqB,GACnE,EACAluB,OAAOmuB,eAAe5X,OAAOiY,oBAAoBhvB,UAAW,IAAK,CAAE4uB,IAAK,WAChE,OAAOxqB,KAAKqqB,EAChB,EAAGI,IAAK,SAAalrB,GACjBS,KAAKqqB,GAAK9qB,EAAES,KAAK+pB,iBACrB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOiY,oBAAoBhvB,UAAW,IAAK,CAAE4uB,IAAK,WAChE,OAAOxqB,KAAKsqB,EAChB,EAAGG,IAAK,SAAajrB,GACjBQ,KAAKsqB,GAAK9qB,EAAEQ,KAAK+pB,iBACrB,EAAGxtB,YAAY,IAEnBoW,OAAOkY,0BAA4B,SAAUvC,EAAmB/oB,EAAGC,EAAG6b,EAAIE,EAAID,EAAIhS,GAC9EqJ,OAAOyV,WAAWtrB,KAAKkD,KAAM2S,OAAOyV,WAAWa,0BAA2B,IAAKX,GAC/EtoB,KAAKqqB,GAAK9qB,EACVS,KAAKsqB,GAAK9qB,EACVQ,KAAK8qB,IAAMzP,EACXrb,KAAK+qB,IAAMxP,EACXvb,KAAKgrB,IAAM1P,EACXtb,KAAKirB,IAAM3hB,CACf,EACAqJ,OAAOkY,0BAA0BjvB,UAAYQ,OAAOC,OAAOsW,OAAOyV,WAAWxsB,WAC7E+W,OAAOkY,0BAA0BjvB,UAAUwI,SAAW,WAClD,MAAO,oCACX,EACAuO,OAAOkY,0BAA0BjvB,UAAUsuB,cAAgB,WACvD,OAAOlqB,KAAKwoB,oBAAsB,IAAMxoB,KAAK8qB,IAAM,IAAM9qB,KAAK+qB,IAAM,IAAM/qB,KAAKgrB,IAAM,IAAMhrB,KAAKirB,IAAM,IAAMjrB,KAAKqqB,GAAK,IAAMrqB,KAAKsqB,EACrI,EACA3X,OAAOkY,0BAA0BjvB,UAAUuuB,MAAQ,WAC/C,OAAO,IAAIxX,OAAOkY,+BAA0B9nB,EAAW/C,KAAKqqB,GAAIrqB,KAAKsqB,GAAItqB,KAAK8qB,IAAK9qB,KAAK+qB,IAAK/qB,KAAKgrB,IAAKhrB,KAAKirB,IAChH,EACA7uB,OAAOmuB,eAAe5X,OAAOkY,0BAA0BjvB,UAAW,IAAK,CAAE4uB,IAAK,WACtE,OAAOxqB,KAAKqqB,EAChB,EAAGI,IAAK,SAAalrB,GACjBS,KAAKqqB,GAAK9qB,EAAES,KAAK+pB,iBACrB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOkY,0BAA0BjvB,UAAW,IAAK,CAAE4uB,IAAK,WACtE,OAAOxqB,KAAKsqB,EAChB,EAAGG,IAAK,SAAajrB,GACjBQ,KAAKsqB,GAAK9qB,EAAEQ,KAAK+pB,iBACrB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOkY,0BAA0BjvB,UAAW,KAAM,CAAE4uB,IAAK,WACvE,OAAOxqB,KAAK8qB,GAChB,EAAGL,IAAK,SAAapP,GACjBrb,KAAK8qB,IAAMzP,EAAGrb,KAAK+pB,iBACvB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOkY,0BAA0BjvB,UAAW,KAAM,CAAE4uB,IAAK,WACvE,OAAOxqB,KAAK+qB,GAChB,EAAGN,IAAK,SAAalP,GACjBvb,KAAK+qB,IAAMxP,EAAGvb,KAAK+pB,iBACvB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOkY,0BAA0BjvB,UAAW,KAAM,CAAE4uB,IAAK,WACvE,OAAOxqB,KAAKgrB,GAChB,EAAGP,IAAK,SAAanP,GACjBtb,KAAKgrB,IAAM1P,EAAGtb,KAAK+pB,iBACvB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOkY,0BAA0BjvB,UAAW,KAAM,CAAE4uB,IAAK,WACvE,OAAOxqB,KAAKirB,GAChB,EAAGR,IAAK,SAAanhB,GACjBtJ,KAAKirB,IAAM3hB,EAAGtJ,KAAK+pB,iBACvB,EAAGxtB,YAAY,IAEnBoW,OAAOuY,0BAA4B,SAAU5C,EAAmB/oB,EAAGC,EAAG6b,EAAIE,EAAID,EAAIhS,GAC9EqJ,OAAOyV,WAAWtrB,KAAKkD,KAAM2S,OAAOyV,WAAWc,0BAA2B,IAAKZ,GAC/EtoB,KAAKqqB,GAAK9qB,EACVS,KAAKsqB,GAAK9qB,EACVQ,KAAK8qB,IAAMzP,EACXrb,KAAK+qB,IAAMxP,EACXvb,KAAKgrB,IAAM1P,EACXtb,KAAKirB,IAAM3hB,CACf,EACAqJ,OAAOuY,0BAA0BtvB,UAAYQ,OAAOC,OAAOsW,OAAOyV,WAAWxsB,WAC7E+W,OAAOuY,0BAA0BtvB,UAAUwI,SAAW,WAClD,MAAO,oCACX,EACAuO,OAAOuY,0BAA0BtvB,UAAUsuB,cAAgB,WACvD,OAAOlqB,KAAKwoB,oBAAsB,IAAMxoB,KAAK8qB,IAAM,IAAM9qB,KAAK+qB,IAAM,IAAM/qB,KAAKgrB,IAAM,IAAMhrB,KAAKirB,IAAM,IAAMjrB,KAAKqqB,GAAK,IAAMrqB,KAAKsqB,EACrI,EACA3X,OAAOuY,0BAA0BtvB,UAAUuuB,MAAQ,WAC/C,OAAO,IAAIxX,OAAOuY,+BAA0BnoB,EAAW/C,KAAKqqB,GAAIrqB,KAAKsqB,GAAItqB,KAAK8qB,IAAK9qB,KAAK+qB,IAAK/qB,KAAKgrB,IAAKhrB,KAAKirB,IAChH,EACA7uB,OAAOmuB,eAAe5X,OAAOuY,0BAA0BtvB,UAAW,IAAK,CAAE4uB,IAAK,WACtE,OAAOxqB,KAAKqqB,EAChB,EAAGI,IAAK,SAAalrB,GACjBS,KAAKqqB,GAAK9qB,EAAES,KAAK+pB,iBACrB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOuY,0BAA0BtvB,UAAW,IAAK,CAAE4uB,IAAK,WACtE,OAAOxqB,KAAKsqB,EAChB,EAAGG,IAAK,SAAajrB,GACjBQ,KAAKsqB,GAAK9qB,EAAEQ,KAAK+pB,iBACrB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOuY,0BAA0BtvB,UAAW,KAAM,CAAE4uB,IAAK,WACvE,OAAOxqB,KAAK8qB,GAChB,EAAGL,IAAK,SAAapP,GACjBrb,KAAK8qB,IAAMzP,EAAGrb,KAAK+pB,iBACvB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOuY,0BAA0BtvB,UAAW,KAAM,CAAE4uB,IAAK,WACvE,OAAOxqB,KAAK+qB,GAChB,EAAGN,IAAK,SAAalP,GACjBvb,KAAK+qB,IAAMxP,EAAGvb,KAAK+pB,iBACvB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOuY,0BAA0BtvB,UAAW,KAAM,CAAE4uB,IAAK,WACvE,OAAOxqB,KAAKgrB,GAChB,EAAGP,IAAK,SAAanP,GACjBtb,KAAKgrB,IAAM1P,EAAGtb,KAAK+pB,iBACvB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOuY,0BAA0BtvB,UAAW,KAAM,CAAE4uB,IAAK,WACvE,OAAOxqB,KAAKirB,GAChB,EAAGR,IAAK,SAAanhB,GACjBtJ,KAAKirB,IAAM3hB,EAAGtJ,KAAK+pB,iBACvB,EAAGxtB,YAAY,IAEnBoW,OAAOwY,8BAAgC,SAAU7C,EAAmB/oB,EAAGC,EAAG6b,EAAIE,GAC1E5I,OAAOyV,WAAWtrB,KAAKkD,KAAM2S,OAAOyV,WAAWe,8BAA+B,IAAKb,GACnFtoB,KAAKqqB,GAAK9qB,EACVS,KAAKsqB,GAAK9qB,EACVQ,KAAK8qB,IAAMzP,EACXrb,KAAK+qB,IAAMxP,CACf,EACA5I,OAAOwY,8BAA8BvvB,UAAYQ,OAAOC,OAAOsW,OAAOyV,WAAWxsB,WACjF+W,OAAOwY,8BAA8BvvB,UAAUwI,SAAW,WACtD,MAAO,wCACX,EACAuO,OAAOwY,8BAA8BvvB,UAAUsuB,cAAgB,WAC3D,OAAOlqB,KAAKwoB,oBAAsB,IAAMxoB,KAAK8qB,IAAM,IAAM9qB,KAAK+qB,IAAM,IAAM/qB,KAAKqqB,GAAK,IAAMrqB,KAAKsqB,EACnG,EACA3X,OAAOwY,8BAA8BvvB,UAAUuuB,MAAQ,WACnD,OAAO,IAAIxX,OAAOwY,mCAA8BpoB,EAAW/C,KAAKqqB,GAAIrqB,KAAKsqB,GAAItqB,KAAK8qB,IAAK9qB,KAAK+qB,IAChG,EACA3uB,OAAOmuB,eAAe5X,OAAOwY,8BAA8BvvB,UAAW,IAAK,CAAE4uB,IAAK,WAC1E,OAAOxqB,KAAKqqB,EAChB,EAAGI,IAAK,SAAalrB,GACjBS,KAAKqqB,GAAK9qB,EAAES,KAAK+pB,iBACrB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOwY,8BAA8BvvB,UAAW,IAAK,CAAE4uB,IAAK,WAC1E,OAAOxqB,KAAKsqB,EAChB,EAAGG,IAAK,SAAajrB,GACjBQ,KAAKsqB,GAAK9qB,EAAEQ,KAAK+pB,iBACrB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOwY,8BAA8BvvB,UAAW,KAAM,CAAE4uB,IAAK,WAC3E,OAAOxqB,KAAK8qB,GAChB,EAAGL,IAAK,SAAapP,GACjBrb,KAAK8qB,IAAMzP,EAAGrb,KAAK+pB,iBACvB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOwY,8BAA8BvvB,UAAW,KAAM,CAAE4uB,IAAK,WAC3E,OAAOxqB,KAAK+qB,GAChB,EAAGN,IAAK,SAAalP,GACjBvb,KAAK+qB,IAAMxP,EAAGvb,KAAK+pB,iBACvB,EAAGxtB,YAAY,IAEnBoW,OAAOyY,8BAAgC,SAAU9C,EAAmB/oB,EAAGC,EAAG6b,EAAIE,GAC1E5I,OAAOyV,WAAWtrB,KAAKkD,KAAM2S,OAAOyV,WAAWgB,8BAA+B,IAAKd,GACnFtoB,KAAKqqB,GAAK9qB,EACVS,KAAKsqB,GAAK9qB,EACVQ,KAAK8qB,IAAMzP,EACXrb,KAAK+qB,IAAMxP,CACf,EACA5I,OAAOyY,8BAA8BxvB,UAAYQ,OAAOC,OAAOsW,OAAOyV,WAAWxsB,WACjF+W,OAAOyY,8BAA8BxvB,UAAUwI,SAAW,WACtD,MAAO,wCACX,EACAuO,OAAOyY,8BAA8BxvB,UAAUsuB,cAAgB,WAC3D,OAAOlqB,KAAKwoB,oBAAsB,IAAMxoB,KAAK8qB,IAAM,IAAM9qB,KAAK+qB,IAAM,IAAM/qB,KAAKqqB,GAAK,IAAMrqB,KAAKsqB,EACnG,EACA3X,OAAOyY,8BAA8BxvB,UAAUuuB,MAAQ,WACnD,OAAO,IAAIxX,OAAOyY,mCAA8BroB,EAAW/C,KAAKqqB,GAAIrqB,KAAKsqB,GAAItqB,KAAK8qB,IAAK9qB,KAAK+qB,IAChG,EACA3uB,OAAOmuB,eAAe5X,OAAOyY,8BAA8BxvB,UAAW,IAAK,CAAE4uB,IAAK,WAC1E,OAAOxqB,KAAKqqB,EAChB,EAAGI,IAAK,SAAalrB,GACjBS,KAAKqqB,GAAK9qB,EAAES,KAAK+pB,iBACrB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOyY,8BAA8BxvB,UAAW,IAAK,CAAE4uB,IAAK,WAC1E,OAAOxqB,KAAKsqB,EAChB,EAAGG,IAAK,SAAajrB,GACjBQ,KAAKsqB,GAAK9qB,EAAEQ,KAAK+pB,iBACrB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOyY,8BAA8BxvB,UAAW,KAAM,CAAE4uB,IAAK,WAC3E,OAAOxqB,KAAK8qB,GAChB,EAAGL,IAAK,SAAapP,GACjBrb,KAAK8qB,IAAMzP,EAAGrb,KAAK+pB,iBACvB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOyY,8BAA8BxvB,UAAW,KAAM,CAAE4uB,IAAK,WAC3E,OAAOxqB,KAAK+qB,GAChB,EAAGN,IAAK,SAAalP,GACjBvb,KAAK+qB,IAAMxP,EAAGvb,KAAK+pB,iBACvB,EAAGxtB,YAAY,IAEnBoW,OAAO0Y,iBAAmB,SAAU/C,EAAmB/oB,EAAGC,EAAG8rB,EAAIC,EAAIC,EAAOC,EAAcC,GACtF/Y,OAAOyV,WAAWtrB,KAAKkD,KAAM2S,OAAOyV,WAAWiB,gBAAiB,IAAKf,GACrEtoB,KAAKqqB,GAAK9qB,EACVS,KAAKsqB,GAAK9qB,EACVQ,KAAK2rB,IAAML,EACXtrB,KAAK4rB,IAAML,EACXvrB,KAAK6rB,OAASL,EACdxrB,KAAK8rB,cAAgBL,EACrBzrB,KAAK+rB,WAAaL,CACtB,EACA/Y,OAAO0Y,iBAAiBzvB,UAAYQ,OAAOC,OAAOsW,OAAOyV,WAAWxsB,WACpE+W,OAAO0Y,iBAAiBzvB,UAAUwI,SAAW,WACzC,MAAO,2BACX,EACAuO,OAAO0Y,iBAAiBzvB,UAAUsuB,cAAgB,WAC9C,OAAOlqB,KAAKwoB,oBAAsB,IAAMxoB,KAAK2rB,IAAM,IAAM3rB,KAAK4rB,IAAM,IAAM5rB,KAAK6rB,OAAS,KAAO7rB,KAAK8rB,cAAgB,IAAM,KAAO,KAAO9rB,KAAK+rB,WAAa,IAAM,KAAO,IAAM/rB,KAAKqqB,GAAK,IAAMrqB,KAAKsqB,EACtM,EACA3X,OAAO0Y,iBAAiBzvB,UAAUuuB,MAAQ,WACtC,OAAO,IAAIxX,OAAO0Y,sBAAiBtoB,EAAW/C,KAAKqqB,GAAIrqB,KAAKsqB,GAAItqB,KAAK2rB,IAAK3rB,KAAK4rB,IAAK5rB,KAAK6rB,OAAQ7rB,KAAK8rB,cAAe9rB,KAAK+rB,WAC9H,EACA3vB,OAAOmuB,eAAe5X,OAAO0Y,iBAAiBzvB,UAAW,IAAK,CAAE4uB,IAAK,WAC7D,OAAOxqB,KAAKqqB,EAChB,EAAGI,IAAK,SAAalrB,GACjBS,KAAKqqB,GAAK9qB,EAAES,KAAK+pB,iBACrB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAO0Y,iBAAiBzvB,UAAW,IAAK,CAAE4uB,IAAK,WAC7D,OAAOxqB,KAAKsqB,EAChB,EAAGG,IAAK,SAAajrB,GACjBQ,KAAKsqB,GAAK9qB,EAAEQ,KAAK+pB,iBACrB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAO0Y,iBAAiBzvB,UAAW,KAAM,CAAE4uB,IAAK,WAC9D,OAAOxqB,KAAK2rB,GAChB,EAAGlB,IAAK,SAAaa,GACjBtrB,KAAK2rB,IAAML,EAAGtrB,KAAK+pB,iBACvB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAO0Y,iBAAiBzvB,UAAW,KAAM,CAAE4uB,IAAK,WAC9D,OAAOxqB,KAAK4rB,GAChB,EAAGnB,IAAK,SAAac,GACjBvrB,KAAK4rB,IAAML,EAAGvrB,KAAK+pB,iBACvB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAO0Y,iBAAiBzvB,UAAW,QAAS,CAAE4uB,IAAK,WACjE,OAAOxqB,KAAK6rB,MAChB,EAAGpB,IAAK,SAAae,GACjBxrB,KAAK6rB,OAASL,EAAMxrB,KAAK+pB,iBAC7B,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAO0Y,iBAAiBzvB,UAAW,eAAgB,CAAE4uB,IAAK,WACxE,OAAOxqB,KAAK8rB,aAChB,EAAGrB,IAAK,SAAagB,GACjBzrB,KAAK8rB,cAAgBL,EAAazrB,KAAK+pB,iBAC3C,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAO0Y,iBAAiBzvB,UAAW,YAAa,CAAE4uB,IAAK,WACrE,OAAOxqB,KAAK+rB,UAChB,EAAGtB,IAAK,SAAaiB,GACjB1rB,KAAK+rB,WAAaL,EAAU1rB,KAAK+pB,iBACrC,EAAGxtB,YAAY,IAEnBoW,OAAOqZ,iBAAmB,SAAU1D,EAAmB/oB,EAAGC,EAAG8rB,EAAIC,EAAIC,EAAOC,EAAcC,GACtF/Y,OAAOyV,WAAWtrB,KAAKkD,KAAM2S,OAAOyV,WAAWkB,gBAAiB,IAAKhB,GACrEtoB,KAAKqqB,GAAK9qB,EACVS,KAAKsqB,GAAK9qB,EACVQ,KAAK2rB,IAAML,EACXtrB,KAAK4rB,IAAML,EACXvrB,KAAK6rB,OAASL,EACdxrB,KAAK8rB,cAAgBL,EACrBzrB,KAAK+rB,WAAaL,CACtB,EACA/Y,OAAOqZ,iBAAiBpwB,UAAYQ,OAAOC,OAAOsW,OAAOyV,WAAWxsB,WACpE+W,OAAOqZ,iBAAiBpwB,UAAUwI,SAAW,WACzC,MAAO,2BACX,EACAuO,OAAOqZ,iBAAiBpwB,UAAUsuB,cAAgB,WAC9C,OAAOlqB,KAAKwoB,oBAAsB,IAAMxoB,KAAK2rB,IAAM,IAAM3rB,KAAK4rB,IAAM,IAAM5rB,KAAK6rB,OAAS,KAAO7rB,KAAK8rB,cAAgB,IAAM,KAAO,KAAO9rB,KAAK+rB,WAAa,IAAM,KAAO,IAAM/rB,KAAKqqB,GAAK,IAAMrqB,KAAKsqB,EACtM,EACA3X,OAAOqZ,iBAAiBpwB,UAAUuuB,MAAQ,WACtC,OAAO,IAAIxX,OAAOqZ,sBAAiBjpB,EAAW/C,KAAKqqB,GAAIrqB,KAAKsqB,GAAItqB,KAAK2rB,IAAK3rB,KAAK4rB,IAAK5rB,KAAK6rB,OAAQ7rB,KAAK8rB,cAAe9rB,KAAK+rB,WAC9H,EACA3vB,OAAOmuB,eAAe5X,OAAOqZ,iBAAiBpwB,UAAW,IAAK,CAAE4uB,IAAK,WAC7D,OAAOxqB,KAAKqqB,EAChB,EAAGI,IAAK,SAAalrB,GACjBS,KAAKqqB,GAAK9qB,EAAES,KAAK+pB,iBACrB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOqZ,iBAAiBpwB,UAAW,IAAK,CAAE4uB,IAAK,WAC7D,OAAOxqB,KAAKsqB,EAChB,EAAGG,IAAK,SAAajrB,GACjBQ,KAAKsqB,GAAK9qB,EAAEQ,KAAK+pB,iBACrB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOqZ,iBAAiBpwB,UAAW,KAAM,CAAE4uB,IAAK,WAC9D,OAAOxqB,KAAK2rB,GAChB,EAAGlB,IAAK,SAAaa,GACjBtrB,KAAK2rB,IAAML,EAAGtrB,KAAK+pB,iBACvB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOqZ,iBAAiBpwB,UAAW,KAAM,CAAE4uB,IAAK,WAC9D,OAAOxqB,KAAK4rB,GAChB,EAAGnB,IAAK,SAAac,GACjBvrB,KAAK4rB,IAAML,EAAGvrB,KAAK+pB,iBACvB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOqZ,iBAAiBpwB,UAAW,QAAS,CAAE4uB,IAAK,WACjE,OAAOxqB,KAAK6rB,MAChB,EAAGpB,IAAK,SAAae,GACjBxrB,KAAK6rB,OAASL,EAAMxrB,KAAK+pB,iBAC7B,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOqZ,iBAAiBpwB,UAAW,eAAgB,CAAE4uB,IAAK,WACxE,OAAOxqB,KAAK8rB,aAChB,EAAGrB,IAAK,SAAagB,GACjBzrB,KAAK8rB,cAAgBL,EAAazrB,KAAK+pB,iBAC3C,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAOqZ,iBAAiBpwB,UAAW,YAAa,CAAE4uB,IAAK,WACrE,OAAOxqB,KAAK+rB,UAChB,EAAGtB,IAAK,SAAaiB,GACjB1rB,KAAK+rB,WAAaL,EAAU1rB,KAAK+pB,iBACrC,EAAGxtB,YAAY,IAEnBoW,OAAOsZ,8BAAgC,SAAU3D,EAAmB/oB,GAChEoT,OAAOyV,WAAWtrB,KAAKkD,KAAM2S,OAAOyV,WAAWmB,8BAA+B,IAAKjB,GACnFtoB,KAAKqqB,GAAK9qB,CACd,EACAoT,OAAOsZ,8BAA8BrwB,UAAYQ,OAAOC,OAAOsW,OAAOyV,WAAWxsB,WACjF+W,OAAOsZ,8BAA8BrwB,UAAUwI,SAAW,WACtD,MAAO,wCACX,EACAuO,OAAOsZ,8BAA8BrwB,UAAUsuB,cAAgB,WAC3D,OAAOlqB,KAAKwoB,oBAAsB,IAAMxoB,KAAKqqB,EACjD,EACA1X,OAAOsZ,8BAA8BrwB,UAAUuuB,MAAQ,WACnD,OAAO,IAAIxX,OAAOsZ,mCAA8BlpB,EAAW/C,KAAKqqB,GACpE,EACAjuB,OAAOmuB,eAAe5X,OAAOsZ,8BAA8BrwB,UAAW,IAAK,CAAE4uB,IAAK,WAC1E,OAAOxqB,KAAKqqB,EAChB,EAAGI,IAAK,SAAalrB,GACjBS,KAAKqqB,GAAK9qB,EAAES,KAAK+pB,iBACrB,EAAGxtB,YAAY,IAEnBoW,OAAOuZ,8BAAgC,SAAU5D,EAAmB/oB,GAChEoT,OAAOyV,WAAWtrB,KAAKkD,KAAM2S,OAAOyV,WAAWoB,8BAA+B,IAAKlB,GACnFtoB,KAAKqqB,GAAK9qB,CACd,EACAoT,OAAOuZ,8BAA8BtwB,UAAYQ,OAAOC,OAAOsW,OAAOyV,WAAWxsB,WACjF+W,OAAOuZ,8BAA8BtwB,UAAUwI,SAAW,WACtD,MAAO,wCACX,EACAuO,OAAOuZ,8BAA8BtwB,UAAUsuB,cAAgB,WAC3D,OAAOlqB,KAAKwoB,oBAAsB,IAAMxoB,KAAKqqB,EACjD,EACA1X,OAAOuZ,8BAA8BtwB,UAAUuuB,MAAQ,WACnD,OAAO,IAAIxX,OAAOuZ,mCAA8BnpB,EAAW/C,KAAKqqB,GACpE,EACAjuB,OAAOmuB,eAAe5X,OAAOuZ,8BAA8BtwB,UAAW,IAAK,CAAE4uB,IAAK,WAC1E,OAAOxqB,KAAKqqB,EAChB,EAAGI,IAAK,SAAalrB,GACjBS,KAAKqqB,GAAK9qB,EAAES,KAAK+pB,iBACrB,EAAGxtB,YAAY,IAEnBoW,OAAOwZ,4BAA8B,SAAU7D,EAAmB9oB,GAC9DmT,OAAOyV,WAAWtrB,KAAKkD,KAAM2S,OAAOyV,WAAWqB,4BAA6B,IAAKnB,GACjFtoB,KAAKsqB,GAAK9qB,CACd,EACAmT,OAAOwZ,4BAA4BvwB,UAAYQ,OAAOC,OAAOsW,OAAOyV,WAAWxsB,WAC/E+W,OAAOwZ,4BAA4BvwB,UAAUwI,SAAW,WACpD,MAAO,sCACX,EACAuO,OAAOwZ,4BAA4BvwB,UAAUsuB,cAAgB,WACzD,OAAOlqB,KAAKwoB,oBAAsB,IAAMxoB,KAAKsqB,EACjD,EACA3X,OAAOwZ,4BAA4BvwB,UAAUuuB,MAAQ,WACjD,OAAO,IAAIxX,OAAOwZ,iCAA4BppB,EAAW/C,KAAKsqB,GAClE,EACAluB,OAAOmuB,eAAe5X,OAAOwZ,4BAA4BvwB,UAAW,IAAK,CAAE4uB,IAAK,WACxE,OAAOxqB,KAAKsqB,EAChB,EAAGG,IAAK,SAAajrB,GACjBQ,KAAKsqB,GAAK9qB,EAAEQ,KAAK+pB,iBACrB,EAAGxtB,YAAY,IAEnBoW,OAAOyZ,4BAA8B,SAAU9D,EAAmB9oB,GAC9DmT,OAAOyV,WAAWtrB,KAAKkD,KAAM2S,OAAOyV,WAAWsB,4BAA6B,IAAKpB,GACjFtoB,KAAKsqB,GAAK9qB,CACd,EACAmT,OAAOyZ,4BAA4BxwB,UAAYQ,OAAOC,OAAOsW,OAAOyV,WAAWxsB,WAC/E+W,OAAOyZ,4BAA4BxwB,UAAUwI,SAAW,WACpD,MAAO,sCACX,EACAuO,OAAOyZ,4BAA4BxwB,UAAUsuB,cAAgB,WACzD,OAAOlqB,KAAKwoB,oBAAsB,IAAMxoB,KAAKsqB,EACjD,EACA3X,OAAOyZ,4BAA4BxwB,UAAUuuB,MAAQ,WACjD,OAAO,IAAIxX,OAAOyZ,iCAA4BrpB,EAAW/C,KAAKsqB,GAClE,EACAluB,OAAOmuB,eAAe5X,OAAOyZ,4BAA4BxwB,UAAW,IAAK,CAAE4uB,IAAK,WACxE,OAAOxqB,KAAKsqB,EAChB,EAAGG,IAAK,SAAajrB,GACjBQ,KAAKsqB,GAAK9qB,EAAEQ,KAAK+pB,iBACrB,EAAGxtB,YAAY,IAEnBoW,OAAO0Z,gCAAkC,SAAU/D,EAAmB/oB,EAAGC,EAAG8b,EAAIhS,GAC5EqJ,OAAOyV,WAAWtrB,KAAKkD,KAAM2S,OAAOyV,WAAWuB,iCAAkC,IAAKrB,GACtFtoB,KAAKqqB,GAAK9qB,EACVS,KAAKsqB,GAAK9qB,EACVQ,KAAKgrB,IAAM1P,EACXtb,KAAKirB,IAAM3hB,CACf,EACAqJ,OAAO0Z,gCAAgCzwB,UAAYQ,OAAOC,OAAOsW,OAAOyV,WAAWxsB,WACnF+W,OAAO0Z,gCAAgCzwB,UAAUwI,SAAW,WACxD,MAAO,0CACX,EACAuO,OAAO0Z,gCAAgCzwB,UAAUsuB,cAAgB,WAC7D,OAAOlqB,KAAKwoB,oBAAsB,IAAMxoB,KAAKgrB,IAAM,IAAMhrB,KAAKirB,IAAM,IAAMjrB,KAAKqqB,GAAK,IAAMrqB,KAAKsqB,EACnG,EACA3X,OAAO0Z,gCAAgCzwB,UAAUuuB,MAAQ,WACrD,OAAO,IAAIxX,OAAO0Z,qCAAgCtpB,EAAW/C,KAAKqqB,GAAIrqB,KAAKsqB,GAAItqB,KAAKgrB,IAAKhrB,KAAKirB,IAClG,EACA7uB,OAAOmuB,eAAe5X,OAAO0Z,gCAAgCzwB,UAAW,IAAK,CAAE4uB,IAAK,WAC5E,OAAOxqB,KAAKqqB,EAChB,EAAGI,IAAK,SAAalrB,GACjBS,KAAKqqB,GAAK9qB,EAAES,KAAK+pB,iBACrB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAO0Z,gCAAgCzwB,UAAW,IAAK,CAAE4uB,IAAK,WAC5E,OAAOxqB,KAAKsqB,EAChB,EAAGG,IAAK,SAAajrB,GACjBQ,KAAKsqB,GAAK9qB,EAAEQ,KAAK+pB,iBACrB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAO0Z,gCAAgCzwB,UAAW,KAAM,CAAE4uB,IAAK,WAC7E,OAAOxqB,KAAKgrB,GAChB,EAAGP,IAAK,SAAanP,GACjBtb,KAAKgrB,IAAM1P,EAAGtb,KAAK+pB,iBACvB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAO0Z,gCAAgCzwB,UAAW,KAAM,CAAE4uB,IAAK,WAC7E,OAAOxqB,KAAKirB,GAChB,EAAGR,IAAK,SAAanhB,GACjBtJ,KAAKirB,IAAM3hB,EAAGtJ,KAAK+pB,iBACvB,EAAGxtB,YAAY,IAEnBoW,OAAO2Z,gCAAkC,SAAUhE,EAAmB/oB,EAAGC,EAAG8b,EAAIhS,GAC5EqJ,OAAOyV,WAAWtrB,KAAKkD,KAAM2S,OAAOyV,WAAWwB,iCAAkC,IAAKtB,GACtFtoB,KAAKqqB,GAAK9qB,EACVS,KAAKsqB,GAAK9qB,EACVQ,KAAKgrB,IAAM1P,EACXtb,KAAKirB,IAAM3hB,CACf,EACAqJ,OAAO2Z,gCAAgC1wB,UAAYQ,OAAOC,OAAOsW,OAAOyV,WAAWxsB,WACnF+W,OAAO2Z,gCAAgC1wB,UAAUwI,SAAW,WACxD,MAAO,0CACX,EACAuO,OAAO2Z,gCAAgC1wB,UAAUsuB,cAAgB,WAC7D,OAAOlqB,KAAKwoB,oBAAsB,IAAMxoB,KAAKgrB,IAAM,IAAMhrB,KAAKirB,IAAM,IAAMjrB,KAAKqqB,GAAK,IAAMrqB,KAAKsqB,EACnG,EACA3X,OAAO2Z,gCAAgC1wB,UAAUuuB,MAAQ,WACrD,OAAO,IAAIxX,OAAO2Z,qCAAgCvpB,EAAW/C,KAAKqqB,GAAIrqB,KAAKsqB,GAAItqB,KAAKgrB,IAAKhrB,KAAKirB,IAClG,EACA7uB,OAAOmuB,eAAe5X,OAAO2Z,gCAAgC1wB,UAAW,IAAK,CAAE4uB,IAAK,WAC5E,OAAOxqB,KAAKqqB,EAChB,EAAGI,IAAK,SAAalrB,GACjBS,KAAKqqB,GAAK9qB,EAAES,KAAK+pB,iBACrB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAO2Z,gCAAgC1wB,UAAW,IAAK,CAAE4uB,IAAK,WAC5E,OAAOxqB,KAAKsqB,EAChB,EAAGG,IAAK,SAAajrB,GACjBQ,KAAKsqB,GAAK9qB,EAAEQ,KAAK+pB,iBACrB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAO2Z,gCAAgC1wB,UAAW,KAAM,CAAE4uB,IAAK,WAC7E,OAAOxqB,KAAKgrB,GAChB,EAAGP,IAAK,SAAanP,GACjBtb,KAAKgrB,IAAM1P,EAAGtb,KAAK+pB,iBACvB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAO2Z,gCAAgC1wB,UAAW,KAAM,CAAE4uB,IAAK,WAC7E,OAAOxqB,KAAKirB,GAChB,EAAGR,IAAK,SAAanhB,GACjBtJ,KAAKirB,IAAM3hB,EAAGtJ,KAAK+pB,iBACvB,EAAGxtB,YAAY,IAEnBoW,OAAO4Z,oCAAsC,SAAUjE,EAAmB/oB,EAAGC,GACzEmT,OAAOyV,WAAWtrB,KAAKkD,KAAM2S,OAAOyV,WAAWyB,qCAAsC,IAAKvB,GAC1FtoB,KAAKqqB,GAAK9qB,EACVS,KAAKsqB,GAAK9qB,CACd,EACAmT,OAAO4Z,oCAAoC3wB,UAAYQ,OAAOC,OAAOsW,OAAOyV,WAAWxsB,WACvF+W,OAAO4Z,oCAAoC3wB,UAAUwI,SAAW,WAC5D,MAAO,8CACX,EACAuO,OAAO4Z,oCAAoC3wB,UAAUsuB,cAAgB,WACjE,OAAOlqB,KAAKwoB,oBAAsB,IAAMxoB,KAAKqqB,GAAK,IAAMrqB,KAAKsqB,EACjE,EACA3X,OAAO4Z,oCAAoC3wB,UAAUuuB,MAAQ,WACzD,OAAO,IAAIxX,OAAO4Z,yCAAoCxpB,EAAW/C,KAAKqqB,GAAIrqB,KAAKsqB,GACnF,EACAluB,OAAOmuB,eAAe5X,OAAO4Z,oCAAoC3wB,UAAW,IAAK,CAAE4uB,IAAK,WAChF,OAAOxqB,KAAKqqB,EAChB,EAAGI,IAAK,SAAalrB,GACjBS,KAAKqqB,GAAK9qB,EAAES,KAAK+pB,iBACrB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAO4Z,oCAAoC3wB,UAAW,IAAK,CAAE4uB,IAAK,WAChF,OAAOxqB,KAAKsqB,EAChB,EAAGG,IAAK,SAAajrB,GACjBQ,KAAKsqB,GAAK9qB,EAAEQ,KAAK+pB,iBACrB,EAAGxtB,YAAY,IAEnBoW,OAAO6Z,oCAAsC,SAAUlE,EAAmB/oB,EAAGC,GACzEmT,OAAOyV,WAAWtrB,KAAKkD,KAAM2S,OAAOyV,WAAW0B,qCAAsC,IAAKxB,GAC1FtoB,KAAKqqB,GAAK9qB,EACVS,KAAKsqB,GAAK9qB,CACd,EACAmT,OAAO6Z,oCAAoC5wB,UAAYQ,OAAOC,OAAOsW,OAAOyV,WAAWxsB,WACvF+W,OAAO6Z,oCAAoC5wB,UAAUwI,SAAW,WAC5D,MAAO,8CACX,EACAuO,OAAO6Z,oCAAoC5wB,UAAUsuB,cAAgB,WACjE,OAAOlqB,KAAKwoB,oBAAsB,IAAMxoB,KAAKqqB,GAAK,IAAMrqB,KAAKsqB,EACjE,EACA3X,OAAO6Z,oCAAoC5wB,UAAUuuB,MAAQ,WACzD,OAAO,IAAIxX,OAAO6Z,yCAAoCzpB,EAAW/C,KAAKqqB,GAAIrqB,KAAKsqB,GACnF,EACAluB,OAAOmuB,eAAe5X,OAAO6Z,oCAAoC5wB,UAAW,IAAK,CAAE4uB,IAAK,WAChF,OAAOxqB,KAAKqqB,EAChB,EAAGI,IAAK,SAAalrB,GACjBS,KAAKqqB,GAAK9qB,EAAES,KAAK+pB,iBACrB,EAAGxtB,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAO6Z,oCAAoC5wB,UAAW,IAAK,CAAE4uB,IAAK,WAChF,OAAOxqB,KAAKsqB,EAChB,EAAGG,IAAK,SAAajrB,GACjBQ,KAAKsqB,GAAK9qB,EAAEQ,KAAK+pB,iBACrB,EAAGxtB,YAAY,IAInBoW,OAAO8Z,eAAe7wB,UAAU8wB,0BAA4B,WACxD,OAAO,IAAI/Z,OAAOsX,yBAAoBlnB,EAC1C,EACA4P,OAAO8Z,eAAe7wB,UAAU+wB,0BAA4B,SAAUptB,EAAGC,GACrE,OAAO,IAAImT,OAAOyX,yBAAoBrnB,EAAWxD,EAAGC,EACxD,EACAmT,OAAO8Z,eAAe7wB,UAAUgxB,0BAA4B,SAAUrtB,EAAGC,GACrE,OAAO,IAAImT,OAAO+X,yBAAoB3nB,EAAWxD,EAAGC,EACxD,EACAmT,OAAO8Z,eAAe7wB,UAAUixB,0BAA4B,SAAUttB,EAAGC,GACrE,OAAO,IAAImT,OAAOgY,yBAAoB5nB,EAAWxD,EAAGC,EACxD,EACAmT,OAAO8Z,eAAe7wB,UAAUkxB,0BAA4B,SAAUvtB,EAAGC,GACrE,OAAO,IAAImT,OAAOiY,yBAAoB7nB,EAAWxD,EAAGC,EACxD,EACAmT,OAAO8Z,eAAe7wB,UAAUmxB,gCAAkC,SAAUxtB,EAAGC,EAAG6b,EAAIE,EAAID,EAAIhS,GAC1F,OAAO,IAAIqJ,OAAOkY,+BAA0B9nB,EAAWxD,EAAGC,EAAG6b,EAAIE,EAAID,EAAIhS,EAC7E,EACAqJ,OAAO8Z,eAAe7wB,UAAUoxB,gCAAkC,SAAUztB,EAAGC,EAAG6b,EAAIE,EAAID,EAAIhS,GAC1F,OAAO,IAAIqJ,OAAOuY,+BAA0BnoB,EAAWxD,EAAGC,EAAG6b,EAAIE,EAAID,EAAIhS,EAC7E,EACAqJ,OAAO8Z,eAAe7wB,UAAUqxB,oCAAsC,SAAU1tB,EAAGC,EAAG6b,EAAIE,GACtF,OAAO,IAAI5I,OAAOwY,mCAA8BpoB,EAAWxD,EAAGC,EAAG6b,EAAIE,EACzE,EACA5I,OAAO8Z,eAAe7wB,UAAUsxB,oCAAsC,SAAU3tB,EAAGC,EAAG6b,EAAIE,GACtF,OAAO,IAAI5I,OAAOyY,mCAA8BroB,EAAWxD,EAAGC,EAAG6b,EAAIE,EACzE,EACA5I,OAAO8Z,eAAe7wB,UAAUuxB,uBAAyB,SAAU5tB,EAAGC,EAAG8rB,EAAIC,EAAIC,EAAOC,EAAcC,GAClG,OAAO,IAAI/Y,OAAO0Y,sBAAiBtoB,EAAWxD,EAAGC,EAAG8rB,EAAIC,EAAIC,EAAOC,EAAcC,EACrF,EACA/Y,OAAO8Z,eAAe7wB,UAAUwxB,uBAAyB,SAAU7tB,EAAGC,EAAG8rB,EAAIC,EAAIC,EAAOC,EAAcC,GAClG,OAAO,IAAI/Y,OAAOqZ,sBAAiBjpB,EAAWxD,EAAGC,EAAG8rB,EAAIC,EAAIC,EAAOC,EAAcC,EACrF,EACA/Y,OAAO8Z,eAAe7wB,UAAUyxB,oCAAsC,SAAU9tB,GAC5E,OAAO,IAAIoT,OAAOsZ,mCAA8BlpB,EAAWxD,EAC/D,EACAoT,OAAO8Z,eAAe7wB,UAAU0xB,oCAAsC,SAAU/tB,GAC5E,OAAO,IAAIoT,OAAOuZ,mCAA8BnpB,EAAWxD,EAC/D,EACAoT,OAAO8Z,eAAe7wB,UAAU2xB,kCAAoC,SAAU/tB,GAC1E,OAAO,IAAImT,OAAOwZ,iCAA4BppB,EAAWvD,EAC7D,EACAmT,OAAO8Z,eAAe7wB,UAAU4xB,kCAAoC,SAAUhuB,GAC1E,OAAO,IAAImT,OAAOyZ,iCAA4BrpB,EAAWvD,EAC7D,EACAmT,OAAO8Z,eAAe7wB,UAAU6xB,sCAAwC,SAAUluB,EAAGC,EAAG8b,EAAIhS,GACxF,OAAO,IAAIqJ,OAAO0Z,qCAAgCtpB,EAAWxD,EAAGC,EAAG8b,EAAIhS,EAC3E,EACAqJ,OAAO8Z,eAAe7wB,UAAU8xB,sCAAwC,SAAUnuB,EAAGC,EAAG8b,EAAIhS,GACxF,OAAO,IAAIqJ,OAAO2Z,qCAAgCvpB,EAAWxD,EAAGC,EAAG8b,EAAIhS,EAC3E,EACAqJ,OAAO8Z,eAAe7wB,UAAU+xB,0CAA4C,SAAUpuB,EAAGC,GACrF,OAAO,IAAImT,OAAO4Z,yCAAoCxpB,EAAWxD,EAAGC,EACxE,EACAmT,OAAO8Z,eAAe7wB,UAAUgyB,0CAA4C,SAAUruB,EAAGC,GACrF,OAAO,IAAImT,OAAO6Z,yCAAoCzpB,EAAWxD,EAAGC,EACxE,EAEM,uBAAwBmT,OAAO8Z,eAAe7wB,YAIhD+W,OAAO8Z,eAAe7wB,UAAUiyB,mBAAqB,SAAUC,GAC3D,QAAiB/qB,IAAb+qB,IAA2BC,SAASD,GAAW,KAAM,qBAEzD,IAAIE,EAAqBpW,SAASqW,gBAAgB,6BAA8B,QAChFD,EAAmBE,aAAa,IAAKluB,KAAKmuB,aAAa,MACvD,IAAIC,EAAkBJ,EAAmB3uB,YAAYgvB,cAAgB,EAGrE,GAAID,GAAmB,EAAG,OAAO,EAEjC,EAAG,CAEC,GADAJ,EAAmB3uB,YAAYivB,WAAWF,GACtCN,EAAWE,EAAmBpmB,iBAAkB,MACpDwmB,GACJ,OAASA,EAAkB,GAC3B,OAAOA,CACX,IAIF,mBAAoBzb,SAEtBA,OAAO4b,eAAiB,SAAUC,GAC9BxuB,KAAKyuB,aAAeD,EACpBxuB,KAAK0uB,MAAQ1uB,KAAK2uB,WAAW3uB,KAAKyuB,aAAaN,aAAa,MAG5DnuB,KAAK4uB,wBAA0B,CAAE,YAAc,EAAM,gBAAmB,CAAC,MACzE5uB,KAAK6uB,6BAA+B,IAAI5J,iBAAiBjlB,KAAK8uB,6BAA6B7lB,KAAKjJ,OAChGA,KAAK6uB,6BAA6BnJ,QAAQ1lB,KAAKyuB,aAAczuB,KAAK4uB,wBACtE,EAEAjc,OAAO4b,eAAe3yB,UAAU8sB,UAAY,iBAE5CtsB,OAAOmuB,eAAe5X,OAAO4b,eAAe3yB,UAAW,gBAAiB,CACpE4uB,IAAK,WAED,OADAxqB,KAAK+uB,+BACE/uB,KAAK0uB,MAAMzwB,MACtB,EACA1B,YAAY,IAKhBH,OAAOmuB,eAAe5X,OAAO8Z,eAAe7wB,UAAW,cAAe,CAClE4uB,IAAK,WAED,OADKxqB,KAAKgvB,eAAchvB,KAAKgvB,aAAe,IAAIrc,OAAO4b,eAAevuB,OAC/DA,KAAKgvB,YAChB,EACAzyB,YAAY,IAGhBH,OAAOmuB,eAAe5X,OAAO8Z,eAAe7wB,UAAW,wBAAyB,CAAE4uB,IAAK,WAC/E,OAAOxqB,KAAKX,WAChB,EAAG9C,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAO8Z,eAAe7wB,UAAW,sBAAuB,CAAE4uB,IAAK,WAC7E,OAAOxqB,KAAKX,WAChB,EAAG9C,YAAY,IACnBH,OAAOmuB,eAAe5X,OAAO8Z,eAAe7wB,UAAW,gCAAiC,CAAE4uB,IAAK,WACvF,OAAOxqB,KAAKX,WAChB,EAAG9C,YAAY,IAKnBoW,OAAO4b,eAAe3yB,UAAUmzB,6BAA+B,WAC3D/uB,KAAK8uB,6BAA6B9uB,KAAK6uB,6BAA6BI,cACxE,EAEAtc,OAAO4b,eAAe3yB,UAAUkzB,6BAA+B,SAAUI,GACrE,GAAKlvB,KAAKyuB,aAAV,CACA,IAAIU,GAAmB,EACvBD,EAAgBtwB,SAAQ,SAAUwwB,GACF,KAAxBA,EAAOC,gBAAsBF,GAAmB,EACxD,IACIA,IAAkBnvB,KAAK0uB,MAAQ1uB,KAAK2uB,WAAW3uB,KAAKyuB,aAAaN,aAAa,MALpD,CAMlC,EAGAxb,OAAO4b,eAAe3yB,UAAU0zB,iBAAmB,WAC/CtvB,KAAK6uB,6BAA6BxJ,aAClCrlB,KAAKyuB,aAAaP,aAAa,IAAKvb,OAAO4b,eAAegB,sBAAsBvvB,KAAK0uB,QACrF1uB,KAAK6uB,6BAA6BnJ,QAAQ1lB,KAAKyuB,aAAczuB,KAAK4uB,wBACtE,EAGAjc,OAAO4b,eAAe3yB,UAAUouB,eAAiB,SAAUwF,GACvDxvB,KAAKsvB,kBACT,EAEA3c,OAAO4b,eAAe3yB,UAAU6zB,MAAQ,WACpCzvB,KAAK+uB,+BAEL/uB,KAAK0uB,MAAM9vB,SAAQ,SAAU4wB,GACzBA,EAAQ/G,mBAAqB,IACjC,IACAzoB,KAAK0uB,MAAQ,GACb1uB,KAAKsvB,kBACT,EAEA3c,OAAO4b,eAAe3yB,UAAU8zB,WAAa,SAAUC,GAMnD,OALA3vB,KAAK+uB,+BAEL/uB,KAAK0uB,MAAQ,CAACiB,GACdA,EAAQlH,mBAAqBzoB,KAC7BA,KAAKsvB,mBACEK,CACX,EAEAhd,OAAO4b,eAAe3yB,UAAUg0B,iBAAmB,SAAU/rB,GACzD,GAAI4jB,MAAM5jB,IAAUA,EAAQ,GAAKA,GAAS7D,KAAKquB,cAAe,KAAM,gBACxE,EAEA1b,OAAO4b,eAAe3yB,UAAU0D,QAAU,SAAUuE,GAIhD,OAHA7D,KAAK+uB,+BAEL/uB,KAAK4vB,iBAAiB/rB,GACf7D,KAAK0uB,MAAM7qB,EACtB,EAEA8O,OAAO4b,eAAe3yB,UAAUi0B,iBAAmB,SAAUF,EAAS9rB,GAYlE,OAXA7D,KAAK+uB,+BAGDlrB,EAAQ7D,KAAKquB,gBAAexqB,EAAQ7D,KAAKquB,eACzCsB,EAAQlH,qBAERkH,EAAUA,EAAQxF,SAEtBnqB,KAAK0uB,MAAMzH,OAAOpjB,EAAO,EAAG8rB,GAC5BA,EAAQlH,mBAAqBzoB,KAC7BA,KAAKsvB,mBACEK,CACX,EAEAhd,OAAO4b,eAAe3yB,UAAUk0B,YAAc,SAAUH,EAAS9rB,GAW7D,OAVA7D,KAAK+uB,+BAEDY,EAAQlH,qBAERkH,EAAUA,EAAQxF,SAEtBnqB,KAAK4vB,iBAAiB/rB,GACtB7D,KAAK0uB,MAAM7qB,GAAS8rB,EACpBA,EAAQlH,mBAAqBzoB,KAC7BA,KAAKsvB,mBACEK,CACX,EAEAhd,OAAO4b,eAAe3yB,UAAU0yB,WAAa,SAAUzqB,GACnD7D,KAAK+uB,+BAEL/uB,KAAK4vB,iBAAiB/rB,GACtB,IAAIksB,EAAO/vB,KAAK0uB,MAAM7qB,GAGtB,OAFA7D,KAAK0uB,MAAMzH,OAAOpjB,EAAO,GACzB7D,KAAKsvB,mBACES,CACX,EAEApd,OAAO4b,eAAe3yB,UAAUo0B,WAAa,SAAUL,GAWnD,OAVA3vB,KAAK+uB,+BAEDY,EAAQlH,qBAERkH,EAAUA,EAAQxF,SAEtBnqB,KAAK0uB,MAAM5sB,KAAK6tB,GAChBA,EAAQlH,mBAAqBzoB,KAE7BA,KAAKsvB,mBACEK,CACX,EAEAhd,OAAO4b,eAAegB,sBAAwB,SAAUU,GACpD,IAAIC,EAAS,GACTC,GAAQ,EASZ,OARAF,EAAarxB,SAAQ,SAAU4wB,GACvBW,GACAA,GAAQ,EACRD,GAAUV,EAAQtF,iBAElBgG,GAAU,IAAMV,EAAQtF,eAEhC,IACOgG,CACX,EAGAvd,OAAO4b,eAAe3yB,UAAU+yB,WAAa,SAAUuB,GACnD,IAAKA,GAA2B,GAAjBA,EAAOjyB,OAAa,MAAO,GAE1C,IAAIqqB,EAAoBtoB,KAEpBowB,EAAU,WACVpwB,KAAKX,YAAc,EACvB,EAEA+wB,EAAQx0B,UAAUy0B,cAAgB,SAAUb,GACxCxvB,KAAKX,YAAYyC,KAAK0tB,EAC1B,EAEA,IAAIc,EAAS,SAAgBJ,GACzBlwB,KAAKuwB,QAAUL,EACflwB,KAAKwwB,cAAgB,EACrBxwB,KAAKywB,UAAYzwB,KAAKuwB,QAAQtyB,OAC9B+B,KAAK0wB,iBAAmB/d,OAAOyV,WAAWO,gBAE1C3oB,KAAK2wB,qBACT,EAEAL,EAAO10B,UAAUg1B,gBAAkB,WAC/B,IAAIC,EAAY7wB,KAAKuwB,QAAQvwB,KAAKwwB,eAClC,OAAOK,GAAa,MAAqB,KAAbA,GAAiC,MAAbA,GAAkC,MAAbA,GAAkC,MAAbA,GAAkC,MAAbA,EACnH,EAEAP,EAAO10B,UAAU+0B,oBAAsB,WACnC,KAAO3wB,KAAKwwB,cAAgBxwB,KAAKywB,WAAazwB,KAAK4wB,mBAC/C5wB,KAAKwwB,gBACR,OAAOxwB,KAAKwwB,cAAgBxwB,KAAKywB,SACtC,EAEAH,EAAO10B,UAAUk1B,+BAAiC,WAC9C,QAAI9wB,KAAKwwB,cAAgBxwB,KAAKywB,YAAczwB,KAAK4wB,mBAAgE,KAA3C5wB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,kBAC3FxwB,KAAK2wB,uBACD3wB,KAAKwwB,cAAgBxwB,KAAKywB,WAAwD,KAA3CzwB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,iBAChExwB,KAAKwwB,gBACLxwB,KAAK2wB,uBAGN3wB,KAAKwwB,cAAgBxwB,KAAKywB,UACrC,EAEAH,EAAO10B,UAAUm1B,YAAc,WAC3B,OAAO/wB,KAAKwwB,cAAgBxwB,KAAKywB,SACrC,EAEAH,EAAO10B,UAAUo1B,gBAAkB,WAC/B,IAAIC,EAAYjxB,KAAKuwB,QAAQvwB,KAAKwwB,eAClC,OAAOxwB,KAAKkxB,qBAAqBD,EACrC,EAEAX,EAAO10B,UAAUs1B,qBAAuB,SAAUD,GAC9C,OAAQA,GACJ,IAAK,IACL,IAAK,IACD,OAAOte,OAAOyV,WAAWQ,kBAC7B,IAAK,IACD,OAAOjW,OAAOyV,WAAWS,mBAC7B,IAAK,IACD,OAAOlW,OAAOyV,WAAWU,mBAC7B,IAAK,IACD,OAAOnW,OAAOyV,WAAWW,mBAC7B,IAAK,IACD,OAAOpW,OAAOyV,WAAWY,mBAC7B,IAAK,IACD,OAAOrW,OAAOyV,WAAWa,0BAC7B,IAAK,IACD,OAAOtW,OAAOyV,WAAWc,0BAC7B,IAAK,IACD,OAAOvW,OAAOyV,WAAWe,8BAC7B,IAAK,IACD,OAAOxW,OAAOyV,WAAWgB,8BAC7B,IAAK,IACD,OAAOzW,OAAOyV,WAAWiB,gBAC7B,IAAK,IACD,OAAO1W,OAAOyV,WAAWkB,gBAC7B,IAAK,IACD,OAAO3W,OAAOyV,WAAWmB,8BAC7B,IAAK,IACD,OAAO5W,OAAOyV,WAAWoB,8BAC7B,IAAK,IACD,OAAO7W,OAAOyV,WAAWqB,4BAC7B,IAAK,IACD,OAAO9W,OAAOyV,WAAWsB,4BAC7B,IAAK,IACD,OAAO/W,OAAOyV,WAAWuB,iCAC7B,IAAK,IACD,OAAOhX,OAAOyV,WAAWwB,iCAC7B,IAAK,IACD,OAAOjX,OAAOyV,WAAWyB,qCAC7B,IAAK,IACD,OAAOlX,OAAOyV,WAAW0B,qCAC7B,QACI,OAAOnX,OAAOyV,WAAWO,gBAErC,EAEA2H,EAAO10B,UAAUu1B,mBAAqB,SAAUF,EAAWG,GAEvD,OAAkB,KAAbH,GAAiC,KAAbA,GAAiC,KAAbA,GAAoBA,GAAa,KAAOA,GAAa,MAAQG,GAAmBze,OAAOyV,WAAWQ,kBACvIwI,GAAmBze,OAAOyV,WAAWS,mBAA2BlW,OAAOyV,WAAWW,mBAClFqI,GAAmBze,OAAOyV,WAAWU,mBAA2BnW,OAAOyV,WAAWY,mBAC/EoI,EAEJze,OAAOyV,WAAWO,eAC7B,EAEA2H,EAAO10B,UAAUy1B,uBAAyB,WAEtC,IAAKrxB,KAAK+wB,cAAe,OAAO,EAChC,IAAIO,EAAUtxB,KAAKgxB,kBAEnB,OAAOM,GAAW3e,OAAOyV,WAAWS,oBAAsByI,GAAW3e,OAAOyV,WAAWU,kBAC3F,EAIAwH,EAAO10B,UAAU21B,aAAe,WAC5B,IAAIC,EAAW,EACXC,EAAU,EACVC,EAAO,EACPC,EAAU,EACVC,EAAO,EACPC,EAAU,EAEVC,EAAa9xB,KAAKwwB,cAUtB,GARAxwB,KAAK2wB,sBAGD3wB,KAAKwwB,cAAgBxwB,KAAKywB,WAAwD,KAA3CzwB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,eAAuBxwB,KAAKwwB,gBAAyBxwB,KAAKwwB,cAAgBxwB,KAAKywB,WAAwD,KAA3CzwB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,iBACrLxwB,KAAKwwB,gBACLoB,GAAQ,KAGR5xB,KAAKwwB,eAAiBxwB,KAAKywB,YAAczwB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,eAAiB,KAAOxwB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,eAAiB,MAAmD,KAA3CxwB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,gBAAzK,CAMA,IADA,IAAIuB,EAAoB/xB,KAAKwwB,cACtBxwB,KAAKwwB,cAAgBxwB,KAAKywB,WAAazwB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,gBAAkB,KAAOxwB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,gBAAkB,KACvIxwB,KAAKwwB,gBAGT,GAAIxwB,KAAKwwB,eAAiBuB,EAGtB,IAFA,IAAIC,EAAmBhyB,KAAKwwB,cAAgB,EACxCyB,EAAa,EACVD,GAAoBD,GACvBN,GAAWQ,GAAcjyB,KAAKuwB,QAAQjsB,OAAO0tB,KAAsB,KACnEC,GAAc,GAKtB,GAAIjyB,KAAKwwB,cAAgBxwB,KAAKywB,WAAwD,KAA3CzwB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,eAAuB,CAIvF,GAHAxwB,KAAKwwB,gBAGDxwB,KAAKwwB,eAAiBxwB,KAAKywB,WAAazwB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,eAAiB,KAAOxwB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,eAAiB,IAAK,OAC5I,KAAOxwB,KAAKwwB,cAAgBxwB,KAAKywB,WAAazwB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,gBAAkB,KAAOxwB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,gBAAkB,KACvIkB,GAAQ,GACRC,IAAY3xB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,eAAiB,KAAOkB,EAC7D1xB,KAAKwwB,eAAiB,CAE9B,CAGA,GAAIxwB,KAAKwwB,eAAiBsB,GAAc9xB,KAAKwwB,cAAgB,EAAIxwB,KAAKywB,YAAyD,KAA3CzwB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,gBAAoE,KAA3CxwB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,iBAAyE,KAA/CxwB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,cAAgB,IAA4D,KAA/CxwB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,cAAgB,GAAW,CAY/R,GAXAxwB,KAAKwwB,gBAG0C,KAA3CxwB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,eACzBxwB,KAAKwwB,gBAC6C,KAA3CxwB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,iBAChCxwB,KAAKwwB,gBACLqB,GAAW,GAIX7xB,KAAKwwB,eAAiBxwB,KAAKywB,WAAazwB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,eAAiB,KAAOxwB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,eAAiB,IAAK,OAE5I,KAAOxwB,KAAKwwB,cAAgBxwB,KAAKywB,WAAazwB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,gBAAkB,KAAOxwB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,gBAAkB,KACvIgB,GAAY,GACZA,GAAYxxB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,eAAiB,IACtDxwB,KAAKwwB,eAEb,CAEA,IAAI0B,EAAST,EAAUE,EAKvB,GAJAO,GAAUN,EAENJ,IAAUU,GAAUx0B,KAAKy0B,IAAI,GAAIN,EAAUL,IAE3CM,GAAc9xB,KAAKwwB,cAIvB,OAFAxwB,KAAK8wB,iCAEEoB,CA7Da,CA8DxB,EAEA5B,EAAO10B,UAAUw2B,cAAgB,WAC7B,KAAIpyB,KAAKwwB,eAAiBxwB,KAAKywB,WAA/B,CACA,IAAI4B,GAAO,EACPC,EAAWtyB,KAAKuwB,QAAQjsB,OAAOtE,KAAKwwB,iBACxC,GAAgB,KAAZ8B,EAAiBD,GAAO,MAAW,IAAgB,KAAZC,EAAkC,OAAjBD,GAAO,CAA0B,CAG7F,OADAryB,KAAK8wB,iCACEuB,CANmD,CAO9D,EAEA/B,EAAO10B,UAAU22B,aAAe,WAC5B,IAAItB,EAAYjxB,KAAKuwB,QAAQvwB,KAAKwwB,eAC9Bc,EAAUtxB,KAAKkxB,qBAAqBD,GACxC,GAAIK,GAAW3e,OAAOyV,WAAWO,gBAAiB,CAE9C,GAAI3oB,KAAK0wB,kBAAoB/d,OAAOyV,WAAWO,gBAAiB,OAAO,KAEvE,IADA2I,EAAUtxB,KAAKmxB,mBAAmBF,EAAWjxB,KAAK0wB,oBACnC/d,OAAOyV,WAAWO,gBAAiB,OAAO,IAC7D,MACI3oB,KAAKwwB,gBAKT,OAFAxwB,KAAK0wB,iBAAmBY,EAEhBA,GACJ,KAAK3e,OAAOyV,WAAWU,mBACnB,OAAO,IAAInW,OAAO+X,oBAAoBpC,EAAmBtoB,KAAKuxB,eAAgBvxB,KAAKuxB,gBACvF,KAAK5e,OAAOyV,WAAWS,mBACnB,OAAO,IAAIlW,OAAOyX,oBAAoB9B,EAAmBtoB,KAAKuxB,eAAgBvxB,KAAKuxB,gBACvF,KAAK5e,OAAOyV,WAAWY,mBACnB,OAAO,IAAIrW,OAAOiY,oBAAoBtC,EAAmBtoB,KAAKuxB,eAAgBvxB,KAAKuxB,gBACvF,KAAK5e,OAAOyV,WAAWW,mBACnB,OAAO,IAAIpW,OAAOgY,oBAAoBrC,EAAmBtoB,KAAKuxB,eAAgBvxB,KAAKuxB,gBACvF,KAAK5e,OAAOyV,WAAWoB,8BACnB,OAAO,IAAI7W,OAAOuZ,8BAA8B5D,EAAmBtoB,KAAKuxB,gBAC5E,KAAK5e,OAAOyV,WAAWmB,8BACnB,OAAO,IAAI5W,OAAOsZ,8BAA8B3D,EAAmBtoB,KAAKuxB,gBAC5E,KAAK5e,OAAOyV,WAAWsB,4BACnB,OAAO,IAAI/W,OAAOyZ,4BAA4B9D,EAAmBtoB,KAAKuxB,gBAC1E,KAAK5e,OAAOyV,WAAWqB,4BACnB,OAAO,IAAI9W,OAAOwZ,4BAA4B7D,EAAmBtoB,KAAKuxB,gBAC1E,KAAK5e,OAAOyV,WAAWQ,kBAEnB,OADA5oB,KAAK2wB,sBACE,IAAIhe,OAAOsX,oBAAoB3B,GAC1C,KAAK3V,OAAOyV,WAAWc,0BACnB,IAAIsJ,EAAS,CAAEnX,GAAIrb,KAAKuxB,eAAgBhW,GAAIvb,KAAKuxB,eAAgBjW,GAAItb,KAAKuxB,eAAgBjoB,GAAItJ,KAAKuxB,eAAgBhyB,EAAGS,KAAKuxB,eAAgB/xB,EAAGQ,KAAKuxB,gBACnJ,OAAO,IAAI5e,OAAOuY,0BAA0B5C,EAAmBkK,EAAOjzB,EAAGizB,EAAOhzB,EAAGgzB,EAAOnX,GAAImX,EAAOjX,GAAIiX,EAAOlX,GAAIkX,EAAOlpB,IAC/H,KAAKqJ,OAAOyV,WAAWa,0BAEnB,OADIuJ,EAAS,CAAEnX,GAAIrb,KAAKuxB,eAAgBhW,GAAIvb,KAAKuxB,eAAgBjW,GAAItb,KAAKuxB,eAAgBjoB,GAAItJ,KAAKuxB,eAAgBhyB,EAAGS,KAAKuxB,eAAgB/xB,EAAGQ,KAAKuxB,gBAC5I,IAAI5e,OAAOkY,0BAA0BvC,EAAmBkK,EAAOjzB,EAAGizB,EAAOhzB,EAAGgzB,EAAOnX,GAAImX,EAAOjX,GAAIiX,EAAOlX,GAAIkX,EAAOlpB,IAC/H,KAAKqJ,OAAOyV,WAAWwB,iCAEnB,OADI4I,EAAS,CAAElX,GAAItb,KAAKuxB,eAAgBjoB,GAAItJ,KAAKuxB,eAAgBhyB,EAAGS,KAAKuxB,eAAgB/xB,EAAGQ,KAAKuxB,gBAC1F,IAAI5e,OAAO2Z,gCAAgChE,EAAmBkK,EAAOjzB,EAAGizB,EAAOhzB,EAAGgzB,EAAOlX,GAAIkX,EAAOlpB,IAC/G,KAAKqJ,OAAOyV,WAAWuB,iCAEnB,OADI6I,EAAS,CAAElX,GAAItb,KAAKuxB,eAAgBjoB,GAAItJ,KAAKuxB,eAAgBhyB,EAAGS,KAAKuxB,eAAgB/xB,EAAGQ,KAAKuxB,gBAC1F,IAAI5e,OAAO0Z,gCAAgC/D,EAAmBkK,EAAOjzB,EAAGizB,EAAOhzB,EAAGgzB,EAAOlX,GAAIkX,EAAOlpB,IAC/G,KAAKqJ,OAAOyV,WAAWgB,8BAEnB,OADIoJ,EAAS,CAAEnX,GAAIrb,KAAKuxB,eAAgBhW,GAAIvb,KAAKuxB,eAAgBhyB,EAAGS,KAAKuxB,eAAgB/xB,EAAGQ,KAAKuxB,gBAC1F,IAAI5e,OAAOyY,8BAA8B9C,EAAmBkK,EAAOjzB,EAAGizB,EAAOhzB,EAAGgzB,EAAOnX,GAAImX,EAAOjX,IAC7G,KAAK5I,OAAOyV,WAAWe,8BAEnB,OADIqJ,EAAS,CAAEnX,GAAIrb,KAAKuxB,eAAgBhW,GAAIvb,KAAKuxB,eAAgBhyB,EAAGS,KAAKuxB,eAAgB/xB,EAAGQ,KAAKuxB,gBAC1F,IAAI5e,OAAOwY,8BAA8B7C,EAAmBkK,EAAOjzB,EAAGizB,EAAOhzB,EAAGgzB,EAAOnX,GAAImX,EAAOjX,IAC7G,KAAK5I,OAAOyV,WAAW0B,qCACnB,OAAO,IAAInX,OAAO6Z,oCAAoClE,EAAmBtoB,KAAKuxB,eAAgBvxB,KAAKuxB,gBACvG,KAAK5e,OAAOyV,WAAWyB,qCACnB,OAAO,IAAIlX,OAAO4Z,oCAAoCjE,EAAmBtoB,KAAKuxB,eAAgBvxB,KAAKuxB,gBACvG,KAAK5e,OAAOyV,WAAWkB,gBAEnB,OADIkJ,EAAS,CAAEnX,GAAIrb,KAAKuxB,eAAgBhW,GAAIvb,KAAKuxB,eAAgBkB,SAAUzyB,KAAKuxB,eAAgBmB,SAAU1yB,KAAKoyB,gBAAiBO,SAAU3yB,KAAKoyB,gBAAiB7yB,EAAGS,KAAKuxB,eAAgB/xB,EAAGQ,KAAKuxB,gBACzL,IAAI5e,OAAOqZ,iBAAiB1D,EAAmBkK,EAAOjzB,EAAGizB,EAAOhzB,EAAGgzB,EAAOnX,GAAImX,EAAOjX,GAAIiX,EAAOC,SAAUD,EAAOE,SAAUF,EAAOG,UAC7I,KAAKhgB,OAAOyV,WAAWiB,gBAEnB,OADImJ,EAAS,CAAEnX,GAAIrb,KAAKuxB,eAAgBhW,GAAIvb,KAAKuxB,eAAgBkB,SAAUzyB,KAAKuxB,eAAgBmB,SAAU1yB,KAAKoyB,gBAAiBO,SAAU3yB,KAAKoyB,gBAAiB7yB,EAAGS,KAAKuxB,eAAgB/xB,EAAGQ,KAAKuxB,gBACzL,IAAI5e,OAAO0Y,iBAAiB/C,EAAmBkK,EAAOjzB,EAAGizB,EAAOhzB,EAAGgzB,EAAOnX,GAAImX,EAAOjX,GAAIiX,EAAOC,SAAUD,EAAOE,SAAUF,EAAOG,UAC7I,QACI,KAAM,yBAElB,EAEA,IAAIC,EAAU,IAAIxC,EACdyC,EAAS,IAAIvC,EAAOJ,GAExB,IAAK2C,EAAOxB,yBAA0B,MAAO,GAC7C,KAAOwB,EAAO9B,eAAe,CACzB,IAAIvB,EAAUqD,EAAON,eACrB,IAAK/C,EAAS,MAAO,GACrBoD,EAAQvC,cAAcb,EAC1B,CAEA,OAAOoD,EAAQvzB,WACnB,GAQHyzB,OAAOl3B,UAAUiJ,SAClBiuB,OAAOl3B,UAAUiJ,OAAS,SAAgBkuB,EAAcC,GAGpD,OAFAD,GAA+B,EAC/BC,EAAYF,YAA4B,IAAdE,EAA4BA,EAAY,KAC9DhzB,KAAK/B,OAAS80B,EACPD,OAAO9yB,QAEd+yB,GAA8B/yB,KAAK/B,QAChB+0B,EAAU/0B,SACzB+0B,GAAaA,EAAUC,OAAOF,EAAeC,EAAU/0B,SAEpD60B,OAAO9yB,MAAQgzB,EAAUxuB,MAAM,EAAGuuB,GAEjD,GAKJhhB,EAAYzX,KAAO,WAAa,EAChCyX,EAAYzX,KAAK44B,OAAS,SAAUA,GAChC,IAAI3qB,EAAKvI,KAAKD,SACVmH,UAAUjJ,SACV7B,OAAO8B,KAAKg1B,GAAQt0B,SAAQ,SAAU4N,GAClCjE,EAAGjO,KAAKwS,aAAaN,EAAQ0mB,EAAO1mB,GACxC,IACAjE,EAAGjO,KAAK8V,eAGhB,EACA2B,EAAYzX,KAAKmK,IAAM,SAAUA,GAC7B,IAAI8D,EAAKvI,KAAKD,SACVyI,EAASD,EAAGC,OAChB,IAAItB,UAAUjJ,OAgBV,MAAO,CACHsB,EAAGiJ,EAAO2qB,WACV3zB,EAAGgJ,EAAO4qB,WACV9pB,GAAId,EAAO6qB,aAlBmD,iBAA9C,IAAR5uB,EAAsB,YAAclJ,EAAQkJ,KAChDzH,EAAQyH,EAAIlF,KACZiJ,EAAO2qB,WAAa1uB,EAAIlF,GAExBvC,EAAQyH,EAAIjF,KACZgJ,EAAO4qB,WAAa3uB,EAAIjF,GAExBxC,EAAQyH,EAAI6E,MACZd,EAAO6qB,YAAc5uB,EAAI6E,KAG7Bd,EAAO4qB,WAAa5qB,EAAO6qB,YAAc5uB,EAE7C8D,EAAGqJ,OAAO,CAAEkJ,sBAAsB,EAAMD,mBAAmB,GAQnE,EACA9I,EAAYzX,KAAKmF,IAAM,SAAUA,GAC7B,IAAI8I,EAAKvI,KAAKD,SACVyI,EAASD,EAAGC,OAChB,IAAItB,UAAUjJ,OAgBV,MAAO,CACHsB,EAAGiJ,EAAO8qB,WACV9zB,EAAGgJ,EAAO+qB,WACVjqB,GAAId,EAAOgrB,aAlBmD,iBAA9C,IAAR/zB,EAAsB,YAAclE,EAAQkE,KAChDzC,EAAQyC,EAAIF,KACZiJ,EAAO8qB,WAAa7zB,EAAIF,GAExBvC,EAAQyC,EAAID,KACZgJ,EAAO+qB,WAAa9zB,EAAID,GAExBxC,EAAQyC,EAAI6J,MACZd,EAAOgrB,YAAc/zB,EAAI6J,KAG7Bd,EAAO+qB,WAAa/qB,EAAOgrB,YAAc/zB,EAE7C8I,EAAGqJ,OAAO,CAAEkJ,sBAAsB,EAAMD,mBAAmB,GAQnE,EACA9I,EAAYzX,KAAK8F,MAAQ,SAAUA,GAC/B,IAAI8G,UAAUjJ,OAQV,MAAO,CACHwG,IAAKzE,KAAK1F,KAAKmK,MACfhF,IAAKO,KAAK1F,KAAKmF,OATfjC,EAAU4C,EAAMqE,MAChBzE,KAAK1F,KAAKmK,IAAIrE,EAAMqE,KAEpBjH,EAAU4C,EAAMX,MAChBO,KAAK1F,KAAKmF,IAAIW,EAAMX,IAQhC,EAEAsS,EAAY0hB,SAAW,SAAU9xB,EAAG8xB,GAChC,IAAIlrB,EAAKvI,KAAKD,SACVyI,EAASD,EAAGC,OAKhB,OAJItB,UAAUjJ,OAAS,IACnBuK,EAAOwb,kBAAkBriB,GAAK8xB,EAC9BlrB,EAAGqJ,UAEApJ,EAAOwb,kBAAkBriB,EACpC,EACAoQ,EAAY2hB,WAAa,SAAUA,GAC/B,IAAInrB,EAAKvI,KAAKD,SACVyI,EAASD,EAAGC,OAChB,OAAKtB,UAAUjJ,QAGfuK,EAAOwb,kBAAoB0P,EAC3BnrB,EAAGqJ,SACIpJ,EAAOwb,mBAJHxb,EAAOwb,iBAKtB,EAEAjS,EAAY4hB,OAAS,SAAUjxB,GAC3B,IACI8F,EADKxI,KAAKD,SACEyI,OAChBA,EAAOorB,WAAalxB,EAAOA,EAAKhD,MAAQ,KACxC8I,EAAOqrB,YAAcnxB,EAAOA,EAAK/C,OAAS,KAC1CK,KAAKumB,OACT,EAEAxU,EAAYwU,MAAQ,WACPvmB,KAAKD,SACXgjB,gBAAgB,CAAExE,YAAY,EAAMlO,gBAAgB,EAAO2S,4BAA4B,GAC9F,EAEAjR,EAAY+hB,QAAU,WAClB,IAAIvrB,EAAKvI,KAAKD,SAQd,GANA4S,OAAO6S,cAAcjd,EAAGuO,iCAEC/T,IAArBwF,EAAG6d,eACHzT,OAAO0T,aAAa9d,EAAG6d,eAGvBzT,OAAOohB,YACPphB,OAAOohB,YAAY,WAAYxrB,EAAGke,+BAC/B,GAAI9T,OAAOqhB,oBACdrhB,OAAOqhB,oBAAoB,SAAUzrB,EAAGke,8BACrC,CACH,IAAII,EAAUlU,OAAOuT,SAEjBW,GAAWA,EAAQhE,KAAOgE,EAAQpgB,QAClCogB,EAAQpgB,OAAO8B,EAAGyd,eAE1B,CAYA,OATAzd,EAAGyd,eAAevf,SAElB8B,EAAGoP,YAAYxH,QAAQ,MAAM,GAAO4H,KAAK,IAGzC3b,OAAO8B,KAAKqK,GAAI3J,SAAQ,SAAUL,GAC9BgK,EAAGhK,GAAO,IACd,IAEO,IACX,EAGAwT,EAAY6C,MAAQ,SAAUvJ,GAE1B,OADSrL,KAAKD,SACJ6U,MAAMvJ,EACpB,EAEA0G,EAAY7L,KAAO,SAAU+tB,GACzB,IAAI1pB,EAAUvK,KAAKD,SAASmG,KAAKqE,QACjC,YAA4B,IAAd0pB,EAA4B1pB,EAAUA,EAAQ4N,QAAO,SAAUyK,GACzE,MAAO,GAAGpf,OAAOywB,GAAW9mB,QAAQyV,EAAEvX,KAAO,CACjD,GACJ,EACA0G,EAAY7L,KAAKguB,MAAQ,SAAUD,GAC/B,OAAOj0B,KAAKD,SAASwP,oBAAoBvP,KAAKkG,KAAK+tB,GACvD,EACAliB,EAAY7L,KAAK2K,OAAS,SAAUsjB,GAChC,IAAI5pB,EACAsG,EAAS,KAOb,OANIsjB,IAEAtjB,GADAtG,EAAUvK,KAAKkG,KAAKiuB,IACH,GAAK5pB,EAAQ,GAAGsG,OAAOlN,KAAI,SAAU5F,GAClD,OAAOA,EAAEzB,KACb,IAAK,MAEFuU,CACX,EACAkB,EAAY7L,KAAKkuB,MAAQ,SAAUA,GAE/B,OADAp0B,KAAKD,SAASs0B,8BACPr0B,KAAKD,SAASu0B,qBAAqB,QAASF,EACvD,EACAriB,EAAY7L,KAAKquB,OAAS,SAAUA,GAChC,OAAOv0B,KAAKD,SAASu0B,qBAAqB,SAAUC,EACxD,EACAxiB,EAAY7L,KAAKwC,KAAO,SAAUA,GAC9B,OAAO1I,KAAKD,SAASu0B,qBAAqB,OAAQ5rB,EACtD,EAEAqJ,EAAYoN,KAAO,SAAUqV,GACzB,IACIjqB,EACArE,EAIA3E,EACAkzB,EACAC,EAGAC,EACAC,EAZArsB,EAAKvI,KAAKD,SAGV80B,EAAc,GACdC,EAAevsB,EAAGwsB,kBAKlB92B,EAAS,EACT+2B,EAAO,EAIX,GAAIR,EAAKS,KACL/uB,EAAOqC,EAAGgL,kBAAkBihB,EAAKS,KAAMT,EAAKt2B,WACzC,GAAIs2B,EAAKU,KACZhvB,EAAOqC,EAAGkL,kBAAkB+gB,EAAKU,UAC9B,KAAIV,EAAKW,QAGZ,OAFAjvB,EAAOqC,EAAGqL,qBAAqB4gB,EAAKW,QAGxC,CACA5qB,EAAUhC,EAAG0P,qBAAqB/R,GAAM,GAGxCqC,EAAGrC,KAAKqE,QAAQ3L,SAAQ,SAAUgkB,GAC9B,IACIjhB,EACAyzB,EAFAz2B,GAAQ,EAGZ,IAAKgD,EAAI,EAAGA,EAAI4I,EAAQtM,OAAQ0D,IAC5B,GAAIihB,EAAEvX,KAAOd,EAAQ5I,GAAG0J,GAAI,CAQxB,IAPA1M,GAAQ,EAEJikB,EAAE/R,OAAO+R,EAAE/R,OAAO5S,OAAS,KAC3B+2B,EAAOpS,EAAE/R,OAAO+R,EAAE/R,OAAO5S,OAAS,GAAG4F,MAAQ,GAEjD5F,EAASsM,EAAQ5I,GAAGkP,OAAO5S,OAEtBm3B,EAAI,EAAGA,EAAIn3B,EAAQm3B,IACpB7qB,EAAQ5I,GAAGkP,OAAOukB,GAAGvxB,MAAQmxB,EAAOI,EAC/B7sB,EAAG2B,iBACJK,EAAQ5I,GAAGkP,OAAOukB,GAAG71B,EAAIy1B,EAAOI,GAGxCxS,EAAE/R,OAAS+R,EAAE/R,OAAOrN,OAAO+G,EAAQ5I,GAAGkP,QAEtCtG,EAAQ0c,OAAOtlB,EAAG,GAClB,KACJ,CAEChD,GACDk2B,EAAY/yB,KAAK8gB,EAAEvX,GAE3B,IAGA9C,EAAGrC,KAAKqE,QAAQ3L,SAAQ,SAAUgkB,GAC9B,IAAIjhB,EAAGyzB,EACP,IAAKzzB,EAAI,EAAGA,EAAIkzB,EAAY52B,OAAQ0D,IAChC,GAAIihB,EAAEvX,KAAOwpB,EAAYlzB,GAErB,IADAqzB,EAAOpS,EAAE/R,OAAO+R,EAAE/R,OAAO5S,OAAS,GAAG4F,MAAQ,EACxCuxB,EAAI,EAAGA,EAAIn3B,EAAQm3B,IACpBxS,EAAE/R,OAAO/O,KAAK,CACVuJ,GAAIuX,EAAEvX,GACNxH,MAAOmxB,EAAOI,EACd71B,EAAGgJ,EAAG2B,eAAiB3B,EAAG8sB,gBAAgBL,EAAOI,GAAKJ,EAAOI,EAC7D94B,MAAO,MAK3B,IAGIiM,EAAGrC,KAAKqE,QAAQtM,QAChBsM,EAAQ3L,SAAQ,SAAUgkB,GACtB,IAAIjhB,EACA2zB,EAAU,GACd,IAAK3zB,EAAI4G,EAAGrC,KAAKqE,QAAQ,GAAGsG,OAAO,GAAGhN,MAAOlC,EAAIqzB,EAAMrzB,IACnD2zB,EAAQxzB,KAAK,CACTuJ,GAAIuX,EAAEvX,GACNxH,MAAOlC,EACPpC,EAAGgJ,EAAG2B,eAAiB3B,EAAG8sB,gBAAgB1zB,GAAKA,EAC/CrF,MAAO,OAGfsmB,EAAE/R,OAAOjS,SAAQ,SAAU3B,GACvBA,EAAE4G,OAASmxB,EACNzsB,EAAG2B,iBACJjN,EAAEsC,GAAKy1B,EAEf,IACApS,EAAE/R,OAASykB,EAAQ9xB,OAAOof,EAAE/R,OAChC,IAEJtI,EAAGrC,KAAKqE,QAAUhC,EAAGrC,KAAKqE,QAAQ/G,OAAO+G,GAG7BhC,EAAGwsB,kBAEfL,GADAD,EAAalsB,EAAGrC,KAAKqE,QAAQ,IACNsG,OAAO,GAG1BrT,EAAUg3B,EAAKI,KACf32B,EAAS,EACT22B,EAAKrsB,EAAG2B,eAAiB3B,EAAG4B,UAAUqqB,EAAKI,IAAMJ,EAAKI,GACtDH,EAAW5jB,OAAOjS,SAAQ,SAAU3B,GAC5BA,EAAEsC,EAAIq1B,GACN32B,GAER,KACOT,EAAUg3B,EAAKv2B,UACtBA,EAASu2B,EAAKv2B,QAIb62B,EAYuB,IAAjBA,GACHvsB,EAAG2B,iBACHyqB,GAAQF,EAAW5jB,OAAO4jB,EAAW5jB,OAAO5S,OAAS,GAAGsB,EAAIm1B,EAAUn1B,GAAK,EAC3EgC,EAAS,CAAC,IAAI6P,MAAMsjB,EAAUn1B,EAAIo1B,GAAO,IAAIvjB,MAAMsjB,EAAUn1B,EAAIo1B,IACjEpsB,EAAG4X,cAAc,MAAM,GAAM,GAAM,EAAO5e,KAbtCozB,EAFJpsB,EAAG2B,eACCuqB,EAAW5jB,OAAO5S,OAAS,EACpBw2B,EAAW5jB,OAAO4jB,EAAW5jB,OAAO5S,OAAS,GAAGsB,EAAIm1B,EAAUn1B,EAE9Dm1B,EAAUn1B,EAAIgJ,EAAGwH,WAAWxH,EAAGrC,KAAKqE,SAAS,GAGjD,EAEXhJ,EAAS,CAACmzB,EAAUn1B,EAAIo1B,EAAMD,EAAUn1B,GACxCgJ,EAAG4X,cAAc,MAAM,GAAM,GAAM,EAAO5e,IAU9CgH,EAAGkS,cAAclS,EAAGrC,KAAKqE,SAGzBhC,EAAGqJ,OAAO,CACNuN,KAAM,CACFtb,MAAO6wB,EAAU7wB,MACjB5F,OAAQA,EACRwT,SAAUzU,EAAQw3B,EAAK/iB,UAAY+iB,EAAK/iB,SAAWlJ,EAAGC,OAAO0V,oBAC7DmJ,KAAMmN,EAAKnN,KACXyN,aAAcA,GAElBvW,YAAY,EACZlO,eAAgBykB,EAAe,EAC/BxW,iBAAiB,EACjBI,iBAAiB,GAEzB,EAEAtgB,EAAqB6jB,aAAe,SAAUuS,GAC1C,IAAIjsB,EAAKvI,KACLwI,EAASD,EAAGC,OACZvI,EAAKsI,EAAGtI,GAEZ,OAAO,WACH,IAYIs1B,EAEAC,EAMAj0B,EApBAgJ,EAAUiqB,EAAKjqB,QACf4U,EAAOqV,EAAKrV,KACZP,EAAU4V,EAAK5V,QACfC,EAAW2V,EAAK3V,SAChBF,EAAW6V,EAAK7V,SAChBW,EAAKkV,EAAKlV,GACVC,EAAKiV,EAAKjV,GACVS,EAAKwU,EAAKxU,GACVlB,EAAW0V,EAAK1V,SAChBC,EAAWyV,EAAKzV,SAChBtN,EAAW+iB,EAAK/iB,SAGhBgkB,EAAS,EAETC,EAAYvW,EAAKtb,MACjB8xB,EAAaxW,EAAKlhB,OAClB23B,EAAYrtB,EAAGstB,gBAAgBttB,EAAGrC,KAAKqE,QAAQ,GAAGsG,OAAQ6kB,GAC1DI,EAAUvtB,EAAGstB,gBAAgBttB,EAAGrC,KAAKqE,QAAQ,GAAGsG,OAAQ6kB,EAAYC,GACpEtV,EAAY9X,EAAGhJ,EAAEgC,SAEjBw0B,EAAkB5W,EAAK1N,UAAYA,EACnC4V,EAAOlI,EAAKkI,MAAQ,WAAa,EACjC2O,EAAOztB,EAAGoa,eAEV9oB,EAAQ0O,EAAG1O,OAASoG,EAAGgG,UAAU,IACjCjM,EAAauO,EAAGvO,YAAciG,EAAGgG,UAAU,IAC3CgwB,EAAa1tB,EAAG0tB,YAAch2B,EAAGgG,UAAU,IAC3CiwB,EAAW3tB,EAAG2tB,UAAYj2B,EAAGgG,UAAU,IACvCkwB,EAAU5tB,EAAG4tB,SAAWl2B,EAAGgG,UAAU,IACrCmwB,EAAW7tB,EAAG6tB,UAAYn2B,EAAGgG,UAAU,IACvCowB,EAAW9tB,EAAG8tB,UAAYp2B,EAAGgG,UAAU,IACvCqwB,EAAa/tB,EAAG+tB,YAAcr2B,EAAGgG,UAAU,IAG/CsC,EAAGiM,SAAU,EAGbjM,EAAGrC,KAAKqE,QAAQ3L,SAAQ,SAAUb,GAC9BA,EAAE8S,OAAOoW,OAAO,EAAG0O,EACvB,IAGAp0B,EAASgH,EAAG4X,cAAc5V,GAAS,GAAM,GAErChC,EAAGguB,aACHhuB,EAAGguB,aAAY,GAIdpX,EAAK2V,aAcNS,EAD6B,IAAtBpW,EAAK2V,eAAuBc,GAAaA,EAAUr2B,MAAQu2B,GAAWA,EAAQv2B,IAGjFgJ,EAAG2B,eAFM3B,EAAGhJ,EAAE8gB,EAAU,IAAM9X,EAAGhJ,EAAEgC,EAAO,IAK7BgH,EAAGhJ,EAAEq2B,EAAUr2B,GAAKgJ,EAAGhJ,EAAEu2B,EAAQv2B,GAjBT,IAArCgJ,EAAGrC,KAAKqE,QAAQ,GAAGsG,OAAO5S,OAC1Bs3B,EAAahtB,EAAGhJ,EAAE8gB,EAAU,IAAM9X,EAAGhJ,EAAEgC,EAAO,IAE1CgH,EAAG2B,gBACH0rB,EAAYrtB,EAAGstB,gBAAgBttB,EAAGrC,KAAKqE,QAAQ,GAAGsG,OAAQ,GAC1DilB,EAAUvtB,EAAGstB,gBAAgBttB,EAAGrC,KAAKqE,QAAQ,GAAGsG,OAAQtI,EAAGrC,KAAKqE,QAAQ,GAAGsG,OAAO5S,OAAS,GAC3Fs3B,EAAahtB,EAAGhJ,EAAEq2B,EAAUr2B,GAAKgJ,EAAGhJ,EAAEu2B,EAAQv2B,IAE9Cg2B,EAAaz3B,EAAWyD,GAAU,EAY9Ck0B,EAAS33B,EAAWuiB,GAAaviB,EAAWyD,GAC5Ci0B,EAAY,aAAeD,EAAa,aAAeE,EAAS,MAEhEltB,EAAGiuB,iBAEHv2B,EAAGiD,aAAauzB,KAAK,UAAUhlB,SAASskB,GAAiBjzB,MAAK,WAC1DkzB,EAAKnT,IAAIta,EAAGG,KAAKnJ,EAAE2D,aAAapG,KAAKyL,EAAGqC,QACxCorB,EAAKnT,IAAIsT,EAAQjzB,aAAa7B,KAAK,YAAam0B,IAChDQ,EAAKnT,IAAIuT,EAASlzB,aAAa7B,KAAK,YAAam0B,IACjDQ,EAAKnT,IAAIwT,EAASnzB,aAAa7B,KAAK,YAAam0B,IACjDQ,EAAKnT,IAAIyT,EAAWpzB,aAAa7B,KAAK,YAAam0B,IACnDQ,EAAKnT,IAAIqT,EAAShzB,aAAa7B,KAAK,YAAam0B,IACjDQ,EAAKnT,IAAIoT,EAAW9d,OAAO5P,EAAGmuB,aAAaxzB,aAAa7B,KAAK,YAAam0B,IAC1EQ,EAAKnT,IAAIhpB,EAAMqJ,aAAa7B,KAAK,YAAam0B,IAC9CQ,EAAKnT,IAAI7oB,EAAWkJ,aAAa7B,KAAK,YAAam0B,GACvD,IAAG14B,KAAKk5B,GAAM,WACV,IAAIr0B,EACAhJ,EAAS,GACTc,EAAQ,GACR5B,EAAa,GAGjB,GAAI89B,EAAY,CACZ,IAAKh0B,EAAI,EAAGA,EAAIg0B,EAAYh0B,IACxBhJ,EAAOmJ,KAAK,IAAMpL,EAAMgC,MAAQ,KAAOg9B,EAAY/zB,IACnDlI,EAAMqI,KAAK,IAAMpL,EAAM8C,KAAO,KAAOk8B,EAAY/zB,IACjD9J,EAAWiK,KAAK,IAAMpL,EAAMkB,UAAY,KAAO89B,EAAY/zB,IAE/D4G,EAAG+G,IAAIrJ,UAAU,IAAMvP,EAAMiC,QAAQsN,UAAUtN,GAAQ8N,SACvD8B,EAAG+G,IAAIrJ,UAAU,IAAMvP,EAAM+C,OAAOwM,UAAUxM,GAAOgN,SACrD8B,EAAG+G,IAAIrJ,UAAU,IAAMvP,EAAMmB,YAAYoO,UAAUpO,GAAY4O,SAC/D8B,EAAG+G,IAAIzM,OAAO,IAAMnM,EAAMmD,OAAO4M,QACrC,CAGA5M,EAAMwH,KAAK,YAAa,MAAMA,KAAKkH,EAAGouB,WACtC38B,EAAWqH,KAAK,YAAa,MAC7BrH,EAAW6I,OAAO,QAAQxB,KAAK,KAAMmH,EAAOO,aAAe,EAAIiX,GAAI3e,KAAK,KAAMmH,EAAOO,aAAeR,EAAG7I,MAAQsgB,GAC/GhmB,EAAW6I,OAAO,QAAQxB,KAAK,IAAKmH,EAAOO,aAAeR,EAAG7I,MAAQ,GAAG2B,KAAK,IAAK2e,GAClFmW,EAAQ90B,KAAK,YAAa,MAAMA,KAAK,IAAKud,GAC1CwX,EAAS/0B,KAAK,YAAa,MAAMA,KAAK,IAAKwd,GAC3CwX,EAASh1B,KAAK,YAAa,MAAMA,KAAK,IAAKsd,GAC3C2X,EAAWj1B,KAAK,YAAa,MAAMA,KAAK,KAAMie,GAAIje,KAAK,KAAMke,GAC7D2W,EAAS70B,KAAK,YAAa,MAAMA,KAAK,IAAKyd,GAAUzd,KAAK,IAAK0d,GAAUzY,MAAM,eAAgBiC,EAAGub,eAAe7a,KAAKV,IACtH0tB,EAAW50B,KAAK,YAAa,MAC7B40B,EAAWpzB,OAAO,QAAQsV,OAAO5P,EAAGmuB,aAAar1B,KAAK,IAAKkH,EAAGquB,QAAQ3tB,KAAKV,IAAKlH,KAAK,QAASkH,EAAGsuB,YAAY5tB,KAAKV,IAE9GC,EAAOmZ,qBACPpZ,EAAGqZ,kBAIPyF,IAEA9e,EAAGiM,SAAU,CACjB,GACJ,CACJ,EAEAzC,EAAY+kB,MAAQ,SAAU7C,GAC1B,IACI8C,EADAxuB,EAAKvI,KAAKD,SAGdk0B,EAAY1rB,EAAGyuB,eAAe/C,GAC9B8C,EAAaxuB,EAAG+G,IAAIrJ,UAAUsC,EAAG0uB,gBAAgBhD,EAAU9b,OAAO5P,EAAG0V,eAAgB1V,KAAOvI,KAAKk3B,SACjGl3B,KAAKm3B,UACLJ,EAAW5mB,QAAQzZ,EAAMwB,SAAS,GAAMiY,QAAQzZ,EAAMyB,WAAW,GAC7DoQ,EAAGwT,cACHxT,EAAG6uB,UAAUnD,GAEjB1rB,EAAG8uB,kBAAkBpD,GAAW,GAEhC1rB,EAAGuN,iBAAmBme,EACtB1rB,EAAGwN,mBAAqBxN,EAAGwN,mBAAmBoC,QAAO,SAAU9M,GAC3D,OAAO4oB,EAAU9mB,QAAQ9B,GAAM,CACnC,GACJ,EAEA0G,EAAYolB,QAAU,SAAUlD,GAC5B,IAAI1rB,EAAKvI,KAAKD,SAGdk0B,EAAY1rB,EAAGyuB,eAAe/C,GACjB1rB,EAAG+G,IAAIrJ,UAAUsC,EAAG0uB,gBAAgBhD,EAAU9b,OAAO5P,EAAG0V,eAAgB1V,KAAkB4H,QAAQzZ,EAAMwB,SAAS,GAAOiY,QAAQzZ,EAAMyB,WAAW,GAC1JoQ,EAAGwT,cACHxT,EAAG+uB,YAAYrD,GAEnB1rB,EAAG8uB,kBAAkBpD,GAAW,GAEhC1rB,EAAGuN,iBAAmBvN,EAAGuN,iBAAiBqC,QAAO,SAAU9M,GACvD,OAAO4oB,EAAU9mB,QAAQ9B,GAAM,CACnC,IACA9C,EAAGwN,mBAAqBke,CAC5B,EAEAliB,EAAYmlB,OAAS,SAAUjD,GAC3B,IAAI1rB,EAAKvI,KAAKD,SAGdk0B,EAAY1rB,EAAGyuB,eAAe/C,GACjB1rB,EAAG+G,IAAIrJ,UAAUsC,EAAG0uB,gBAAgBhD,IAEtC9jB,QAAQzZ,EAAMwB,SAAS,GAAOiY,QAAQzZ,EAAMyB,WAAW,GAC9DoQ,EAAGwT,cACHxT,EAAG+uB,YAAYrD,GAEf1rB,EAAGC,OAAOyX,cACV1X,EAAGgvB,WAAWtD,EAAU9b,OAAO5P,EAAGivB,eAAevuB,KAAKV,KACtDA,EAAGkT,OAAOxV,UAAUsC,EAAGkvB,gBAAgBxD,IAAY9b,QAAO,WACtD,OAAO5P,EAAGtI,GAAG4C,OAAO7C,MAAMmQ,QAAQzZ,EAAMwE,kBAC5C,IAAGiV,QAAQzZ,EAAMwE,mBAAmB,IAGxCqN,EAAGuN,iBAAmB,GACtBvN,EAAGwN,mBAAqB,EAC5B,EAEAhE,EAAYjY,OAAS,SAAU49B,GAC3B,IAAInvB,EAAKvI,KAAKD,SACVyI,EAASD,EAAGC,OAChB,OAAKkvB,GAGLlvB,EAAOmvB,aAAeD,EACtBnvB,EAAG2a,uBACI1a,EAAOmvB,cAJHnvB,EAAOmvB,YAKtB,EACA5lB,EAAYjY,OAAO+oB,IAAM,SAAU6U,GAC/B,IAAInvB,EAAKvI,KAAKD,SACd,OAAOC,KAAKlG,OAAOyO,EAAGC,OAAOmvB,aAAan0B,OAAOk0B,GAAgB,IACrE,EACA3lB,EAAYjY,OAAO2M,OAAS,SAAU3G,GAEzBE,KAAKD,SACX63B,gBAAgB93B,GAAQ,EAC/B,EAEAiS,EAAY5X,OAAS,SAAUu9B,GAC3B,IAAInvB,EAAKvI,KAAKD,SACVyI,EAASD,EAAGC,OAChB,OAAKkvB,GAGLlvB,EAAOqvB,aAAeH,EACtBnvB,EAAG2a,uBACI1a,EAAOqvB,cAJHrvB,EAAOqvB,YAKtB,EACA9lB,EAAY5X,OAAO0oB,IAAM,SAAU6U,GAC/B,IAAInvB,EAAKvI,KAAKD,SACd,OAAOC,KAAK7F,OAAOoO,EAAGC,OAAOqvB,aAAar0B,OAAOk0B,GAAgB,IACrE,EACA3lB,EAAY5X,OAAOsM,OAAS,SAAU3G,GAEzBE,KAAKD,SACX63B,gBAAgB93B,GAAQ,EAC/B,EAEAiS,EAAY+lB,OAAS,SAAUA,GAC3B,IAAIvvB,EAAKvI,KAAKD,SACVyI,EAASD,EAAGC,OAChB,OAAIjL,EAAYu6B,KAGhBtvB,EAAOuvB,YAAcD,EACrBvvB,EAAGqJ,UAHQpJ,EAAOuvB,WAKtB,EAEAhmB,EAAY0J,OAAS,WAAa,EAClC1J,EAAY0J,OAAOuc,KAAO,SAAU/D,GAChC,IAAI1rB,EAAKvI,KAAKD,SACdwI,EAAGgvB,WAAWhvB,EAAGyuB,eAAe/C,IAChC1rB,EAAGwa,gBAAgB,CAAExE,YAAY,GACrC,EACAxM,EAAY0J,OAAOwc,KAAO,SAAUhE,GAChC,IAAI1rB,EAAKvI,KAAKD,SACdwI,EAAG2vB,WAAW3vB,EAAGyuB,eAAe/C,IAChC1rB,EAAGwa,gBAAgB,CAAExE,YAAY,GACrC,EAEAxM,EAAYomB,KAAO,SAAU3D,GACzB,IAAIjsB,EAAKvI,KAAKD,SACVyI,EAASD,EAAGC,OAEZgsB,EAAKxc,IACLzP,EAAG6vB,MAAM5D,EAAKxc,IAGd,UAAWwc,GACXziB,EAAY7L,KAAKkuB,MAAMnrB,KAAKjJ,KAA5B+R,CAAkCyiB,EAAKJ,OAGvC,YAAaI,GACbp4B,OAAO8B,KAAKs2B,EAAK6D,SAASz5B,SAAQ,SAAUyM,GACxC7C,EAAO8vB,aAAajtB,GAAMmpB,EAAK6D,QAAQhtB,EAC3C,IAGA,eAAgBmpB,GAAQjsB,EAAGqB,kBAC3BpB,EAAOwb,kBAAoBwQ,EAAKd,YAGhC,SAAUc,GACVp4B,OAAO8B,KAAKs2B,EAAK9rB,MAAM9J,SAAQ,SAAUyM,GACrC7C,EAAO8C,UAAUD,GAAMmpB,EAAK9rB,KAAK2C,EACrC,IAGA,WAAYmpB,GACZp4B,OAAO8B,KAAKs2B,EAAKD,QAAQ31B,SAAQ,SAAUyM,GACvC7C,EAAO+vB,YAAYltB,GAAMmpB,EAAKD,OAAOlpB,EACzC,IAGA,aAAcmpB,GAAQjsB,EAAGiwB,UAAUhE,EAAKiE,UACxClwB,EAAG4vB,KAAK5vB,EAAGmwB,UAAUlE,EAAKiE,UAAWjE,EAAKnN,MAI1C,WAAYmN,EAEZjsB,EAAGowB,OAAOpwB,EAAGyuB,eAAsC,kBAAhBxC,EAAKmE,QAAwBnE,EAAKmE,OAAS,KAAOnE,EAAKmE,SAAS,WAC/FpwB,EAAGqwB,aAAapE,EACpB,IAEAjsB,EAAGqwB,aAAapE,EAExB,EAEAziB,EAAY4mB,OAAS,SAAUnE,GAC3B,IAAIjsB,EAAKvI,KAAKD,UACdy0B,EAAOA,GAAQ,CAAC,aACIn3B,MAChBm3B,EAAO,CAAEqE,IAAKrE,GACS,iBAATA,IACdA,EAAO,CAAEqE,IAAK,CAACrE,KAEnBjsB,EAAGowB,OAAOpwB,EAAGyuB,eAAexC,EAAKqE,MAAM,WACnCtwB,EAAGqJ,OAAO,CAAEkJ,sBAAsB,EAAMD,mBAAmB,EAAM0D,YAAY,IACzEiW,EAAKnN,MACLmN,EAAKnN,MAEb,GACJ,EAEAtV,EAAY1Z,QAAU,SAAUA,GAC5B,IAAIkQ,EAAKvI,KAAKD,SACVyI,EAASD,EAAGC,OAChB,OAAKnQ,GAGLmQ,EAAOnQ,QAAUA,EACjBkQ,EAAG2a,uBACI1a,EAAOnQ,SAJHmQ,EAAOnQ,OAKtB,EACA0Z,EAAY1Z,QAAQwqB,IAAM,SAAUxqB,GAChC,IAAIkQ,EAAKvI,KAAKD,SACVyI,EAASD,EAAGC,OAChB,OAAKnQ,GAGLmQ,EAAOnQ,QAAUmQ,EAAOnQ,QAAQmL,OAAOnL,GACvCkQ,EAAG2a,uBACI1a,EAAOnQ,SAJHmQ,EAAOnQ,OAKtB,EACA0Z,EAAY1Z,QAAQoO,OAAS,SAAUnI,GACnC,IAEImT,EACA4mB,EACAhgC,EAJAkQ,EAAKvI,KAAKD,SACVyI,EAASD,EAAGC,OA2BhB,OAtBAlK,EAAUA,GAAW,CAAC,EACtBmT,EAAWlJ,EAAGlK,UAAUC,EAAS,WAAYkK,EAAO0V,qBACpDma,EAAU9vB,EAAGlK,UAAUC,EAAS,UAAW,CAAC5H,EAAM0B,SAElDC,EAAUkQ,EAAGE,KAAK5F,OAAO,IAAMnM,EAAM2B,SAAS4N,UAAUoyB,EAAQ10B,KAAI,SAAUm1B,GAC1E,MAAO,IAAMA,CACjB,MACCrnB,EAAWpZ,EAAQ6K,aAAauO,SAASA,GAAYpZ,GAASiO,MAAM,UAAW,GAAGG,SAEnF+B,EAAOnQ,QAAUmQ,EAAOnQ,QAAQ8f,QAAO,SAAU/f,GAC7C,IAAIuG,GAAQ,EACZ,OAAKvG,EAAc,QAGnBA,EAAc,MAAEiM,MAAM,KAAKzF,SAAQ,SAAUk6B,GACrCT,EAAQlrB,QAAQ2rB,IAAM,IACtBn6B,GAAQ,EAEhB,KACQA,EACZ,IAEO6J,EAAOnQ,OAClB,EAEA0Z,EAAYgnB,SAAW,SAAU5E,GAC7B,IAAI5rB,EAAKvI,KAAKD,SACVE,EAAKsI,EAAGtI,GACZ,OAAOA,EAAG+4B,MAAMzwB,EAAGE,KAAKxC,UAAU,IAAMvP,EAAMiC,OAAS4P,EAAG0wB,wBAAwB9E,IAAWluB,UAAU,IAAMvP,EAAMgC,OAAOyf,QAAO,WAC7H,OAAOlY,EAAG4C,OAAO7C,MAAMmQ,QAAQzZ,EAAM2E,SACzC,IAAGsI,KAAI,SAAU5F,GACb,OAAOA,EAAE4F,KAAI,SAAU5F,GACnB,IAAImI,EAAOnI,EAAEm7B,SAAS,OAAOhzB,EAAKA,KAAOA,EAAKA,KAAOA,CACzD,GACJ,IACJ,EACA6L,EAAYlP,OAAS,SAAUg2B,EAAKM,EAASC,GACzC,IAAI7wB,EAAKvI,KAAKD,SACVE,EAAKsI,EAAGtI,GACRuI,EAASD,EAAGC,OACXA,EAAO6wB,wBAGZ9wB,EAAGE,KAAKxC,UAAU,IAAMvP,EAAMiC,QAAQsN,UAAU,IAAMvP,EAAMgC,OAAOoK,MAAK,SAAU/E,EAAG4D,GACjF,IAAIjJ,EAAQuH,EAAG4C,OAAO7C,MAClBqL,EAAKtN,EAAEmI,KAAOnI,EAAEmI,KAAKmF,GAAKtN,EAAEsN,GAC5BiuB,EAAS/wB,EAAGgxB,UAAUv5B,KAAMjC,GAAGkL,KAAKV,GACpCixB,EAAahxB,EAAOixB,yBAA2BZ,GAAOA,EAAI1rB,QAAQ9B,IAAO,EACzEquB,GAAiBP,GAAWA,EAAQhsB,QAAQxL,IAAM,EAClDg4B,EAAajhC,EAAMyX,QAAQzZ,EAAM2E,UAEjC3C,EAAMyX,QAAQzZ,EAAMkC,OAASF,EAAMyX,QAAQzZ,EAAM2C,QAGjDmgC,GAAcE,EACVlxB,EAAOoxB,4BAA4B77B,KAAO47B,GAC1CL,GAAO,EAAM5gC,EAAMyX,QAAQzZ,EAAM2E,UAAU,GAAO0C,EAAG4D,GAElDnE,EAAU47B,IAAeA,GAC5BO,GACAL,GAAO,EAAO5gC,EAAMyX,QAAQzZ,EAAM2E,UAAU,GAAQ0C,EAAG4D,GAGnE,GACJ,EACAoQ,EAAY8nB,SAAW,SAAUhB,EAAKM,GAClC,IAAI5wB,EAAKvI,KAAKD,SACVE,EAAKsI,EAAGtI,GACRuI,EAASD,EAAGC,OACXA,EAAO6wB,wBAGZ9wB,EAAGE,KAAKxC,UAAU,IAAMvP,EAAMiC,QAAQsN,UAAU,IAAMvP,EAAMgC,OAAOoK,MAAK,SAAU/E,EAAG4D,GACjF,IAAIjJ,EAAQuH,EAAG4C,OAAO7C,MAClBqL,EAAKtN,EAAEmI,KAAOnI,EAAEmI,KAAKmF,GAAKtN,EAAEsN,GAC5BiuB,EAAS/wB,EAAGgxB,UAAUv5B,KAAMjC,GAAGkL,KAAKV,GACpCixB,EAAahxB,EAAOixB,yBAA2BZ,GAAOA,EAAI1rB,QAAQ9B,IAAO,EACzEquB,GAAiBP,GAAWA,EAAQhsB,QAAQxL,IAAM,EAClDg4B,EAAajhC,EAAMyX,QAAQzZ,EAAM2E,UAEjC3C,EAAMyX,QAAQzZ,EAAMkC,OAASF,EAAMyX,QAAQzZ,EAAM2C,OAGjDmgC,GAAcE,GACVlxB,EAAOoxB,4BAA4B77B,IAC/B47B,GACAL,GAAO,EAAO5gC,EAAMyX,QAAQzZ,EAAM2E,UAAU,GAAQ0C,EAAG4D,EAIvE,GACJ,EAEAoQ,EAAYimB,KAAO,SAAU/D,EAAW31B,GACpC,IACIiM,EADAhC,EAAKvI,KAAKD,SAGdk0B,EAAY1rB,EAAGyuB,eAAe/C,GAC9B31B,EAAUA,GAAW,CAAC,EAEtBiK,EAAGuxB,sBAAsB7F,IACzB1pB,EAAUhC,EAAG+G,IAAIrJ,UAAUsC,EAAG0uB,gBAAgBhD,KAEtC/wB,aAAaoD,MAAM,UAAW,EAAG,aAAaxJ,KAAKyL,EAAG2e,QAAQ,WAClE3c,EAAQjE,MAAM,UAAW,MAAMA,MAAM,UAAW,EACpD,IAEIhI,EAAQigB,YACRhW,EAAGgvB,WAAWtD,GAGlB1rB,EAAGqJ,OAAO,CAAEkJ,sBAAsB,EAAMD,mBAAmB,EAAM0D,YAAY,GACjF,EAEAxM,EAAYkmB,KAAO,SAAUhE,EAAW31B,GACpC,IACIiM,EADAhC,EAAKvI,KAAKD,SAGdk0B,EAAY1rB,EAAGyuB,eAAe/C,GAC9B31B,EAAUA,GAAW,CAAC,EAEtBiK,EAAG8P,mBAAmB4b,IACtB1pB,EAAUhC,EAAG+G,IAAIrJ,UAAUsC,EAAG0uB,gBAAgBhD,KAEtC/wB,aAAaoD,MAAM,UAAW,EAAG,aAAaxJ,KAAKyL,EAAG2e,QAAQ,WAClE3c,EAAQjE,MAAM,UAAW,MAAMA,MAAM,UAAW,EACpD,IAEIhI,EAAQigB,YACRhW,EAAG2vB,WAAWjE,GAGlB1rB,EAAGqJ,OAAO,CAAEkJ,sBAAsB,EAAMD,mBAAmB,EAAM0D,YAAY,GACjF,EAEAxM,EAAYunB,OAAS,SAAUrF,EAAW31B,GACtC,IAAIy7B,EAAO/5B,KACPuI,EAAKvI,KAAKD,SACdwI,EAAGyuB,eAAe/C,GAAWr1B,SAAQ,SAAUu1B,GAC3C5rB,EAAG0V,eAAekW,GAAY4F,EAAK9B,KAAK9D,EAAU71B,GAAWy7B,EAAK/B,KAAK7D,EAAU71B,EACrF,GACJ,EAEAyT,EAAYvZ,QAAU,WAAa,EACnCuZ,EAAYvZ,QAAQw/B,KAAO,SAAUxD,GACjC,IACI3wB,EACAm2B,EAFAzxB,EAAKvI,KAAKD,SAKVy0B,EAAKwF,QACLA,EAAQxF,EAAKwF,OAIbxF,EAAKtuB,KACDqC,EAAG0xB,eAEHD,EAAQ,CAACzxB,EAAGhJ,EAAEi1B,EAAKtuB,KAAK3G,GAAIgJ,EAAG2xB,UAAU1F,EAAKtuB,KAAKmF,GAAvB9C,CAA2BisB,EAAKtuB,KAAK5J,QACjEuH,EAAQ,MAGRA,EAAQ7G,EAAQw3B,EAAKtuB,KAAKrC,OAAS2wB,EAAKtuB,KAAKrC,MAAQ0E,EAAG4xB,YAAY3F,EAAKtuB,KAAK3G,QAEzD,IAAXi1B,EAAKj1B,EACnBsE,EAAQ0E,EAAG4xB,YAAY3F,EAAKj1B,QACC,IAAfi1B,EAAK3wB,QACnBA,EAAQ2wB,EAAK3wB,OAIjB0E,EAAG6xB,cAAc,YAAav2B,EAAOm2B,GACrCzxB,EAAG6xB,cAAc,YAAav2B,EAAOm2B,GAErCzxB,EAAGC,OAAO6xB,eAAev9B,KAAKyL,EAAIisB,EAAKtuB,KAC3C,EACA6L,EAAYvZ,QAAQy/B,KAAO,WAEvBj4B,KAAKD,SAASq6B,cAAc,WAAY,GAExCp6B,KAAKD,SAASyI,OAAO8xB,eAAex9B,KAAKkD,KAC7C,EAEA+R,EAAYyjB,UAAY,SAAUpa,EAAM6Y,GACpC,IAAI1rB,EAAKvI,KAAKD,SACVzB,EAAU,CAAC,MAAO,SAAS6O,QAAQiO,IAAS,EAAI,CAAER,eAAe,GAAS,KAC9ErS,EAAGgyB,YAAYtG,EAAW7Y,EAAM9c,EACpC,EAEAF,EAAqBm8B,YAAc,SAAUtG,EAAW7Y,EAAMof,GAC1D,IAAIjyB,EAAKvI,KACL+a,GAAyBxS,EAAGwT,aAC5Bzd,EAAUk8B,GAAoB,CAAEzf,sBAAuBA,GAC3Dzc,EAAQ0kB,4BAA6B,EACrCza,EAAGoM,YAAa,EAChBpM,EAAGkyB,cAAcxG,EAAW7Y,GAC5B7S,EAAGkS,cAAclS,EAAGrC,KAAKqE,SACzBhC,EAAGwa,gBAAgBzkB,EACvB,EAEAyT,EAAYxS,EAAI,SAAUA,GACtB,IAAIgJ,EAAKvI,KAAKD,SAKd,OAJImH,UAAUjJ,SACVsK,EAAGmyB,cAAcnyB,EAAGrC,KAAKqE,QAAShL,GAClCgJ,EAAGqJ,OAAO,CAAEkJ,sBAAsB,EAAMD,mBAAmB,KAExDtS,EAAGrC,KAAK8R,EACnB,EACAjG,EAAYiG,GAAK,SAAUA,GACvB,IAAIzP,EAAKvI,KAAKD,SAKd,OAJImH,UAAUjJ,SACVsK,EAAGoyB,eAAepyB,EAAGrC,KAAKqE,QAASyN,GACnCzP,EAAGqJ,OAAO,CAAEkJ,sBAAsB,EAAMD,mBAAmB,KAExDtS,EAAGrC,KAAK8R,EACnB,EAEAjG,EAAYkH,KAAO,SAAU1X,GACzB,IAAIgH,EAAKvI,KAAKD,SAWd,OAVIwB,IACIgH,EAAG2B,iBACH3I,EAASA,EAAOoC,KAAI,SAAUpE,GAC1B,OAAOgJ,EAAG4B,UAAU5K,EACxB,KAEJgJ,EAAGtQ,MAAM0gB,OAAOpX,GAChBgH,EAAGqJ,OAAO,CAAEiJ,mBAAmB,EAAMsD,MAAO5V,EAAGC,OAAO4X,eACtD7X,EAAGC,OAAOoyB,YAAY99B,KAAKkD,KAAMuI,EAAGhJ,EAAE8gB,cAEnC9X,EAAGtQ,MAAM0gB,QACpB,EACA5G,EAAYkH,KAAK4hB,OAAS,SAAUC,GAChC,IAAIvyB,EAAKvI,KAAKD,SACdwI,EAAGC,OAAOwQ,aAAe8hB,EACzBvyB,EAAGwa,iBACP,EACAhR,EAAYgpB,OAAS,WACjB,IAAIxyB,EAAKvI,KAAKD,SACdwI,EAAGtQ,MAAMw3B,QAAQhK,SACjBld,EAAGqJ,OAAO,CAAEiJ,mBAAmB,GACnC,EAEA9I,EAAYkH,KAAKxU,IAAM,SAAUA,GAC7B,IAAI8D,EAAKvI,KAAKD,SACVyI,EAASD,EAAGC,OACZvI,EAAKsI,EAAGtI,GACZ,GAAY,IAARwE,IAAaA,EAGb,OAAO+D,EAAOwyB,WAFdxyB,EAAOwyB,WAAa/6B,EAAGwE,IAAI,CAAC8D,EAAGwQ,WAAW,GAAItU,GAItD,EAEAsN,EAAYkH,KAAKxZ,IAAM,SAAUA,GAC7B,IAAI8I,EAAKvI,KAAKD,SACVyI,EAASD,EAAGC,OACZvI,EAAKsI,EAAGtI,GACZ,GAAY,IAARR,IAAaA,EAGb,OAAO+I,EAAOyyB,WAFdzyB,EAAOyyB,WAAah7B,EAAGR,IAAI,CAAC8I,EAAGwQ,WAAW,GAAItZ,GAItD,EAEAsS,EAAYkH,KAAK7Y,MAAQ,SAAUA,GAC/B,IAAI8G,UAAUjJ,OAQV,MAAO,CACHwG,IAAKzE,KAAKuB,OAAOkD,MACjBhF,IAAKO,KAAKuB,OAAO9B,OATjBjC,EAAU4C,EAAMqE,MAChBzE,KAAKuB,OAAOkD,IAAIrE,EAAMqE,KAEtBjH,EAAU4C,EAAMX,MAChBO,KAAKuB,OAAO9B,IAAIW,EAAMX,IAQlC,EAEArB,EAAqBmZ,QAAU,WAC3B,IAAIhP,EAAKvI,KACLC,EAAKsI,EAAGtI,GACZsI,EAAG2yB,IAAMj7B,EAAGk7B,OAAOD,MAAM5+B,OAAM,SAAUyB,GACrC,OAAOA,EAAE8S,OAAOuqB,QAAO,SAAU9pB,EAAGC,GAChC,OAAOD,EAAIC,EAAEjV,KACjB,GAAG,EACP,IACAiM,EAAG2yB,IAAI7pB,KAAK9I,EAAG8yB,oBAAsB,KACzC,EAEAj9B,EAAqBqf,aAAe,WAChC,IAAIlV,EAAKvI,KACLwI,EAASD,EAAGC,OACZ5F,EAAI4F,EAAO8yB,aAAe9yB,EAAO+yB,YACjCC,EAAgBjzB,EAAGgH,oBAAoBhH,EAAGrC,KAAKqE,SAAStM,OAASsK,EAAGC,OAAOizB,oBAC/ElzB,EAAGmV,eAAiBhgB,KAAK+B,IAAI8I,EAAG6U,SAAU7U,EAAG8U,WAAa,GAAK9U,EAAG+U,QAAQ,SAAW,IAAO,GAC5F/U,EAAGmzB,OAA6B,IAApBnzB,EAAGmV,eACfnV,EAAGozB,iBAAmB/4B,GAAK2F,EAAGmzB,OAAS94B,GAAK2F,EAAGmzB,OAAS,GACxDnzB,EAAGqzB,YAAcrzB,EAAG+U,QAAQ,UAAY/U,EAAG+U,QAAQ,SAAW/U,EAAGmzB,OAASnzB,EAAGozB,iBAAmB,EAChGpzB,EAAGizB,cAAgB54B,IAAQ44B,GAAiBjzB,EAAGmzB,OAASnzB,EAAGqzB,YAAcrzB,EAAGmzB,OAASnzB,EAAGqzB,YAAcJ,GAAiBjzB,EAAGmzB,OAASF,EAAgBjzB,EAAGmzB,OAC1J,EAEAt9B,EAAqBy9B,UAAY,WAC7B,IAAItzB,EAAKvI,KACTuI,EAAGuzB,OAASvzB,EAAGwzB,YACfxzB,EAAGyzB,eAAiBzzB,EAAG0zB,oBACvB1zB,EAAG2zB,kBAAoB3zB,EAAG0zB,kBAAkB,IAChD,EAEA79B,EAAqB+9B,YAAc,SAAUp+B,GACzC,IAIIq+B,EACAC,EACAC,EACAC,EAPAh0B,EAAKvI,KACLwI,EAASD,EAAGC,OACZ7J,GAAQ,EACRkF,EAAQ,EAMZ,OAAK2E,GAILD,EAAG2yB,IAAI3yB,EAAGgH,oBAAoBhH,EAAGrC,KAAKqE,UAAU3L,SAAQ,SAAUgkB,GACzDjkB,GAASikB,EAAE1c,KAAKmF,KAAOtN,EAAEmI,KAAKmF,KAC/B1M,GAAQ,GACRZ,EAAI6kB,GACF/e,MAAQA,GAEdA,GACJ,IACI4jB,MAAM1pB,EAAEy+B,cACRz+B,EAAEy+B,WAAa,GAEf/U,MAAM1pB,EAAE0+B,YACR1+B,EAAE0+B,SAAW1+B,EAAEy+B,YAEfj0B,EAAGm0B,YAAY3+B,EAAEmI,QACjBk2B,EAAO5zB,EAAOm0B,UACdN,EAAO7zB,EAAOo0B,UACdN,EAAO5+B,KAAK6H,IAAMiD,EAAO+U,iBAAmB,EAAI,IAAM8e,EAAOD,GAC7DG,EAASx+B,EAAEzB,MAAQ8/B,EAAO,EAAIr+B,EAAEzB,MAAQ+/B,EAAOt+B,EAAEzB,MAAQ8/B,EAAOC,EAAOD,EACvEr+B,EAAEy+B,WAAah0B,EAAOq0B,oBACtB9+B,EAAE0+B,SAAW1+B,EAAEy+B,WAAaF,EAAOC,GAEhC59B,EAAQZ,EAAI,MAzBR,IA0Bf,EAEAK,EAAqB29B,UAAY,WAC7B,IAAIxzB,EAAKvI,KACL88B,EAAev0B,EAAG+U,QAAQ,SAC1Byf,EAAiBx0B,EAAGizB,cAAgBjzB,EAAGgH,oBAAoBhH,EAAGrC,KAAKqE,SAAStM,OAC5E/E,EAAMqP,EAAGtI,GAAGqP,IAAIpW,MAAM8jC,aAAY,SAAUj/B,GAC5C,OAAO++B,EAAev0B,EAAGmzB,OAASqB,EAAiBh/B,EAAE8F,MAAQ0E,EAAGmzB,MACpE,IAAGE,aAAY,SAAU79B,GACrB,OAAO++B,EAAev0B,EAAGmzB,OAASqB,GAAkBh/B,EAAE8F,MAAQ,GAAK0E,EAAGqzB,WAC1E,IACIqB,EAAS,SAAgBl/B,EAAGm/B,GAC5B,IAAIC,EACJ,OAAID,EACOhkC,EAAI6E,IAEfo/B,EAAU50B,EAAG4zB,YAAYp+B,IACR7E,EAAIikC,GAAW,OACpC,EAGA,OADAF,EAAOG,SAAWlkC,EAAIkkC,SACfH,CACX,EAEA7+B,EAAqB69B,kBAAoB,SAAUoB,GAC/CA,EAAOA,GAAQ,EACf,IAAI90B,EAAKvI,KACL88B,EAAev0B,EAAG+U,QAAQ,SAC1Byf,EAAiBx0B,EAAGizB,cAAgBjzB,EAAGgH,oBAAoBhH,EAAGrC,KAAKqE,SAAStM,OAC5Eq/B,EAAc5/B,KAAK+B,IAAI8I,EAAGmV,eAAiB2f,EAAO90B,EAAGmzB,OAAyB,GAAjBqB,EAAoC,KAAZ,EAAIM,IACzFnkC,EAAMqP,EAAGtI,GAAGqP,IAAIpW,MAAM8jC,aAAY,SAAUj/B,GAC5C,OAAO++B,EAAev0B,EAAGmzB,OAASqB,EAAiBh/B,EAAE8F,MAAQy5B,EAAc/0B,EAAGmV,eAAiB2f,CACnG,IAAGzB,aAAY,SAAU79B,GACrB,OAAO++B,EAAev0B,EAAGmzB,OAASqB,GAAkBh/B,EAAE8F,MAAQ,GAAK0E,EAAGqzB,WAC1E,IACA,OAAO,SAAU79B,GACb,IAAIo/B,EAAU50B,EAAG4zB,YAAYp+B,GAC7B,OAAOo/B,EAAUjkC,EAAIikC,GAAW,OACpC,CACJ,EAEA/+B,EAAqBm/B,OAAS,SAAUx/B,EAAGm/B,EAAeM,GACtD,OAAOA,GAASx9B,KAAKy9B,UAAU1/B,EAAEmI,MAAQlG,KAAK87B,OAAO/9B,EAAGm/B,GAAiB,OAC7E,EAEA9+B,EAAqBs/B,qBAAuB,SAAU3/B,GAClD,IAGI+6B,EACAv5B,EACAC,EACAmD,EACAg7B,EAPAp1B,EAAKvI,KACLwI,EAASD,EAAGC,OACZ20B,EAAU50B,EAAG4zB,YAAYp+B,GAMzB6/B,EAAY,GACZC,EAAWt1B,EAAG+U,QAAQ,SAC1B,GAAI6f,IAAYU,EACZ/E,EAAI94B,KAAK87B,OAAOsB,SAASD,GACzB59B,EAAIkoB,MAAMqR,EAAE,IAAM,EAAIA,EAAE,GACxBt5B,EAAIioB,MAAMqR,EAAE,IAAM,EAAIA,EAAE,GACxBn2B,EAAIjF,KAAKogC,KAAKv+B,EAAIA,EAAIC,EAAIA,GAQ1Bo+B,EAAY,aAAer+B,GANvBo+B,EADAp1B,EAAG+U,QAAQ,UAAY9U,EAAOu1B,kBACtB7gC,EAAWsL,EAAOu1B,mBAAqBv1B,EAAOu1B,kBAAkBhgC,EAAGwK,EAAGmzB,OAAQ/4B,GAAK6F,EAAOu1B,kBAC3Fx1B,EAAG+U,QAAQ,QAAU9U,EAAOw1B,gBAC3B9gC,EAAWsL,EAAOw1B,iBAAmBx1B,EAAOw1B,gBAAgBjgC,EAAGwK,EAAGmzB,OAAQ/4B,GAAK6F,EAAOw1B,gBAEtFz1B,EAAGmzB,QAAU/4B,GAAK,GAAK4F,EAAGmzB,OAAS,KAAQ,MAAQ,GAAKnzB,EAAGmzB,OAAS,IAAOnzB,EAAGmzB,OAAS/4B,EAAI,GAEhE,IAAMnD,EAAIm+B,EAAQ,SACtD,GAAIR,GAAWU,GAAYt1B,EAAGgH,oBAAoBhH,EAAGrC,KAAKqE,SAAStM,OAAS,EAAG,CAClF,IAAIsd,EAAK7d,KAAK4H,IAAI63B,EAAQV,SAAW/+B,KAAK6H,GAAK,GAG/Cq4B,EAAY,cAFZr+B,EAAI7B,KAAKugC,IAAId,EAAQV,SAAW/+B,KAAK6H,GAAK,IAAMgD,EAAGmV,eAAiB,KAErC,KAD/Ble,EAAI+b,GAAMhT,EAAGmV,eAAiB,GAAKhgB,KAAKwgC,IAAS,GAAL3iB,IAAY,GACf,GAC7C,CACA,OAAOqiB,CACX,EAEAx/B,EAAqB+/B,YAAc,SAAUpgC,GACzC,IAAIwK,EAAKvI,KACLwI,EAASD,EAAGC,OACZ41B,EAAQ1gC,KAAK6H,IAAMgD,EAAG+U,QAAQ,WAAa9U,EAAO+U,iBAAmB,EAAI,GAC7E,OAAOxf,GAAKA,EAAE0+B,SAAW1+B,EAAEy+B,YAAc4B,EAAQ,IACrD,EAEAhgC,EAAqBigC,iBAAmB,SAAUtgC,GAC9C,OAAOiC,KAAKs+B,QAAQ,CAChBjzB,GAAItN,EAAEmI,KAAKmF,GACX/O,MAAOyB,EAAEzB,MACTqhC,MAAO39B,KAAKm+B,YAAYpgC,GACxB8F,MAAO9F,EAAE8F,OAEjB,EAEAzF,EAAqBmgC,gBAAkB,SAAUxgC,GAC7C,IACIo/B,EACA7gC,EACAqhC,EACAtyB,EACA9D,EALAgB,EAAKvI,KAMT,OAAKuI,EAAGi2B,sBAIRliC,GADA6gC,EAAU50B,EAAG4zB,YAAYp+B,IACPo/B,EAAQ7gC,MAAQ,KAClCqhC,EAAQp1B,EAAG41B,YAAYhB,GACvB9xB,EAAKtN,EAAEmI,KAAKmF,GACP9C,EAAG+U,QAAQ,UAAa/U,EAAGk2B,uBAAuBd,IAGvDp2B,EAASgB,EAAGm2B,qBACIn3B,EAAOjL,EAAOqhC,EAAOtyB,GAAM9C,EAAGo2B,sBAAsBriC,EAAOqhC,GAHhE,IAPA,EAWf,EAEAv/B,EAAqBwgC,mBAAqB,SAAUtiC,EAAOuiC,GACvD,IACIt3B,EADKvH,KACO8+B,uBAEhB,OAAOv3B,EAASA,EAAOjL,EAAOuiC,GAASviC,CAC3C,EAEA8B,EAAqBg5B,UAAY,SAAUnD,GACvC,IACIvsB,EADAa,EAAKvI,KAILuI,EAAGoM,WACHjN,EAAWiL,OAAO2S,aAAY,WACrB/c,EAAGoM,aACJhC,OAAO6S,cAAc9d,GACjBa,EAAGkT,OAAOxV,UAAU,2BAA2BvD,OAAS,GACxD6F,EAAG6uB,UAAUnD,GAGzB,GAAG,KAIPA,EAAY1rB,EAAGyuB,eAAe/C,GAE9B1rB,EAAG+G,IAAIrJ,UAAUsC,EAAG0uB,gBAAgBhD,EAAW,IAAMv9B,EAAMS,WAAW2L,MAAK,SAAU/E,GAC5EwK,EAAGw2B,aAAahhC,EAAEmI,KAAKmF,KAG5B9C,EAAGtI,GAAG4C,OAAO7C,MAAMiG,UAAU,QAAQ/C,aAAauO,SAASlJ,EAAGy2B,eAAejhC,EAAEmI,KAAKmF,KAAKhK,KAAK,IAAKkH,EAAGyzB,gBAAgB94B,aAAauO,SAAwC,EAA/BlJ,EAAGy2B,eAAejhC,EAAEmI,KAAKmF,KAAShK,KAAK,IAAKkH,EAAG2zB,mBAAmBp5B,MAAK,SAAU/E,GACrNwK,EAAG02B,YAAYlhC,EAAEmI,KACzB,GACJ,IACJ,EAEA9H,EAAqBk5B,YAAc,SAAUrD,GACzC,IAAI1rB,EAAKvI,KAELuI,EAAGoM,aAIPsf,EAAY1rB,EAAGyuB,eAAe/C,GAE9B1rB,EAAG+G,IAAIrJ,UAAUsC,EAAG0uB,gBAAgBhD,EAAW,IAAMv9B,EAAMS,WAAW8O,UAAU,QAAQ/C,aAAauO,UAAS,SAAU1T,GACpH,OAAOwK,EAAGy2B,eAAejhC,EAAEmI,KAAKmF,GACpC,IAAGhK,KAAK,IAAKkH,EAAGuzB,QAChBvzB,EAAG+G,IAAIrJ,UAAU,IAAMvP,EAAMwC,KACjC,EAEAkF,EAAqB4gC,eAAiB,SAAU3zB,GAC5C,IAAI9C,EAAKvI,KACLwI,EAASD,EAAGC,OAEhB,OAAID,EAAG02B,YAAY5zB,GACR7C,EAAO02B,sBACP32B,EAAGm0B,YAAYrxB,GACf7C,EAAO22B,sBACP52B,EAAG62B,UAAU/zB,GACb7C,EAAO62B,oBAEP,EAEf,EAEAjhC,EAAqB2gC,aAAe,SAAU1zB,GAC1C,IAAI9C,EAAKvI,KACLwI,EAASD,EAAGC,OAChB,OAAOD,EAAG02B,YAAY5zB,IAAO7C,EAAO82B,cAAgB/2B,EAAGm0B,YAAYrxB,IAAO7C,EAAO+2B,cAAgBh3B,EAAG62B,UAAU/zB,IAAO7C,EAAOg3B,UAChI,EAEAphC,EAAqBogC,mBAAqB,WACtC,IAAIj2B,EAAKvI,KACLwI,EAASD,EAAGC,OACZi3B,GAAa,EAOjB,OANIl3B,EAAG+U,QAAQ,SACXmiB,EAAaj3B,EAAOk3B,iBACbn3B,EAAG+U,QAAQ,SAClBmiB,EAAaj3B,EAAOm3B,gBAGjBF,CACX,EAEArhC,EAAqBqgC,uBAAyB,SAAUd,GACpD,IAAIp1B,EAAKvI,KACLwI,EAASD,EAAGC,OAEhB,OAAOm1B,IADSp1B,EAAG+U,QAAQ,SAAW9U,EAAOo3B,sBAAwBp3B,EAAOq3B,oBAEhF,EAEAzhC,EAAqBsgC,kBAAoB,WACrC,IAAIn2B,EAAKvI,KACLwI,EAASD,EAAGC,OACZjB,EAASiB,EAAOs3B,iBAMpB,OALIv3B,EAAG+U,QAAQ,SACX/V,EAASiB,EAAOu3B,mBACTx3B,EAAG+U,QAAQ,WAClB/V,EAASiB,EAAOw3B,oBAEbz4B,CACX,EAEAnJ,EAAqB0gC,qBAAuB,WAGxC,OAFS9+B,KACOwI,OACFy3B,mBAClB,EAEA7hC,EAAqB8hC,YAAc,WAC/B,IAAI33B,EAAKvI,KACT,OAAOuI,EAAG+U,QAAQ,SAAW/U,EAAGC,OAAO23B,YAAc,EACzD,EAEA/hC,EAAqB0f,oBAAsB,SAAUvT,GACjD,IAGI61B,EAHA73B,EAAKvI,KACLyI,EAAOF,EAAGE,KAGV43B,EAAgB93B,EAAG83B,cAAcp3B,KAAKV,GACtC+3B,EAAY/3B,EAAG+3B,UAAUr3B,KAAKV,GAC9Bg4B,EAAah4B,EAAGg4B,WAAWt3B,KAAKV,IAIpC63B,EAHgB33B,EAAK5F,OAAO,IAAMnM,EAAMU,WAAW6O,UAAU,IAAMvP,EAAMS,UAAU+O,KAAKqC,EAAG2yB,IAAI3wB,IAAUlJ,KAAK,SAAS,SAAUtD,GAC7H,OAAOsiC,EAActiC,GAAKwiC,EAAWxiC,EAAEmI,KAC3C,IAC6BE,QAAQO,OAAO,KAAKtF,KAAK,QAASg/B,IAClD15B,OAAO,KAAKtF,KAAK,QAASi/B,GACvCF,EAAaz5B,OAAO,QAAQtF,KAAK,KAAMkH,EAAG+U,QAAQ,SAAW,QAAU,SAAShX,MAAM,UAAW,GAAGA,MAAM,cAAe,UAAUA,MAAM,iBAAkB,OAG/J,EAEAlI,EAAqB8Y,QAAU,WAC3B,IAAI3O,EAAKvI,KACTuI,EAAGnP,KAAOmP,EAAGE,KAAK5F,OAAO,IAAMnM,EAAME,OAAO+P,OAAO,KAAKtF,KAAK,QAAS3K,EAAMU,WAAWiK,KAAK,YAAakH,EAAGM,aAAa,QACzHN,EAAGnP,KAAKuN,OAAO,QAAQtF,KAAK,QAAS3K,EAAMW,gBAAgBiP,MAAM,cAAe,UAAU9M,KAAK+O,EAAG23B,cACtG,EAEA9hC,EAAqBqjB,UAAY,SAAUhQ,EAAUuN,EAAiBpE,GAClE,IAII4lB,EACAC,EACAC,EANAn4B,EAAKvI,KACLC,EAAKsI,EAAGtI,GACRuI,EAASD,EAAGC,OACZC,EAAOF,EAAGE,KAIVq0B,EAAev0B,EAAG+U,QAAQ,SA2I9B,IA1IAkjB,EAAU/3B,EAAKxC,UAAU,IAAMvP,EAAM0C,MAAM6M,UAAU,IAAMvP,EAAMwC,KAAKgN,KAAKqC,EAAGo4B,QAAQ13B,KAAKV,KACnFnC,QAAQO,OAAO,QAAQtF,KAAK,QAASkH,EAAGq4B,SAAS33B,KAAKV,IAAKjC,MAAM,QAAQ,SAAUvI,GACvF,OAAOwK,EAAGqM,MAAM7W,EAAEmI,KACtB,IAAGI,MAAM,UAAU,SAAUvI,GACzB,OAAOyK,EAAOmZ,qBAAuBnZ,EAAOoxB,4BAA4B77B,GAAK,UAAY,IAC7F,IAAG+E,MAAK,SAAU/E,GACVwK,EAAGm0B,YAAY3+B,EAAEmI,QACjBnI,EAAEy+B,WAAaz+B,EAAE0+B,SAAWj0B,EAAOq0B,qBAEvC78B,KAAK6gC,SAAW9iC,CACpB,IACI++B,KACA4D,EAAmBj4B,EAAKxC,UAAU,IAAMvP,EAAM0C,MAAM6M,UAAU,IAAMvP,EAAMyC,cAAc+M,KAAKqC,EAAGo4B,QAAQ13B,KAAKV,KAC5FnC,QAAQO,OAAO,QAAQtF,KAAK,SAAS,SAAUtD,GAC5D,OAAOrH,EAAMyC,aAAe,IAAMzC,EAAMC,OAAS,IAAMD,EAAMC,OAAS,IAAMoH,EAAEmI,KAAKmF,EACvF,IACuD,IAAnD9C,EAAGgH,oBAAoBhH,EAAGrC,KAAKqE,SAAStM,OACxCyiC,EAAiBp6B,MAAM,UAAW,QAElCo6B,EAAiBp6B,MAAM,QAAQ,SAAUvI,GACrC,OAAOyK,EAAOs4B,cAAc7iC,OAAS,EAAIsK,EAAGuM,WAAW/W,EAAEmI,KAAK2K,OAAO,GAAGvU,OAASiM,EAAGqM,MAAM7W,EAAEmI,KAChG,IAAGI,MAAM,UAAWkC,EAAOu4B,qBAAuB,GAAK,QAAQj+B,MAAK,SAAU/E,GAC1E,IAAIijC,EAAa,EACbC,EAAgB,EAChB1hC,EAAI,EACJC,EAAI,EACJg2B,EAAY,GAChB,GAAIjtB,EAAGqN,gBAAgBzI,QAAQpP,EAAEmI,KAAKmF,IAAM,EAAG,CAC3C,IAAI8xB,EAAU50B,EAAG4zB,YAAYp+B,GACzBmjC,EAAkB34B,EAAGizB,cAAgBjzB,EAAGgH,oBAAoBhH,EAAGrC,KAAKqE,SAAStM,QAAUk/B,EAAQt5B,MAAQ,GACvGs9B,EAAYhE,EAAQV,SAAW/+B,KAAK6H,GAAK,EACzC67B,EAAiB74B,EAAGmzB,OAASwF,EAC7BG,EAAuBF,GAAgC,IAAnBC,EAAuB,EAAI,EAAIA,GACvEJ,EAAaz4B,EAAGmV,eAAiBnV,EAAGmzB,OAASwF,EAC7C3hC,EAAI7B,KAAKugC,IAAIoD,GAAwBD,EACrC5hC,EAAI9B,KAAK4H,IAAI+7B,GAAwBD,EACrC5L,EAAY,UAAwB,IAAZ2L,EAAkBzjC,KAAK6H,GAAK,KAAOhG,EAAI,KAAOC,EAAI,GAC9E,CACAS,EAAG4C,OAAO7C,MAAMqB,KAAK,CAAE9B,EAAGA,EAAGC,EAAGA,EAAGE,MAAOshC,EAAYrhC,OAAQshC,EAAezL,UAAWA,IAAalvB,MAAM,mBAAoB,OAAS06B,EAAaC,GAAiB,MAC1K,KAGRT,EAAQn/B,KAAK,aAAa,SAAUtD,GAChC,OAAQwK,EAAGm0B,YAAY3+B,EAAEmI,OAAS0U,EAAgB,WAAa,EACnE,IAAG1B,GAAG,YAAa1Q,EAAOmZ,oBAAsB,SAAU5jB,GACtD,IAAIo/B,EAASwD,EACTp4B,EAAGoM,aAIPwoB,EAAU50B,EAAG4zB,YAAYp+B,MAErB4iC,EAAUp4B,EAAG81B,iBAAiBlB,GAE9B50B,EAAG6uB,UAAU+F,EAAQj3B,KAAKmF,IAC1B9C,EAAGmK,IAAIokB,MAAMqG,EAAQj3B,KAAKmF,IAC1B9C,EAAG8uB,kBAAkB8F,EAAQj3B,KAAKmF,IAAI,GACtC9C,EAAGC,OAAO84B,iBAAiBX,EAAS3gC,MAE5C,EAAI,MAAMkZ,GAAG,YAAa1Q,EAAOmZ,oBAAsB,SAAU5jB,GAC7D,IAEIwjC,EAFApE,EAAU50B,EAAG4zB,YAAYp+B,GAGzBo/B,IACwCoE,EAAe,CAA7Ch5B,EAAG81B,iBAAiBlB,IAC9B50B,EAAGi5B,YAAYD,EAAcvhC,MAErC,EAAI,MAAMkZ,GAAG,WAAY1Q,EAAOmZ,oBAAsB,SAAU5jB,GAC5D,IAAIo/B,EAASwD,EACTp4B,EAAGoM,aAIPwoB,EAAU50B,EAAG4zB,YAAYp+B,MAErB4iC,EAAUp4B,EAAG81B,iBAAiBlB,GAE9B50B,EAAG+uB,YAAY6F,EAAQj3B,KAAKmF,IAC5B9C,EAAGmK,IAAIwkB,SACP3uB,EAAGk5B,eACHl5B,EAAGm5B,cACHn5B,EAAGC,OAAOm5B,gBAAgBhB,EAAS3gC,MAE3C,EAAI,MAAMkZ,GAAG,QAAS1Q,EAAOmZ,oBAAsB,SAAU5jB,EAAG4D,GAC5D,IACIg/B,EADAxD,EAAU50B,EAAG4zB,YAAYp+B,GAEzBo/B,IACAwD,EAAUp4B,EAAG81B,iBAAiBlB,GAC1B50B,EAAGq5B,aACHr5B,EAAGq5B,YAAY5hC,KAAM2gC,EAASh/B,GAElC4G,EAAGC,OAAOq5B,aAAa/kC,KAAKyL,EAAGmK,IAAKiuB,EAAS3gC,MAErD,EAAI,MAAM8C,MAAK,WACXyF,EAAGoM,YAAa,CACpB,IAAGzR,aAAauO,SAASA,GAAUqwB,UAAU,KAAK,SAAU/jC,GACxD,IACIgkC,EADA5E,EAAU50B,EAAG4zB,YAAYp+B,GAE7B,OAAKo/B,GAWD1V,MAAMznB,KAAK6gC,SAASrE,cACpBx8B,KAAK6gC,SAASrE,WAAa,GAE3B/U,MAAMznB,KAAK6gC,SAASpE,YACpBz8B,KAAK6gC,SAASpE,SAAWz8B,KAAK6gC,SAASrE,YAE3CuF,EAAc9hC,EAAG8hC,YAAY/hC,KAAK6gC,SAAU1D,GAC5Cn9B,KAAK6gC,SAAWkB,EAAY,GACrB,SAAUnf,GACb,IAAIof,EAAeD,EAAYnf,GAE/B,OADAof,EAAa97B,KAAOnI,EAAEmI,KACfqC,EAAGg1B,OAAOyE,GAAc,EACnC,GAtBW,WACH,MAAO,OACX,CAqBR,IAAG3gC,KAAK,YAAauZ,EAAgB,WAAa,IAAItU,MAAM,QAAQ,SAAUvI,GAC1E,OAAOwK,EAAGuM,WAAavM,EAAGuM,WAAW/W,EAAEmI,KAAK2K,OAAO,GAAGvU,OAASiM,EAAGqM,MAAM7W,EAAEmI,KAAKmF,GACnF,IACCvO,KAAKyL,EAAG2e,QAAQ,WACb3e,EAAGoM,YAAa,CACpB,IACA6rB,EAAQh6B,OAAOtD,aAAauO,SAASuN,GAAiB1Y,MAAM,UAAW,GAAGG,SAC1EgC,EAAKxC,UAAU,IAAMvP,EAAMS,UAAU0L,OAAO,QAAQyD,MAAM,UAAW,GAAGjF,KAAK,SAAS,SAAUtD,GAC5F,OAAOwK,EAAGm0B,YAAY3+B,EAAEmI,MAAQxP,EAAMgD,WAAa,EACvD,IAAGF,KAAK+O,EAAGg2B,gBAAgBt1B,KAAKV,IAAKlH,KAAK,YAAakH,EAAGm1B,qBAAqBz0B,KAAKV,IAAKjC,MAAM,aAAa,SAAUvI,GAClH,OAAOwK,EAAGm0B,YAAY3+B,EAAEmI,OAA4D,IAAnDqC,EAAGgH,oBAAoBhH,EAAGrC,KAAKqE,SAAStM,OAAeP,KAAKukC,MAAM15B,EAAGmzB,OAAS,GAAK,KAAO,EAC/H,IAAGx4B,aAAauO,SAASA,GAAUnL,MAAM,WAAW,SAAUvI,GAC1D,OAAOwK,EAAG0V,eAAelgB,EAAEmI,KAAKmF,KAAO9C,EAAGk1B,UAAU1/B,EAAEmI,MAAQ,EAAI,CACtE,IACAuC,EAAK5F,OAAO,IAAMnM,EAAMW,gBAAgBiP,MAAM,UAAWiC,EAAG+U,QAAQ,UAAYwf,EAAe,EAAI,GAE/FA,EAAc,CACd,IAAIj5B,EAAQ,GACZ48B,EAAgBl4B,EAAGnP,KAAKyJ,OAAO,KAAOnM,EAAMY,qBAAqB2O,UAAU,QAAUvP,EAAMY,qBAAqB4O,KAAKqC,EAAGrC,KAAKqE,UAC/GnE,QAAQO,OAAO,QAC7B85B,EAAcp/B,KAAK,SAAS,SAAUtD,EAAG4D,GACrC,OAAOjL,EAAMY,oBAAsB,IAAMZ,EAAMY,oBAAsB,IAAMqK,CAC/E,IAAGN,KAAK,KAAK,SAAU6gC,GACnB,GAAI35B,EAAGqN,gBAAgBzI,QAAQ+0B,EAAG72B,KAAO,EACrC,MAAO,QAGX,IAAItN,EAAI,CACJmI,KAAM,CAAC,CAAE5J,MAAOkM,EAAOo0B,YACvBJ,WAAYh0B,EAAOq0B,oBACnBJ,UAAW,EAAIj0B,EAAOq0B,qBAAuBr0B,EAAO+U,iBAAmB7f,KAAK6H,GAAK,GACjF1B,MAAOA,KAEX,OAAO0E,EAAGg1B,OAAOx/B,GAAG,GAAM,EAC9B,IACA0iC,EAAcj6B,OAAOC,SAErB8B,EAAGnP,KAAKyJ,OAAO,IAAMnM,EAAMa,oBAAoB8J,KAAK,KAAM,SAAS7H,KAAKgP,EAAO25B,iBAAmB35B,EAAO45B,YAAc,IACvH75B,EAAGnP,KAAKyJ,OAAO,IAAMnM,EAAMe,mBAAmB4J,KAAK,MAAO,GAAKkH,EAAGqzB,aAAerzB,EAAGmzB,OAASnzB,EAAGqzB,cAAgBpzB,EAAO+U,iBAAmB,EAAI,IAAM,MAAMlc,KAAK,KAAM,SAAS7H,KAAKgP,EAAO25B,iBAAmB55B,EAAGq2B,mBAAmBp2B,EAAOm0B,WAAW,GAAS,IAC9Pp0B,EAAGnP,KAAKyJ,OAAO,IAAMnM,EAAMc,mBAAmB6J,KAAK,KAAMkH,EAAGqzB,aAAerzB,EAAGmzB,OAASnzB,EAAGqzB,cAAgBpzB,EAAO+U,iBAAmB,EAAI,GAAK,MAAMlc,KAAK,KAAM,SAAS7H,KAAKgP,EAAO25B,iBAAmB55B,EAAGq2B,mBAAmBp2B,EAAOo0B,WAAW,GAAQ,GAC1P,CACJ,EACAx+B,EAAqB+Y,UAAY,WAC7B,IAAI/d,EAAO4G,KAAK5G,KACZ4G,KAAKsd,QAAQ,WACblkB,EAAKuN,OAAO,KAAKtF,KAAK,QAAS3K,EAAMY,qBACrC8B,EAAKuN,OAAO,QAAQtF,KAAK,QAAS3K,EAAMa,oBAAoB+O,MAAM,cAAe,UAAUA,MAAM,iBAAkB,QACnHlN,EAAKuN,OAAO,QAAQtF,KAAK,QAAS3K,EAAMe,mBAAmB6O,MAAM,cAAe,UAAUA,MAAM,iBAAkB,QAClHlN,EAAKuN,OAAO,QAAQtF,KAAK,QAAS3K,EAAMc,mBAAmB8O,MAAM,cAAe,UAAUA,MAAM,iBAAkB,QAE1H,EACAlI,EAAqBof,oBAAsB,WACvC,OAAOxd,KAAKwI,OAAO25B,iBAAmB,GAAK,CAC/C,EAEA/jC,EAAqBo6B,UAAY,SAAUK,GACvC,IAAK,IAAIl3B,EAAI,EAAGA,EAAIk3B,EAAI56B,OAAQ0D,IAC5B,KAAMk3B,EAAIl3B,KAAM3B,KAAK6S,OACjB,OAAO,EAGf,OAAO,CACX,EACAzU,EAAqBikC,SAAW,SAAUh3B,EAAI1U,GAC1CqJ,KAAK6S,MAAMxH,GAAMrL,KAAKsiC,YAAY3rC,EACtC,EACAyH,EAAqBs6B,UAAY,SAAUG,GACvC,IACIl3B,EADA4I,EAAU,GAEd,IAAK5I,EAAI,EAAGA,EAAIk3B,EAAI56B,OAAQ0D,IACpBk3B,EAAIl3B,KAAM3B,KAAK6S,OACftI,EAAQzI,KAAK9B,KAAKsiC,YAAYtiC,KAAK6S,MAAMgmB,EAAIl3B,MAGrD,OAAO4I,CACX,EAEAnM,EAAqBqN,aAAe,SAAU9J,GAC1C,IAAI6G,EAASxI,KAAKwI,OAClB,OAAO7G,EAAI6G,EAAOwb,kBAAkB/lB,OAASuK,EAAOwb,kBAAkBriB,GAAKA,CAC/E,EAEAvD,EAAqBmkC,cAAgB,SAAUC,EAAQrO,GACnD,MAAO,IAAMqO,EAAS,IAAMA,EAASxiC,KAAKi5B,wBAAwB9E,EACtE,EACA/1B,EAAqBqkC,UAAY,SAAU1kC,GACvC,OAAOiC,KAAKuiC,cAAc7rC,EAAM8C,KAAMuE,EAAE8F,MAC5C,EACAzF,EAAqBskC,WAAa,SAAU3kC,GACxC,OAAOiC,KAAKuiC,cAAc7rC,EAAM+C,MAAOsE,EAAEsN,GAC7C,EACAjN,EAAqBukC,WAAa,SAAU5kC,GACxC,OAAOiC,KAAKuiC,cAAc7rC,EAAMgC,MAAOqF,EAAE8F,MAC7C,EACAzF,EAAqBwkC,YAAc,SAAU7kC,GACzC,OAAOiC,KAAKuiC,cAAc7rC,EAAMiC,OAAQoF,EAAEsN,GAC9C,EACAjN,EAAqBykC,UAAY,SAAU9kC,GACvC,OAAOiC,KAAK2iC,WAAW5kC,GAAKiC,KAAKuiC,cAAc7rC,EAAMkC,KAAMmF,EAAEsN,GACjE,EACAjN,EAAqB0kC,WAAa,SAAU/kC,GACxC,OAAOiC,KAAK4iC,YAAY7kC,GAAKiC,KAAKuiC,cAAc7rC,EAAMmC,MAAOkF,EAAEsN,GACnE,EACAjN,EAAqB2kC,YAAc,SAAUhlC,GACzC,OAAOiC,KAAK2iC,WAAW5kC,GAAKiC,KAAKuiC,cAAc7rC,EAAMsC,OAAQ+E,EAAE8F,MACnE,EACAzF,EAAqB4kC,aAAe,SAAUjlC,GAC1C,OAAOiC,KAAK4iC,YAAY7kC,GAAKiC,KAAKuiC,cAAc7rC,EAAMuC,QAAS8E,EAAEsN,GACrE,EACAjN,EAAqB6kC,SAAW,SAAUllC,GACtC,OAAOiC,KAAK2iC,WAAW5kC,GAAKiC,KAAKuiC,cAAc7rC,EAAMoC,IAAKiF,EAAE8F,MAChE,EACAzF,EAAqB8kC,UAAY,SAAUnlC,GACvC,OAAOiC,KAAK4iC,YAAY7kC,GAAKiC,KAAKuiC,cAAc7rC,EAAMqC,KAAMgF,EAAEsN,GAClE,EACAjN,EAAqBwiC,SAAW,SAAU7iC,GACtC,OAAOiC,KAAK2iC,WAAW5kC,EAAEmI,MAAQlG,KAAKuiC,cAAc7rC,EAAMwC,IAAK6E,EAAEmI,KAAKmF,GAC1E,EACAjN,EAAqBkiC,UAAY,SAAUviC,GACvC,OAAOiC,KAAK4iC,YAAY7kC,EAAEmI,MAAQlG,KAAKuiC,cAAc7rC,EAAM0C,KAAM2E,EAAEmI,KAAKmF,GAC5E,EACAjN,EAAqB+kC,UAAY,SAAUplC,GACvC,OAAOiC,KAAK2iC,WAAW5kC,GAAKiC,KAAKuiC,cAAc7rC,EAAM2C,KAAM0E,EAAEsN,GACjE,EACAjN,EAAqBglC,WAAa,SAAUrlC,GACxC,OAAOiC,KAAK4iC,YAAY7kC,GAAKiC,KAAKuiC,cAAc7rC,EAAM4C,MAAOyE,EAAEsN,GACnE,EACAjN,EAAqBilC,YAAc,SAAUtlC,EAAG4D,GAC5C,OAAO3B,KAAKuiC,cAAc7rC,EAAM0B,OAAQuJ,GAAK,KAAO,UAAW5D,EAAIA,EAAS,MAAI,GACpF,EACAK,EAAqBklC,WAAa,SAAUvlC,GACxC,OAAOiC,KAAKuiC,cAAc7rC,EAAMkB,UAAWmG,EAAE8F,MACjD,EACAzF,EAAqBmlC,YAAc,SAAUl4B,GACzC,IAAI9C,EAAKvI,KACLwjC,EAAwBj7B,EAAGC,OAAO8vB,aAAajtB,GAC/Co4B,EAAkB,GAItB,OAHID,IACAC,EAAkB,IAAM/sC,EAAMC,OAAS,IAAM6sC,GAE1Cj7B,EAAGg6B,cAAc7rC,EAAMC,OAAQ0U,GAAMo4B,CAChD,EACArlC,EAAqBmiC,WAAa,SAAUxiC,GACxC,OAAOiC,KAAK0jC,aAAa3lC,GAAKiC,KAAK2jC,eAAe5lC,EACtD,EACAK,EAAqBslC,aAAe,SAAU3lC,GAC1C,MAAO,KAAOiC,KAAK8V,iBAAiB3I,QAAQpP,EAAEsN,KAAO,EAAI3U,EAAMwB,QAAU,GAC7E,EACAkG,EAAqBulC,eAAiB,SAAU5lC,GAC5C,MAAO,KAAOiC,KAAK+V,mBAAmB5I,QAAQpP,EAAEsN,KAAO,EAAI3U,EAAMyB,UAAY,GACjF,EACAiG,EAAqBwlC,eAAiB,SAAU7lC,GAC5C,OAAOrH,EAAMO,UAAY+I,KAAKujC,YAAYxlC,EAAEsN,GAChD,EACAjN,EAAqBylC,eAAiB,SAAU9lC,GAC5C,OAAOrH,EAAMG,UAAYmJ,KAAKujC,YAAYxlC,EAAEsN,GAChD,EACAjN,EAAqB0lC,cAAgB,SAAU/lC,GAC3C,OAAOrH,EAAMK,SAAWiJ,KAAKujC,YAAYxlC,EAAEsN,GAC/C,EACAjN,EAAqBiiC,cAAgB,SAAUtiC,GAC3C,OAAOrH,EAAMS,SAAW6I,KAAKujC,YAAYxlC,EAAEmI,KAAKmF,GACpD,EACAjN,EAAqB66B,wBAA0B,SAAU9E,GACrD,OAAOA,GAAyB,IAAbA,GAAkB,IAAMA,GAAUp1B,QAAQ,2CAA4C,KAAO,EACpH,EACAX,EAAqB2lC,eAAiB,SAAU14B,EAAIm3B,GAChD,OAAQA,GAAU,IAAM,IAAM9rC,EAAMC,OAASqJ,KAAKi5B,wBAAwB5tB,EAC9E,EACAjN,EAAqB64B,gBAAkB,SAAU4B,EAAK2J,GAClD,IAAIj6B,EAAKvI,KAET,OADA64B,EAAMA,GAAO,IACF56B,OAAS46B,EAAIl1B,KAAI,SAAU0H,GAClC,OAAO9C,EAAGw7B,eAAe14B,EAAIm3B,EACjC,IAAK,IACT,EACApkC,EAAqB4lC,eAAiB,SAAU34B,GAC5C,MAAO,IAAM3U,EAAMoE,WAAakF,KAAKi5B,wBAAwB5tB,EACjE,EACAjN,EAAqBq5B,gBAAkB,SAAUoB,GAC7C,IAAItwB,EAAKvI,KACT,OAAO64B,GAAOA,EAAI56B,OAAS46B,EAAIl1B,KAAI,SAAU0H,GACzC,OAAO9C,EAAGy7B,eAAe34B,EAC7B,IAAK,IACT,EAEAjN,EAAqB+V,YAAc,SAAU9I,GAEzC,MAAO,QADKsH,OAAOsxB,UAAUC,WAAWC,cAAch3B,QAAQ,YAAc,EACnD,GAAKyK,SAASwsB,IAAI//B,MAAM,KAAK,IAAM,IAAMgH,EAAK,GAC3E,EACAjN,EAAqBmb,WAAa,SAAU8qB,EAAQh5B,GAChD,OAAOg5B,EAAO19B,OAAO,YAAYtF,KAAK,KAAMgK,GAAI1E,OAAO,OAC3D,EACAvI,EAAqBkmC,aAAe,SAAUn2B,GAE1C,IAAI7G,EAAO5J,KAAK+G,IAAI,GAAIzE,KAAKyc,OAAOnV,MACpC,OAAO6G,IAAkB,EAAI7G,KAAUA,EAAO,EAClD,EACAlJ,EAAqBmmC,aAAe,SAAUp2B,GAC1C,OAAOA,GAAiB,IAAMnO,KAAKyc,OAAOtV,GAC9C,EACA/I,EAAqBmmB,cAAgB,WACjC,IAAIhc,EAAKvI,KACT,OAAOuI,EAAG+7B,cAAc/7B,EAAGC,OAAOO,aACtC,EACA3K,EAAqBomB,cAAgB,WACjC,IAAIjc,EAAKvI,KACT,OAAOuI,EAAGg8B,cAAch8B,EAAGC,OAAOO,aACtC,EACA3K,EAAqBumB,cAAgB,WACjC,IAAIpc,EAAKvI,KACT,OAAOuI,EAAGC,OAAOU,cAAgB,EAAIX,EAAG+7B,aAAa/7B,EAAGC,OAAOO,aACnE,EACA3K,EAAqBwmB,cAAgB,WACjC,IAAIrc,EAAKvI,KACT,OAAOuI,EAAGg8B,aAAah8B,EAAGC,OAAOO,aACrC,EACA3K,EAAqBomC,iBAAmB,SAAUr2B,GAC9C,IAAI5F,EAAKvI,KACLsH,EAAO5J,KAAK+G,IAAI,GAAI8D,EAAGkU,OAAOnV,MAC9BF,EAAQ1J,KAAK+G,IAAI,GAAI8D,EAAGkU,OAAOrV,OAEnC,OAAO+G,EAAgB5F,EAAG7I,MAAQ,EAAI4H,EAAOF,EAAQmB,EAAGkU,OAAOnV,KAAO,EAC1E,EACAlJ,EAAqBqmC,kBAAoB,SAAUt2B,GAE/C,OAAQA,EAAgBnO,KAAKyc,OAAOpV,OAASrH,KAAKyc,OAAOtV,IAAMnH,KAAKL,QAAU,EAClF,EACAvB,EAAqBqmB,kBAAoB,WACrC,IAAIlc,EAAKvI,KACT,OAAOuI,EAAGi8B,kBAAkBj8B,EAAGC,OAAOO,aAC1C,EACA3K,EAAqBsmB,mBAAqB,WACtC,IAAInc,EAAKvI,KACT,OAAOuI,EAAGk8B,mBAAmBl8B,EAAGC,OAAOO,aAC3C,EACA3K,EAAqBymB,kBAAoB,WACrC,IAAItc,EAAKvI,KACT,OAAOuI,EAAGi8B,iBAAiBj8B,EAAGC,OAAOO,eAAiBR,EAAGC,OAAOU,aAAe,GAAK,EACxF,EACA9K,EAAqB0mB,mBAAqB,WACtC,IAAIvc,EAAKvI,KACT,OAAOuI,EAAGk8B,kBAAkBl8B,EAAGC,OAAOO,aAC1C,EAEA3K,EAAqByW,cAAgB,WACjC,IAAItM,EAAKvI,KACLwI,EAASD,EAAGC,OACZvI,EAAKsI,EAAGtI,GACRs0B,EAAS/rB,EAAO+vB,YAChBmM,EAAUvmC,EAASqK,EAAOs4B,eAAiBt4B,EAAOs4B,cAAgB7gC,EAAGC,MAAMykC,aAAavkC,QACxF+mB,EAAW3e,EAAOo8B,WAClB/L,EAAM,GAEV,OAAO,SAAU96B,GACb,IACI6W,EADAvJ,EAAKtN,EAAEsN,IAAMtN,EAAEmI,MAAQnI,EAAEmI,KAAKmF,IAAMtN,EAmBxC,OAfIw2B,EAAOlpB,aAAeyc,SACtBlT,EAAQ2f,EAAOlpB,GAAItN,GAGdw2B,EAAOlpB,GACRuJ,EAAQ2f,EAAOlpB,IAIPwtB,EAAI1rB,QAAQ9B,GAAM,GAClBwtB,EAAI/2B,KAAKuJ,GAEbuJ,EAAQ8vB,EAAQ7L,EAAI1rB,QAAQ9B,GAAMq5B,EAAQzmC,QAC1Cs2B,EAAOlpB,GAAMuJ,GAElBuS,aAAoBW,SAAWX,EAASvS,EAAO7W,GAAK6W,CAC/D,CACJ,EACAxW,EAAqB2W,mBAAqB,WACtC,IACIvM,EADKxI,KACOwI,OACZ+rB,EAAS/rB,EAAOs4B,cAChB+D,EAAYr8B,EAAOs8B,gBACnBC,EAA6B,UAAnBF,EAAUn0B,KACpBG,EAASg0B,EAAUh0B,QAAUg0B,EAAUh0B,OAAO5S,OAAS4mC,EAAUh0B,OAAS,GAC1EpM,EAAMogC,EAAUpgC,KAAO,IAC3B,OAAOtG,EAASqK,EAAOs8B,iBAAmB,SAAUxoC,GAChD,IAAIqF,EAEAiT,EAAQ2f,EAAOA,EAAOt2B,OAAS,GACnC,IAAK0D,EAAI,EAAGA,EAAIkP,EAAO5S,OAAQ0D,IAE3B,IADIojC,EAAUzoC,EAAgB,IAARA,EAAcmI,GAC5BoM,EAAOlP,GAAI,CACfiT,EAAQ2f,EAAO5yB,GACf,KACJ,CAEJ,OAAOiT,CACX,EAAI,IACR,EAEAxW,EAAqBwU,iBAAmB,WACpC,IAAIpK,EAAS,CACTkP,OAAQ,SACR2B,mBAAetW,EACf6wB,gBAAY7wB,EACZ8wB,iBAAa9wB,EACbiiC,kBAAcjiC,EACdkiC,mBAAeliC,EACfmiC,iBAAaniC,EACboiC,oBAAgBpiC,EAChBojB,aAAa,EACbnN,cAAc,EACdosB,iBAAariC,EACbuX,iBAAiB,EACjB8F,cAAc,EACdwa,YAAa,WAAwB,EACrCyK,iBAAkB,WAA6B,EAC/CC,eAAgB,WAA2B,EAC3CrK,gBAAYl4B,EACZi4B,gBAAYj4B,EACZwiC,sBAAsB,EACtB5jB,qBAAqB,EACrBxI,YAAa,WAAwB,EACrCC,WAAY,WAAuB,EACnC8M,SAAU,WAAqB,EAC/BM,UAAW,WAAsB,EACjC7L,OAAQ,WAAmB,EAC3BmI,WAAY,WAAuB,EACnC5E,oBAAqB,IACrBmF,YAAQtgB,EACRugB,QAAS,CAAC,EACViE,aAAc,WACdtS,iBAAiB,EACjBuwB,YAAY,EACZC,iBAAkB,SAA0Bp6B,GACxC,OAAOA,CACX,EACAq6B,WAAY,CAAC,EACbpN,aAAc,CAAC,EACfP,YAAa,GACbzsB,UAAW,CAAC,EACZq6B,eAAW5iC,EACX6iC,WAAY,CAAC,EACbC,YAAa,CAAC,EACdC,WAAY,OACZC,aAAc,CAAC,EACfnB,gBAAY7hC,EACZw1B,YAAa,CAAC,EACdngB,WAAW,EACXF,iBAAanV,EACbs2B,wBAAwB,EACxBI,wBAAwB,EACxBG,4BAA6B,WACzB,OAAO,CACX,EACAoM,yBAAyB,EACzBC,0BAA0B,EAC1BpE,aAAc,WAAyB,EACvCP,iBAAkB,WAA6B,EAC/CK,gBAAiB,WAA4B,EAC7CuE,gBAAiB,WAA4B,EAC7CC,kBAAmB,WAA8B,EACjDnzB,cAAUjQ,EACVoQ,kBAAcpQ,EACduQ,eAAWvQ,EACXyQ,eAAWzQ,EACX2Q,kBAAc3Q,EACdmQ,mBAAenQ,EACfqQ,eAAWrQ,EAEXge,sBAAuB,GAEvB5E,eAAe,EACfC,qBAAsB,GACtBgqB,sBAAsB,EACtBC,iBAAkB,WAA6B,EAE/CvF,cAAe,GACfgE,gBAAiB,CAAC,EAElB7kB,aAAa,EACb1H,aAAa,EACbrC,gBAAiB,SACjBG,oBAAqB,WACrBiwB,eAAgB,GAChBC,eAAgB,EAChBC,uBAAmBzjC,EACnB0jC,yBAAqB1jC,EACrB2jC,6BAAyB3jC,EACzB4jC,4BAAwB5jC,EACxB6jC,gBAAgB,EAChBC,eAAgB,EAChBC,uBAAwB,GACxBC,wBAAyB,GAEzBh+B,cAAc,EACdD,aAAa,EACbqa,YAAa,UACbhO,kBAAkB,EAClB6O,kBAAmB,GACnB5Z,sBAAsB,EACtBuB,wBAAoB5I,EACpBsH,oBAAqB,CAAC,EACtBmW,wBAAyB,GACzB/V,uBAAmB1H,EACnByH,iBAAiB,EACjBwB,mBAAoB,KACpB/B,mBAAoB,EACpB+8B,mBAAmB,EACnBn9B,uBAAuB,EACvBE,yBAA0B,EAC1BC,kBAAmB,KACnBmpB,gBAAYpwB,EACZuwB,gBAAYvwB,EACZkkC,eAAgB,CAAC,EACjBn4B,mBAAe/L,EACfwX,mBAAexX,EACf6J,aAAc,CAAC,EACfjE,kBAAc5F,EACdqG,aAAa,EACbma,iBAAaxgB,EACbqwB,gBAAYrwB,EACZwwB,gBAAYxwB,EACZmkC,iBAAiB,EACjBC,mBAAepkC,EACfmG,kBAAcnG,EACd2J,aAAc,CAAC,EACfgD,wBAAoB3M,EACpBqkC,mBAAmB,EACnBl7B,mBAAoB,KACpBnB,mBAAoB,EACpBuV,uBAAmBvd,EACnBmI,4BAAwBnI,EACxBoI,+BAA2BpI,EAC3BskC,eAAgB,CAAC,EACjBC,oBAAgBvkC,EAChBwG,cAAc,EACd8pB,iBAAatwB,EACbywB,iBAAazwB,EACbwkC,kBAAkB,EAClBC,oBAAgBzkC,EAChBkM,mBAAelM,EACf4J,cAAe,CAAC,EAChBkD,yBAAqB9M,EACrB0kC,oBAAoB,EACpBp7B,oBAAqB,KACrBkU,wBAAoBxd,EACpB2kC,gBAAiB,CAAC,EAClBC,qBAAiB5kC,EAEjB6kC,aAAa,EACbC,YAAa,OACblQ,aAAc,GACdmQ,aAAa,EAGbjQ,aAAc,GACdkQ,aAAc,GACdC,iBAAiB,EACjB7tB,kBAAkB,EAElByJ,YAAY,EACZqkB,QAAS,IACTC,kBAAmB,GACnBC,4BAA4B,EAC5BC,0BAAsBrlC,EACtBslC,oBAAgBtlC,EAEhBulC,kBAAkB,EAClBC,eAAgB,OAEhBC,eAAWzlC,EACX0lC,gBAAiB,GACjBC,mBAAe3lC,EACf4lC,eAAe,EACfC,UAAW,EAEXC,gBAAgB,EAChBC,YAAY,EAEZnJ,gBAAgB,EAChBG,sBAAkB/8B,EAClB88B,oBAAqB,IACrB7B,qBAAiBj7B,EACjBy8B,WAAY,CAAC,EACbH,oBAAqB,GAErB9hB,kBAAkB,EAClB4kB,kBAAkB,EAClBpB,sBAAsB,EACtBhB,wBAAoBh9B,EACpB45B,UAAW,EACXC,UAAW,IACXC,qBAAsB,EAAIn/B,KAAK6H,GAAK,EACpC06B,yBAAqBl9B,EACrBq/B,iBAAar/B,EACbu4B,iBAAav4B,EACb04B,oBAAqB,EACrB8D,aAAc,CAAC,EACfJ,sBAAuB,GAEvBO,kBAAkB,EAClBM,wBAAoBj9B,EACpB68B,sBAAuB,IACvB7B,uBAAmBh7B,EACnBw4B,iBAAax4B,EACbo9B,YAAa,GACbb,aAAc,CAAC,EACfJ,sBAAuB,GAEvB6J,0BAA2B,WAE3B1wC,QAAS,GAET2wC,cAAc,EACdC,iBAAiB,EACjBC,mBAAenmC,EACfomC,0BAAsBpmC,EACtBqmC,yBAAqBrmC,EACrBsmC,0BAAsBtmC,EACtBumC,sBAAkBvmC,EAClBwmC,iBAAkB,SAA0BxrC,EAAGyrC,EAAoBC,EAAoB70B,GACnF,OAAO5U,KAAK0pC,kBAAoB1pC,KAAK0pC,kBAAkB3rC,EAAGyrC,EAAoBC,EAAoB70B,GAAS,EAC/G,EACA+0B,mBAAmB,EACnBC,eAAgB,EAChBC,sBAAuB,CAAE1iC,IAAK,MAAOG,KAAM,QAC3C+yB,eAAgB,WAA2B,EAC3CC,eAAgB,WAA2B,EAE3CwP,gBAAY/mC,EACZgnC,cAAe,CACX5iC,IAAK,EACLC,MAAO,EACPC,OAAQ,EACRC,KAAM,GAEV0iC,eAAgB,cAOpB,OAJA5tC,OAAO8B,KAAK8B,KAAKiqC,kBAAkBrrC,SAAQ,SAAUL,GACjDiK,EAAOjK,GAAOyB,KAAKiqC,iBAAiB1rC,EACxC,GAAGyB,MAEIwI,CACX,EACApK,EAAqB6rC,iBAAmB,CAAC,EAEzC7rC,EAAqBiU,WAAa,SAAU7J,GACxC,IACI7R,EACAuH,EACAgsC,EAHAC,EAAcnqC,KAAKwI,OAIvB,SAAS4hC,IACL,IAAI7rC,EAAML,EAAKmsC,QAEf,OAAI9rC,GAAO5H,GAA8E,iBAAjD,IAAXA,EAAyB,YAAc4E,EAAQ5E,KAAyB4H,KAAO5H,GACxGA,EAASA,EAAO4H,GACT6rC,KACC7rC,OAGR,EAFO5H,CAIf,CACAyF,OAAO8B,KAAKisC,GAAavrC,SAAQ,SAAUL,GACvC5H,EAAS6R,EACTtK,EAAOK,EAAI8F,MAAM,KACjB6lC,EAAOE,IAEH5sC,EAAU0sC,KACVC,EAAY5rC,GAAO2rC,EAE3B,GACJ,EAEA9rC,EAAqB6U,iBAAmB,SAAUq3B,EAAKC,EAAUC,EAAStsC,EAAMmpB,GAC5E,IAAI9e,EAAKvI,KACLob,EAAOmvB,GAAsB,MAC7BE,EAAMliC,EAAGtI,GAAGyqC,IAAIJ,GAChBE,GACApuC,OAAO8B,KAAKssC,GAAS5rC,SAAQ,SAAU+rC,GACnCF,EAAIE,OAAOA,EAAQH,EAAQG,GAC/B,IAEJF,EAAIjgB,KAAI,SAAUzE,EAAO7f,GACrB,IAAInI,EACA6sC,EAAe1kC,EAAK2kC,UAAY3kC,EAAK4kC,aACzC,IAAK5kC,EACD,MAAM,IAAIyN,MAAMoS,EAAMglB,YAAc,IAAMhlB,EAAMilB,OAAS,KAAOjlB,EAAMklB,WAAa,KAGnFltC,EADS,SAATqd,EACI7S,EAAGgL,kBAAkB23B,KAAK1jB,MAAMojB,GAAe1sC,GACnC,QAATkd,EACH7S,EAAG4iC,iBAAiBP,GAEpBriC,EAAG6iC,iBAAiBR,GAE5BvjB,EAAKvqB,KAAKyL,EAAIxK,EAClB,GACJ,EACAK,EAAqBitC,iBAAmB,SAAUC,EAAKC,GACnD,IACIxtC,EADAm3B,EAAOqW,EAAOC,UAAUF,GAU5B,OARoB,IAAhBpW,EAAKj3B,QACLF,EAAI,CAAC,CAAC,GACNm3B,EAAK,GAAGt2B,SAAQ,SAAUyM,GACtBtN,EAAE,GAAGsN,GAAM,IACf,KAEAtN,EAAIwtC,EAAO/jB,MAAM8jB,GAEdvtC,CACX,EACAK,EAAqBgtC,iBAAmB,SAAUK,GAC9C,OAAOzrC,KAAKqrC,iBAAiBI,EAAKzrC,KAAKC,GAAGwrC,IAC9C,EACArtC,EAAqB+sC,iBAAmB,SAAUO,GAC9C,OAAO1rC,KAAKqrC,iBAAiBK,EAAK1rC,KAAKC,GAAGyrC,IAC9C,EACAttC,EAAqBmV,kBAAoB,SAAU0hB,EAAM/2B,GACrD,IAEIytC,EACAzlC,EAHAqC,EAAKvI,KACL4rC,EAAW,GA+Bf,OA5BI1tC,GAEIA,EAAKqB,GACLosC,EAAaztC,EAAK5B,MAAMkH,OAAOtF,EAAKqB,GACpCgJ,EAAGC,OAAO6a,OAASnlB,EAAKqB,GAExBosC,EAAaztC,EAAK5B,MAEtBsvC,EAAS9pC,KAAK6pC,GACd1W,EAAKr2B,SAAQ,SAAUzB,GACnB,IAAI0uC,EAAU,GACdF,EAAW/sC,SAAQ,SAAUL,GAEzB,IAAItB,EAAIsL,EAAGujC,gBAAgB3uC,EAAGoB,GAC1BhB,EAAYN,KACZA,EAAI,MAER4uC,EAAQ/pC,KAAK7E,EACjB,IACA2uC,EAAS9pC,KAAK+pC,EAClB,IACA3lC,EAAOqC,EAAGkL,kBAAkBm4B,KAE5BxvC,OAAO8B,KAAK+2B,GAAMr2B,SAAQ,SAAUL,GAChCqtC,EAAS9pC,KAAK,CAACvD,GAAKiF,OAAOyxB,EAAK12B,IACpC,IACA2H,EAAOqC,EAAGqL,qBAAqBg4B,IAE5B1lC,CACX,EACA9H,EAAqB0tC,gBAAkB,SAAUC,EAAQ9sC,GAIrD,IADA,IAAI+sC,GADJ/sC,GADAA,EAAOA,EAAKF,QAAQ,aAAc,QACtBA,QAAQ,MAAO,KACNsF,MAAM,KAClB1C,EAAI,EAAGA,EAAIqqC,EAAU/tC,SAAU0D,EAAG,CACvC,IAAIsqC,EAAID,EAAUrqC,GAClB,KAAIsqC,KAAKF,GAGL,OAFAA,EAASA,EAAOE,EAIxB,CACA,OAAOF,CACX,EAOA3tC,EAAqBqV,kBAAoB,SAAUyhB,GAI/C,IAHA,IAAIgX,EAAU,GACVhuC,EAAOg3B,EAAK,GAEPvzB,EAAI,EAAGA,EAAIuzB,EAAKj3B,OAAQ0D,IAAK,CAElC,IADA,IAAIwqC,EAAS,CAAC,EACL/W,EAAI,EAAGA,EAAIF,EAAKvzB,GAAG1D,OAAQm3B,IAAK,CACrC,GAAI73B,EAAY23B,EAAKvzB,GAAGyzB,IACpB,MAAM,IAAIzhB,MAAM,0CAA4ChS,EAAI,IAAMyzB,EAAI,MAE9E+W,EAAOjuC,EAAKk3B,IAAMF,EAAKvzB,GAAGyzB,EAC9B,CACA8W,EAAQpqC,KAAKqqC,EACjB,CACA,OAAOD,CACX,EAOA9tC,EAAqBwV,qBAAuB,SAAUuhB,GAGlD,IAFA,IAAI+W,EAAU,GAELvqC,EAAI,EAAGA,EAAIwzB,EAAQl3B,OAAQ0D,IAEhC,IADA,IAAIpD,EAAM42B,EAAQxzB,GAAG,GACZyzB,EAAI,EAAGA,EAAID,EAAQxzB,GAAG1D,OAAQm3B,IAAK,CAIxC,GAHI73B,EAAY2uC,EAAQ9W,EAAI,MACxB8W,EAAQ9W,EAAI,GAAK,CAAC,GAElB73B,EAAY43B,EAAQxzB,GAAGyzB,IACvB,MAAM,IAAIzhB,MAAM,0CAA4ChS,EAAI,IAAMyzB,EAAI,MAE9E8W,EAAQ9W,EAAI,GAAG72B,GAAO42B,EAAQxzB,GAAGyzB,EACrC,CAGJ,OAAO8W,CACX,EAEA9tC,EAAqB6Z,qBAAuB,SAAU/R,EAAMkmC,GACxD,IAII7hC,EAJAhC,EAAKvI,KACLwI,EAASD,EAAGC,OACZqwB,EAAMtwB,EAAGtI,GAAG/B,KAAKgI,EAAK,IAAIiS,OAAO5P,EAAG8jC,OAAQ9jC,GAC5CyP,EAAKzP,EAAGtI,GAAG/B,KAAKgI,EAAK,IAAIiS,OAAO5P,EAAG+jC,IAAK/jC,GAgH5C,OA5GAswB,EAAIj6B,SAAQ,SAAUyM,GAClB,IAAIkhC,EAAOhkC,EAAGikC,QAAQnhC,GAElB9C,EAAG6a,aAAe7a,EAAG2B,eAEjB8N,EAAG7K,QAAQo/B,IAAS,EACpBhkC,EAAGrC,KAAK8R,GAAG3M,IAAO+gC,GAAY7jC,EAAGrC,KAAK8R,GAAG3M,GAAM9C,EAAGrC,KAAK8R,GAAG3M,GAAM,IAAI7H,OAAO0C,EAAKvC,KAAI,SAAU5F,GAC1F,OAAOA,EAAEwuC,EACb,IAAGp0B,OAAOnb,GAAS2G,KAAI,SAAU8oC,EAAM9qC,GACnC,OAAO4G,EAAGmkC,gBAAgBD,EAAMphC,EAAI1J,EACxC,KAGK6G,EAAO6a,OACR9a,EAAGrC,KAAK8R,GAAG3M,GAAM9C,EAAGokC,mBAGfxuC,EAASqK,EAAO8a,WACjB/a,EAAGrC,KAAK8R,GAAG3M,GAAM9C,EAAGqkC,iBAAiBL,EAAMhkC,EAAGrC,KAAKqE,UAI/DhC,EAAGrC,KAAK8R,GAAG3M,GAAMnF,EAAKvC,KAAI,SAAU5F,EAAG4D,GACnC,OAAOA,CACX,GAER,IAGAk3B,EAAIj6B,SAAQ,SAAUyM,GAClB,IAAK9C,EAAGrC,KAAK8R,GAAG3M,GACZ,MAAM,IAAIsI,MAAM,8BAAgCtI,EAAK,KAE7D,KAGAd,EAAUsuB,EAAIl1B,KAAI,SAAU0H,EAAIxH,GAC5B,IAAIgpC,EAAcrkC,EAAOi9B,iBAAiBp6B,GAC1C,MAAO,CACHA,GAAIwhC,EACJC,OAAQzhC,EACRwF,OAAQ3K,EAAKvC,KAAI,SAAU5F,EAAG4D,GAC1B,IAGIpC,EAFAktC,EAAO1uC,EADAwK,EAAGikC,QAAQnhC,IAElB/O,EAAkB,OAAVyB,EAAEsN,IAAiBoc,MAAM1pB,EAAEsN,IAAgB,MAARtN,EAAEsN,GAmBjD,OAhBI9C,EAAG6a,aAAe7a,EAAGqB,kBAAoBrM,EAAYkvC,IACvC,IAAV5oC,GAAqB,IAANlC,IACf6G,EAAOwb,kBAAoB,KAGpB,KADXzkB,EAAIiJ,EAAOwb,kBAAkB7W,QAAQs/B,MAEjCltC,EAAIiJ,EAAOwb,kBAAkB/lB,OAC7BuK,EAAOwb,kBAAkBliB,KAAK2qC,KAGlCltC,EAAIgJ,EAAGmkC,gBAAgBD,EAAMphC,EAAI1J,IAGjCpE,EAAYQ,EAAEsN,KAAQ9C,EAAGrC,KAAK8R,GAAG3M,GAAIpN,QAAU0D,KAC/CpC,OAAIwD,GAED,CAAExD,EAAGA,EAAGjD,MAAOA,EAAO+O,GAAIwhC,EACrC,IAAG10B,QAAO,SAAUlb,GAChB,OAAOO,EAAUP,EAAEsC,EACvB,IAER,KAGQX,SAAQ,SAAUgkB,GACtB,IAAIjhB,EAEA6G,EAAOg9B,aACP5iB,EAAE/R,OAAS+R,EAAE/R,OAAOQ,MAAK,SAAU07B,EAAIC,GAGnC,OAFSD,EAAGxtC,GAAc,IAATwtC,EAAGxtC,EAAUwtC,EAAGxtC,EAAIsI,MAC5BmlC,EAAGztC,GAAc,IAATytC,EAAGztC,EAAUytC,EAAGztC,EAAIsI,IAEzC,KAGJlG,EAAI,EACJihB,EAAE/R,OAAOjS,SAAQ,SAAU3B,GACvBA,EAAE4G,MAAQlC,GACd,IAEA4G,EAAGrC,KAAK8R,GAAG4K,EAAEvX,IAAIgG,MAAK,SAAU07B,EAAIC,GAChC,OAAOD,EAAKC,CAChB,GACJ,IAGAzkC,EAAG0kC,iBAAmB1kC,EAAG2kC,0BAA0B3iC,GACnDhC,EAAG4kC,iBAAmB5kC,EAAG6kC,0BAA0B7iC,GAG/C/B,EAAOm9B,WACPp9B,EAAGkyB,cAAclyB,EAAG+P,SAAS/N,GAAS4N,QAAO,SAAU9M,GACnD,QAASA,KAAM7C,EAAOo9B,WAC1B,IAAIp9B,EAAOm9B,WAIfp7B,EAAQ3L,SAAQ,SAAUb,GACtBwK,EAAG85B,SAAStkC,EAAE+uC,OAAQ/uC,EAC1B,IAEOwM,CACX,EAEAnM,EAAqBkuC,IAAM,SAAU/tC,GACjC,IACIiK,EADKxI,KACOwI,OAChB,OAAOA,EAAO6a,QAAU9kB,IAAQiK,EAAO6a,QAAUllB,EAASqK,EAAO8a,UAAY7kB,EAAS+J,EAAO8a,QAAS/kB,EAC1G,EACAH,EAAqBiuC,OAAS,SAAU9tC,GACpC,OAAQyB,KAAKssC,IAAI/tC,EACrB,EACAH,EAAqBouC,QAAU,SAAUnhC,GACrC,IACI7C,EADKxI,KACOwI,OAChB,OAAOA,EAAO6a,OAAS7a,EAAO6a,OAASllB,EAASqK,EAAO8a,SAAW9a,EAAO8a,QAAQjY,GAAM,IAC3F,EACAjN,EAAqBwuC,iBAAmB,SAAUruC,EAAKgM,GACnD,IACI8iC,EADA9kC,EAAKvI,KAQT,OANUuK,GAAWpM,EAASoM,GAAWhC,EAAG+P,SAAS/N,GAAW,IAC5D3L,SAAQ,SAAUyM,GACd9C,EAAGikC,QAAQnhC,KAAQ9M,IACnB8uC,EAAU9kC,EAAGrC,KAAK8R,GAAG3M,GAE7B,IACOgiC,CACX,EACAjvC,EAAqB+7B,YAAc,SAAU56B,GACzC,IAAIgJ,EAAKvI,KACLkG,EAAOqC,EAAG+kC,UAAU/kC,EAAGrC,KAAKqE,QAAShL,GACzC,OAAO2G,EAAKjI,OAASiI,EAAK,GAAGrC,MAAQ,IACzC,EACAzF,EAAqBmvC,UAAY,SAAUliC,EAAI1J,GAC3C,IAAI4G,EAAKvI,KACT,OAAOqL,KAAM9C,EAAGrC,KAAK8R,IAAMzP,EAAGrC,KAAK8R,GAAG3M,IAAOrO,EAAQuL,EAAGrC,KAAK8R,GAAG3M,GAAI1J,IAAM4G,EAAGrC,KAAK8R,GAAG3M,GAAI1J,GAAKA,CAClG,EACAvD,EAAqBuuC,iBAAmB,WACpC,IAAIpkC,EAAKvI,KACLwtC,EAAUpxC,OAAO8B,KAAKqK,EAAGrC,KAAK8R,IAClC,OAAOw1B,EAAQvvC,OAASsK,EAAGrC,KAAK8R,GAAGw1B,EAAQ,IAAM,IACrD,EACApvC,EAAqBi3B,gBAAkB,SAAUxxB,GAC7C,IAAImU,EAAKhY,KAAK2sC,mBACd,OAAO30B,GAAMnU,EAAQmU,EAAG/Z,OAAS+Z,EAAGnU,GAAS,IACjD,EACAzF,EAAqBg6B,MAAQ,SAAUpgB,GACnC,IAAIzP,EAAKvI,KACT5D,OAAO8B,KAAK8Z,GAAIpZ,SAAQ,SAAUyM,GAC9B9C,EAAGC,OAAO8a,QAAQjY,GAAM2M,EAAG3M,EAC/B,GACJ,EACAjN,EAAqBqvC,aAAe,SAAUz1B,GAC1C,OAAOhY,KAAKC,GAAGwqB,IAAIruB,OAAO8B,KAAK8Z,GAAIrU,KAAI,SAAU0H,GAC7C,OAAO2M,EAAG3M,EACd,KAAI3I,OAAS,CACjB,EACAtE,EAAqB67B,YAAc,WAC/B,OAAO97B,EAAS6B,KAAKwI,OAAO8a,WAAatjB,KAAKwI,OAAOg9B,YAAcxlC,KAAKsd,QAAQ,UACpF,EACAlf,EAAqBkgC,QAAU,SAAUp4B,GACrC,IACIwnC,EAKJ,OAJIxnC,IACAwnC,EAHK1tC,KAGKwI,OAAOk9B,WAAWx/B,EAAKmF,IACjCnF,EAAKwnC,UAAgB3qC,IAAT2qC,EAAqBA,EAAOxnC,EAAKmF,IAE1CnF,CACX,EACA9H,EAAqBy3B,gBAAkB,SAAUhlB,EAAQhN,GACrD,IAAI8pC,EAAe98B,EAAOsH,QAAO,SAAUlb,GACvC,OAAOA,EAAE4G,QAAUA,CACvB,IACA,OAAO8pC,EAAa1vC,OAAS0vC,EAAa,GAAK,IACnD,EACAvvC,EAAqBs8B,cAAgB,SAAUnwB,EAAShL,GACpD,IAAIgJ,EAAKvI,KACTuK,EAAQ3L,SAAQ,SAAUgkB,GACtBA,EAAE/R,OAAOjS,SAAQ,SAAU3B,EAAG0E,GAC1B1E,EAAEsC,EAAIgJ,EAAGmkC,gBAAgBntC,EAAEoC,GAAIihB,EAAEvX,GAAI1J,EACzC,IACA4G,EAAGrC,KAAK8R,GAAG4K,EAAEvX,IAAM9L,CACvB,GACJ,EACAnB,EAAqBu8B,eAAiB,SAAUpwB,EAASyN,GACrD,IAAIzP,EAAKvI,KACTuK,EAAQ3L,SAAQ,SAAUgkB,GAClB5K,EAAG4K,EAAEvX,KACL9C,EAAGmyB,cAAc,CAAC9X,GAAI5K,EAAG4K,EAAEvX,IAEnC,GACJ,EACAjN,EAAqBsuC,gBAAkB,SAAUD,EAAMphC,EAAIxH,GACvD,IAAI0E,EAAKvI,KAST,OAPIuI,EAAG2B,eACCuiC,EAAOlkC,EAAG4B,UAAUsiC,GAAQlkC,EAAG4B,UAAU5B,EAAGglC,UAAUliC,EAAIxH,IACvD0E,EAAG6a,cAAgB7a,EAAGqB,gBACzB5M,EAAQyvC,IAASA,EAAOlkC,EAAGglC,UAAUliC,EAAIxH,GAEzCA,CAGZ,EACAzF,EAAqBkkC,YAAc,SAAU3rC,GACzC,MAAO,CACH0U,GAAI1U,EAAO0U,GACXyhC,OAAQn2C,EAAOm2C,OACfj8B,OAAQla,EAAOka,OAAOlN,KAAI,SAAU5F,GAChC,MAAO,CAAEwB,EAAGxB,EAAEwB,EAAGjD,MAAOyB,EAAEzB,MAAO+O,GAAItN,EAAEsN,GAC3C,IAER,EACAjN,EAAqBwvC,SAAW,WAC5B,IAAIrlC,EAAKvI,KACLuI,EAAGrC,KAAKqE,QAAQtM,SAChBsK,EAAGyP,GAAK,GACRzP,EAAGrC,KAAKqE,QAAQ,GAAGsG,OAAOjS,SAAQ,SAAU3B,GACxCsL,EAAGyP,GAAG/a,EAAE4G,OAAS5G,EAAEsC,CACvB,IAER,EACAnB,EAAqByvC,SAAW,SAAUlsC,GACtC,IAAIpC,EAAIS,KAAKgY,GAAGrW,EAAI,GACpB,YAAoB,IAANpC,EAAoBA,EAAI,IAC1C,EACAnB,EAAqB0vC,SAAW,SAAUnsC,GACtC,IAAIpC,EAAIS,KAAKgY,GAAGrW,EAAI,GACpB,YAAoB,IAANpC,EAAoBA,EAAI,IAC1C,EACAnB,EAAqB22B,gBAAkB,WACnC,IAAIxsB,EAAKvI,KACT,OAAOuI,EAAGtI,GAAGwE,IAAI8D,EAAGrC,KAAKqE,SAAS,SAAUqY,GACxC,OAAOA,EAAE/R,OAAO5S,MACpB,GACJ,EACAG,EAAqB2vC,sBAAwB,SAAUxjC,GACnD,IAEIyjC,EAFA/vC,EAASsM,EAAQtM,OACjBwG,EAAM,EAYV,OAVIxG,EAAS,EACTsM,EAAQ3L,SAAQ,SAAUgkB,GAClBA,EAAE/R,OAAO5S,OAASwG,IAClBupC,EAAYprB,EACZne,EAAMme,EAAE/R,OAAO5S,OAEvB,IAEA+vC,EAAY/vC,EAASsM,EAAQ,GAAK,KAE/ByjC,CACX,EACA5vC,EAAqB6vC,SAAW,SAAU1jC,GACtC,IAAIhC,EAAKvI,KACT,OAAQuK,EAAQtM,OAAkB,CAACsK,EAAGtI,GAAGR,IAAI8K,GAAS,SAAUqY,GAC5D,OAAOA,EAAE/R,OAAO,GAAGtR,CACvB,IAAIgJ,EAAGtI,GAAGwE,IAAI8F,GAAS,SAAUqY,GAC7B,OAAOA,EAAE/R,OAAO+R,EAAE/R,OAAO5S,OAAS,GAAGsB,CACzC,KAJyB,CAAC,EAAG,EAKjC,EACAnB,EAAqBka,SAAW,SAAU/N,GACtC,OAAOA,EAAQ5G,KAAI,SAAU5F,GACzB,OAAOA,EAAEsN,EACb,GACJ,EACAjN,EAAqB44B,eAAiB,SAAU6B,GAC5C,IAAItwB,EAAKvI,KACT,OAAO64B,EAAM,GAAGr1B,OAAOq1B,GAAOtwB,EAAG+P,SAAS/P,EAAGrC,KAAKqE,QACtD,EACAnM,EAAqB8vC,UAAY,SAAU3jC,EAASc,GAChD,IACI1J,EADAk3B,EAAM74B,KAAKsY,SAAS/N,GAExB,IAAK5I,EAAI,EAAGA,EAAIk3B,EAAI56B,OAAQ0D,IACxB,GAAIk3B,EAAIl3B,KAAO0J,EACX,OAAO,EAGf,OAAO,CACX,EACAjN,EAAqB6f,eAAiB,SAAUkW,GAC5C,OAAOn0B,KAAK4V,gBAAgBzI,QAAQgnB,GAAY,CACpD,EACA/1B,EAAqBo5B,eAAiB,SAAUrD,GAC5C,OAAOn0B,KAAK6V,gBAAgB1I,QAAQgnB,GAAY,CACpD,EACA/1B,EAAqBmR,oBAAsB,SAAUhF,GACjD,IAAIhC,EAAKvI,KACT,OAAOuK,EAAQ4N,QAAO,SAAUyK,GAC5B,OAAOra,EAAG0V,eAAe2E,EAAEvX,GAC/B,GACJ,EACAjN,EAAqBuM,qBAAuB,SAAUJ,GAClD,IAAIhC,EAAKvI,KACLgY,EAAKzP,EAAGtI,GAAGwqB,IAAIliB,EAAGtI,GAAG+4B,MAAMzuB,EAAQ5G,KAAI,SAAUif,GACjD,OAAOA,EAAE/R,OAAOlN,KAAI,SAAU1G,GAC1B,OAAQA,EAAEsC,CACd,GACJ,MAAKsR,SAML,OALAmH,EAAKzP,EAAG2B,eAAiB8N,EAAGrU,KAAI,SAAUpE,GACtC,OAAO,IAAI6R,MAAM7R,EACrB,IAAKyY,EAAGrU,KAAI,SAAUpE,GAClB,OAAQA,CACZ,KACU8R,MAAK,SAAUC,EAAGC,GACxB,OAAOD,EAAIC,GAAK,EAAID,EAAIC,EAAI,EAAID,GAAKC,EAAI,EAAIwL,GACjD,GACJ,EACA3e,EAAqBia,mBAAqB,SAAU4b,GAChDA,EAAYA,aAAqB52B,MAAQ42B,EAAY,IAAI52B,MAAM42B,GAC/D,IAAK,IAAItyB,EAAI,EAAGA,EAAIsyB,EAAUh2B,OAAQ0D,IAC9B3B,KAAK4V,gBAAgBzI,QAAQ8mB,EAAUtyB,IAAM,IAC7C3B,KAAK4V,gBAAkB5V,KAAK4V,gBAAgBpS,OAAOywB,EAAUtyB,IAGzE,EACAvD,EAAqB07B,sBAAwB,SAAU7F,GACnDj0B,KAAK4V,gBAAkB5V,KAAK4V,gBAAgBuC,QAAO,SAAU9M,GACzD,OAAO4oB,EAAU9mB,QAAQ9B,GAAM,CACnC,GACJ,EACAjN,EAAqBoa,mBAAqB,SAAUyb,GAChDA,EAAYA,aAAqB52B,MAAQ42B,EAAY,IAAI52B,MAAM42B,GAC/D,IAAK,IAAItyB,EAAI,EAAGA,EAAIsyB,EAAUh2B,OAAQ0D,IAC9B3B,KAAK6V,gBAAgB1I,QAAQ8mB,EAAUtyB,IAAM,IAC7C3B,KAAK6V,gBAAkB7V,KAAK6V,gBAAgBrS,OAAOywB,EAAUtyB,IAGzE,EACAvD,EAAqB+vC,sBAAwB,SAAUla,GACnDj0B,KAAK6V,gBAAkB7V,KAAK6V,gBAAgBsC,QAAO,SAAU9M,GACzD,OAAO4oB,EAAU9mB,QAAQ9B,GAAM,CACnC,GACJ,EACAjN,EAAqBgwC,mBAAqB,SAAU7jC,GAChD,IAAI8jC,EAAK,CAAC,EAOV,OANA9jC,EAAQ3L,SAAQ,SAAUgkB,GACtByrB,EAAGzrB,EAAEvX,IAAM,GACXuX,EAAE/R,OAAOjS,SAAQ,SAAU3B,GACvBoxC,EAAGzrB,EAAEvX,IAAIvJ,KAAK7E,EAAEX,MACpB,GACJ,IACO+xC,CACX,EACAjwC,EAAqBkwC,oBAAsB,SAAU/jC,EAASgkC,GAC1D,IACI5sC,EACAyzB,EACAvkB,EAHAgoB,EAAMz8B,OAAO8B,KAAKqM,GAItB,IAAK5I,EAAI,EAAGA,EAAIk3B,EAAI56B,OAAQ0D,IAExB,IADAkP,EAAStG,EAAQsuB,EAAIl3B,IAAIkP,OACpBukB,EAAI,EAAGA,EAAIvkB,EAAO5S,OAAQm3B,IAC3B,GAAImZ,EAAQ19B,EAAOukB,GAAG94B,OAClB,OAAO,EAInB,OAAO,CACX,EACA8B,EAAqB8uC,0BAA4B,SAAU3iC,GACvD,OAAOvK,KAAKsuC,oBAAoB/jC,GAAS,SAAUtN,GAC/C,OAAOA,EAAI,CACf,GACJ,EACAmB,EAAqBgvC,0BAA4B,SAAU7iC,GACvD,OAAOvK,KAAKsuC,oBAAoB/jC,GAAS,SAAUtN,GAC/C,OAAOA,EAAI,CACf,GACJ,EACAmB,EAAqBowC,YAAc,WAC/B,IAAIhmC,EAASxI,KAAKwI,OAClB,MAAoC,iBAAtBA,EAAOs9B,YAA+D,SAApCt9B,EAAOs9B,WAAW3B,aACtE,EACA/lC,EAAqBqwC,WAAa,WAC9B,IAAIjmC,EAASxI,KAAKwI,OAClB,MAAoC,iBAAtBA,EAAOs9B,YAA+D,QAApCt9B,EAAOs9B,WAAW3B,aACtE,EACA/lC,EAAqBi9B,iBAAmB,WACpC,IAAI9yB,EAAKvI,KACLwI,EAASD,EAAGC,OACZkmC,EAAWnmC,EAAGkmC,aACdE,EAAYpmC,EAAGimC,cACnB,GAAIE,GAAYC,EACZ,OAAO,SAAUC,EAAIC,GACjB,IAAIC,EAAU,SAAiBr+B,EAAGqoB,GAC9B,OAAOroB,EAAI/S,KAAKwgC,IAAIpF,EAAEx8B,MAC1B,EACIyyC,EAAQH,EAAG/9B,OAAOuqB,OAAO0T,EAAS,GAClCE,EAAQH,EAAGh+B,OAAOuqB,OAAO0T,EAAS,GACtC,OAAOH,EAAYK,EAAQD,EAAQA,EAAQC,CAC/C,EACG,GAAI9xC,EAAWsL,EAAOs9B,YACzB,OAAOt9B,EAAOs9B,WACX,GAAI1oC,EAAQoL,EAAOs9B,YAAa,CACnC,IAAImJ,EAAQzmC,EAAOs9B,WACnB,OAAO,SAAU8I,EAAIC,GACjB,OAAOI,EAAM9hC,QAAQyhC,EAAGvjC,IAAM4jC,EAAM9hC,QAAQ0hC,EAAGxjC,GACnD,CACJ,CACJ,EACAjN,EAAqB8wC,aAAe,SAAU3kC,GAC1C,IAAI4kC,EAAMnvC,KAAKq7B,mBAOf,OANI8T,IACA5kC,EAAQ8G,KAAK89B,IACTnvC,KAAKyuC,cAAgBzuC,KAAKwuC,gBAC1BjkC,EAAQ6kC,WAGT7kC,CACX,EACAnM,EAAqBkvC,UAAY,SAAU/iC,EAAShL,GAChD,OAAOS,KAAKC,GAAG+4B,MAAMzuB,EAAQ5G,KAAI,SAAUif,GACvC,OAAOA,EAAE/R,MACb,KAAIsH,QAAO,SAAUlb,GACjB,OAAOA,EAAEsC,EAAIA,GAAM,CACvB,GACJ,EACAnB,EAAqBixC,iBAAmB,SAAUnpC,GAC9C,OAAOA,EAAKiS,QAAO,SAAUpa,GACzB,OAAOf,EAAQe,EAAEzB,MACrB,GACJ,EACA8B,EAAqBkxC,gBAAkB,SAAU/kC,EAASglC,GACtD,OAAOhlC,EAAQ5G,KAAI,SAAUif,GACzB,MAAO,CACHvX,GAAIuX,EAAEvX,GACNyhC,OAAQlqB,EAAEkqB,OACVj8B,OAAQ+R,EAAE/R,OAAOsH,QAAO,SAAUlb,GAC9B,OAAOsyC,EAAQ,IAAMtyC,EAAEsC,GAAKtC,EAAEsC,GAAKgwC,EAAQ,EAC/C,IAER,GACJ,EACAnxC,EAAqBkjB,aAAe,WAChC,IAAI9Y,EAASxI,KAAKwI,OAClB,QAAkC,kBAAvBA,EAAOq9B,cAA6Br9B,EAAOq9B,gBAEX,WAAhCtqC,EAAQiN,EAAOq9B,eAA6B1nC,EAASqK,EAAOq9B,aAI3E,EACAznC,EAAqBoxC,mBAAqB,SAAU/vC,EAAKgF,EAAKlG,GAC1D,IAAIgK,EAAKvI,KACLyvC,EAAU,CAAC,EAAG,GACdC,EAAc,IAMlB,OALAnnC,EAAGoP,YAAY9U,OAAO,OAAOoD,UAAU,UAAUC,KAAK,CAACzG,EAAKgF,IAAM2B,QAAQO,OAAO,QAAQnN,MAAK,SAAUuE,GACpG,OAAOwK,EAAGonC,gBAAgB5xC,EAAEsN,GAArB9C,CAAyBxK,EACpC,IAAG+E,MAAK,SAAU/E,EAAG4D,GACjB8tC,EAAQ9tC,GAAK3B,KAAKb,wBAAwBZ,GAAOmxC,CACrD,IAAGjpC,SACIgpC,CACX,EACArxC,EAAqBwxC,UAAY,SAAU7xC,GACvC,OAAOiC,KAAKkuC,UAAUluC,KAAKkG,KAAKqE,QAASxM,EAAEsN,GAC/C,EAAGjN,EAAqByxC,MAAQ,SAAU9xC,GACtC,MAAO,SAAUA,GAAKiC,KAAKkuC,UAAUluC,KAAKkG,KAAKqE,QAASxM,EAAEmI,KAAKmF,GACnE,EACAjN,EAAqB0xC,kBAAoB,SAAUj/B,EAAQhN,GACvD,IAAIlC,EACAouC,EAAUl/B,EAAOhN,GAAOtE,EACxBywC,EAAQ,GACZ,IAAKruC,EAAIkC,EAAQ,EAAGlC,GAAK,GACjBouC,IAAYl/B,EAAOlP,GAAGpC,EADFoC,IAIxBquC,EAAMluC,KAAK+O,EAAOlP,IAEtB,IAAKA,EAAIkC,EAAOlC,EAAIkP,EAAO5S,QACnB8xC,IAAYl/B,EAAOlP,GAAGpC,EADKoC,IAI/BquC,EAAMluC,KAAK+O,EAAOlP,IAEtB,OAAOquC,CACX,EAEA5xC,EAAqB6xC,uBAAyB,SAAU1lC,EAAS2lC,GAC7D,IACInZ,EADAxuB,EAAKvI,KAST,OALA+2B,EAAaxsB,EAAQ5G,KAAI,SAAUhN,GAC/B,OAAO4R,EAAG4nC,YAAYx5C,EAAOka,OAAQq/B,EACzC,IAGO3nC,EAAG4nC,YAAYpZ,EAAYmZ,EACtC,EACA9xC,EAAqB+xC,YAAc,SAAUt/B,EAAQq/B,GACjD,IAEIE,EAFA7nC,EAAKvI,KACLqwC,EAAU9nC,EAAGC,OAAO0/B,kBAwBxB,OApBAr3B,EAAOsH,QAAO,SAAUlb,GACpB,OAAOA,GAAKsL,EAAGqX,UAAU3iB,EAAEoO,GAC/B,IAAGzM,SAAQ,SAAU3B,GACjB,IAAIvE,EAAQ6P,EAAGE,KAAK5F,OAAO,IAAMnM,EAAMqC,KAAOwP,EAAG0wB,wBAAwBh8B,EAAEoO,IAAM,KAAO3U,EAAMoC,IAAM,IAAMmE,EAAE4G,OAAO8D,QAC9GyoC,GAAW7nC,EAAG+nC,YAAY53C,KAC3B03C,EAAUnzC,EAElB,IAGA4T,EAAOsH,QAAO,SAAUlb,GACpB,OAAOA,IAAMsL,EAAGqX,UAAU3iB,EAAEoO,GAChC,IAAGzM,SAAQ,SAAU3B,GACjB,IAAIc,EAAIwK,EAAGgoC,KAAKtzC,EAAGizC,GACfnyC,EAAIsyC,IACJA,EAAUtyC,EACVqyC,EAAUnzC,EAElB,IAEOmzC,CACX,EACAhyC,EAAqBmyC,KAAO,SAAUrqC,EAAMgqC,GACxC,IAAI3nC,EAAKvI,KACLwI,EAASD,EAAGC,OACZgoC,EAAShoC,EAAOO,aAAe,EAAI,EACnC0nC,EAASjoC,EAAOO,aAAe,EAAI,EACnCvJ,EAAI+I,EAAGwZ,QAAQ7b,EAAMA,EAAKrC,OAC1BtE,EAAIgJ,EAAGhJ,EAAE2G,EAAK3G,GAClB,OAAO7B,KAAKogC,KAAKpgC,KAAKy0B,IAAI5yB,EAAI2wC,EAAIM,GAAS,GAAK9yC,KAAKy0B,IAAI3yB,EAAI0wC,EAAIO,GAAS,GAC9E,EACAryC,EAAqBsyC,oBAAsB,SAAU7/B,GACjD,IACIlP,EADAgvC,EAAY,GAAGntC,OAAOqN,GAG1B,IAAK7Q,KAAK4J,gBACN,OAAOiH,EAGX,IAAKlP,EAAIkP,EAAO5S,OAAS,EAAG,EAAI0D,EAAGA,IAC/BgvC,EAAUhvC,GAAKgvC,EAAUhvC,EAAI,GAcjC,OAXAgvC,EAAU,GAAK,CACXpxC,EAAGoxC,EAAU,GAAGpxC,EAAI,EACpBjD,MAAOq0C,EAAU,GAAGr0C,MACpB+O,GAAIslC,EAAU,GAAGtlC,IAErBslC,EAAU9/B,EAAO5S,OAAS,GAAK,CAC3BsB,EAAGoxC,EAAU9/B,EAAO5S,QAAQsB,EAAI,EAChCjD,MAAOq0C,EAAU9/B,EAAO5S,QAAQ3B,MAChC+O,GAAIslC,EAAU9/B,EAAO5S,QAAQoN,IAG1BslC,CACX,EACAvyC,EAAqBk2B,qBAAuB,SAAUoZ,EAAMkD,GACxD,IAAIroC,EAAKvI,KAEL6wC,EADStoC,EAAGC,OACK,QAAUklC,GAC/B,YAAqB,IAAVkD,IAGXx0C,OAAO8B,KAAK0yC,GAAOhyC,SAAQ,SAAUyM,GACjCwlC,EAAQxlC,GAAMulC,EAAMvlC,EACxB,IACA9C,EAAGqJ,OAAO,CAAE2M,YAAY,KALbsyB,CAOf,EAEAzyC,EAAqB+5B,KAAO,SAAU5tB,EAASiqB,GAC3C,IAAIjsB,EAAKvI,KACLuK,IAEIiqB,EAAKrc,SACL5N,EAAUA,EAAQ4N,OAAOqc,EAAKrc,UAG9Bqc,EAAKpZ,MAAQoZ,EAAKsc,QAClBvmC,EAAQ3L,SAAQ,SAAUgkB,GACtB,IAAIxH,EAAOoZ,EAAKsc,OAAStc,EAAKsc,MAAMluB,EAAEvX,IAAMmpB,EAAKsc,MAAMluB,EAAEvX,IAAMmpB,EAAKpZ,KACpE7S,EAAGkyB,cAAc7X,EAAEvX,GAAI+P,EAC3B,IAGJ7S,EAAGrC,KAAKqE,QAAQ3L,SAAQ,SAAUb,GAC9B,IAAK,IAAI4D,EAAI,EAAGA,EAAI4I,EAAQtM,OAAQ0D,IAChC,GAAI5D,EAAEsN,KAAOd,EAAQ5I,GAAG0J,GAAI,CACxBtN,EAAE8S,OAAStG,EAAQ5I,GAAGkP,OACtBtG,EAAQ0c,OAAOtlB,EAAG,GAClB,KACJ,CAER,IACA4G,EAAGrC,KAAKqE,QAAUhC,EAAGrC,KAAKqE,QAAQ/G,OAAO+G,IAI7ChC,EAAGkS,cAAclS,EAAGrC,KAAKqE,SAGzBhC,EAAGqJ,OAAO,CAAEkJ,sBAAsB,EAAMD,mBAAmB,EAAM0D,YAAY,IAEzEiW,EAAKnN,MACLmN,EAAKnN,MAEb,EACAjpB,EAAqBw6B,aAAe,SAAUpE,GAC1C,IAAIjsB,EAAKvI,KACLw0B,EAAKtuB,KACLqC,EAAG4vB,KAAK5vB,EAAG0P,qBAAqBuc,EAAKtuB,MAAOsuB,GACrCA,EAAK8V,IACZ/hC,EAAG0K,iBAAiBuhB,EAAK8V,IAAK9V,EAAK+V,SAAU/V,EAAKgW,QAAShW,EAAKt2B,MAAM,SAAUgI,GAC5EqC,EAAG4vB,KAAK5vB,EAAG0P,qBAAqB/R,GAAOsuB,EAC3C,IACOA,EAAKS,KACZ1sB,EAAG4vB,KAAK5vB,EAAG0P,qBAAqB1P,EAAGgL,kBAAkBihB,EAAKS,KAAMT,EAAKt2B,OAAQs2B,GACtEA,EAAKU,KACZ3sB,EAAG4vB,KAAK5vB,EAAG0P,qBAAqB1P,EAAGkL,kBAAkB+gB,EAAKU,OAAQV,GAC3DA,EAAKW,QACZ5sB,EAAG4vB,KAAK5vB,EAAG0P,qBAAqB1P,EAAGqL,qBAAqB4gB,EAAKW,UAAWX,GAExEjsB,EAAG4vB,KAAK,KAAM3D,EAEtB,EACAp2B,EAAqBu6B,OAAS,SAAU1E,EAAW5M,GAC/C,IAAI9e,EAAKvI,KACJqnB,IACDA,EAAO,WAAiB,IAG5B4M,EAAYA,EAAU9b,QAAO,SAAU9M,GACnC,OAAO9C,EAAG2lC,UAAU3lC,EAAGrC,KAAKqE,QAASc,EACzC,MAEuC,IAArB4oB,EAAUh2B,QAI5BsK,EAAG+G,IAAIrJ,UAAUguB,EAAUtwB,KAAI,SAAU0H,GACrC,OAAO9C,EAAGw7B,eAAe14B,EAC7B,KAAInI,aAAaoD,MAAM,UAAW,GAAGG,SAAS3J,KAAKyL,EAAG2e,OAAQG,GAC9D4M,EAAUr1B,SAAQ,SAAUyM,GAExB9C,EAAGsO,cAAcxL,IAAM,EAEnB9C,EAAGkT,QACHlT,EAAGkT,OAAOxV,UAAU,IAAMvP,EAAMoE,WAAayN,EAAG0wB,wBAAwB5tB,IAAK5E,SAGjF8B,EAAGrC,KAAKqE,QAAUhC,EAAGrC,KAAKqE,QAAQ4N,QAAO,SAAUyK,GAC/C,OAAOA,EAAEvX,KAAOA,CACpB,GACJ,KAjBIgc,GAkBR,EAEAjpB,EAAqB2yC,cAAgB,SAAUxmC,GAC3C,IAII6qB,EACA6W,EACA+E,EACAC,EACA5lC,EACA4hC,EATA1kC,EAAKvI,KACLwI,EAASD,EAAGC,OACZqwB,EAAMtwB,EAAG+P,SAAS/N,GAClB8jC,EAAK9lC,EAAG6lC,mBAAmB7jC,GAO/B,GAAI/B,EAAOuvB,YAAY95B,OAAS,EAE5B,IADAgvC,EAAmB1kC,EAAG2kC,0BAA0B3iC,GAC3C6qB,EAAI,EAAGA,EAAI5sB,EAAOuvB,YAAY95B,OAAQm3B,IAKvC,GAHA6b,EAAazoC,EAAOuvB,YAAY3C,GAAGjd,QAAO,SAAU9M,GAChD,OAAOwtB,EAAI1rB,QAAQ9B,IAAO,CAC9B,IAC0B,IAAtB4lC,EAAWhzC,OAWf,IARA+yC,EAASC,EAAW,GAEhBhE,GAAoBoB,EAAG2C,IACvB3C,EAAG2C,GAAQpyC,SAAQ,SAAU3B,EAAG0E,GAC5B0sC,EAAG2C,GAAQrvC,GAAK1E,EAAI,EAAIA,EAAI,CAChC,IAGCgvC,EAAI,EAAGA,EAAIgF,EAAWhzC,OAAQguC,IAC/B5gC,EAAK4lC,EAAWhF,GACXoC,EAAGhjC,IAGRgjC,EAAGhjC,GAAIzM,SAAQ,SAAU3B,EAAG0E,GACpB4G,EAAGjO,KAAK8Q,MAAMC,KAAQ9C,EAAGjO,KAAK8Q,MAAM4lC,KAAW3C,EAAG2C,IAAa/D,IAAqBhwC,EAAI,IACxFoxC,EAAG2C,GAAQrvC,KAAO1E,EAE1B,IAIZ,OAAOsL,EAAGtI,GAAGR,IAAIrD,OAAO8B,KAAKmwC,GAAI1qC,KAAI,SAAUpF,GAC3C,OAAOgK,EAAGtI,GAAGR,IAAI4uC,EAAG9vC,GACxB,IACJ,EACAH,EAAqB8yC,cAAgB,SAAU3mC,GAC3C,IAII6qB,EACA6W,EACA+E,EACAC,EACA5lC,EACA8hC,EATA5kC,EAAKvI,KACLwI,EAASD,EAAGC,OACZqwB,EAAMtwB,EAAG+P,SAAS/N,GAClB8jC,EAAK9lC,EAAG6lC,mBAAmB7jC,GAO/B,GAAI/B,EAAOuvB,YAAY95B,OAAS,EAE5B,IADAkvC,EAAmB5kC,EAAG6kC,0BAA0B7iC,GAC3C6qB,EAAI,EAAGA,EAAI5sB,EAAOuvB,YAAY95B,OAAQm3B,IAKvC,GAHA6b,EAAazoC,EAAOuvB,YAAY3C,GAAGjd,QAAO,SAAU9M,GAChD,OAAOwtB,EAAI1rB,QAAQ9B,IAAO,CAC9B,IAC0B,IAAtB4lC,EAAWhzC,OAWf,IARA+yC,EAASC,EAAW,GAEhB9D,GAAoBkB,EAAG2C,IACvB3C,EAAG2C,GAAQpyC,SAAQ,SAAU3B,EAAG0E,GAC5B0sC,EAAG2C,GAAQrvC,GAAK1E,EAAI,EAAIA,EAAI,CAChC,IAGCgvC,EAAI,EAAGA,EAAIgF,EAAWhzC,OAAQguC,IAC/B5gC,EAAK4lC,EAAWhF,GACXoC,EAAGhjC,IAGRgjC,EAAGhjC,GAAIzM,SAAQ,SAAU3B,EAAG0E,GACpB4G,EAAGjO,KAAK8Q,MAAMC,KAAQ9C,EAAGjO,KAAK8Q,MAAM4lC,KAAW3C,EAAG2C,IAAa7D,IAAqBlwC,EAAI,IACxFoxC,EAAG2C,GAAQrvC,KAAO1E,EAE1B,IAIZ,OAAOsL,EAAGtI,GAAGwE,IAAIrI,OAAO8B,KAAKmwC,GAAI1qC,KAAI,SAAUpF,GAC3C,OAAOgK,EAAGtI,GAAGwE,IAAI4pC,EAAG9vC,GACxB,IACJ,EACAH,EAAqBoR,WAAa,SAAUjF,EAASiC,EAAQ+iC,GACzD,IAUIhuC,EACAiP,EAEA00B,EACAC,EAEAgM,EACA1B,EACA9a,EACAgJ,EACAyT,EACAC,EArBA9oC,EAAKvI,KACLwI,EAASD,EAAGC,OACZ8oC,EAAkB/mC,EAAQ4N,QAAO,SAAUyK,GAC3C,OAAOra,EAAGjO,KAAK8Q,MAAMwX,EAAEvX,MAAQmB,CACnC,IACI+kC,EAAWhC,EAAUhnC,EAAG+mC,gBAAgBgC,EAAiB/B,GAAW+B,EACpEE,EAAkB,OAAXhlC,EAAkBhE,EAAOgrB,YAAchrB,EAAO+qB,WACrDke,EAAkB,OAAXjlC,EAAkBhE,EAAO6qB,YAAc7qB,EAAO4qB,WACrDse,EAAanpC,EAAGwoC,cAAcQ,GAC9BI,EAAappC,EAAG2oC,cAAcK,GAM9BK,EAAoB,OAAXplC,EAAkBhE,EAAOg/B,eAAiBh/B,EAAO2+B,cAO1D0K,EAActpC,EAAG+U,QAAQ,MAAOi0B,IAAa/oC,EAAOmgC,eAAiBpgC,EAAG+U,QAAQ,OAAQi0B,IAAa/oC,EAAOqgC,eAC5GiJ,EAAwB,OAAXtlC,EAAkBhE,EAAO++B,iBAAmB/+B,EAAO0+B,gBAChE6K,EAA0BxpC,EAAG+Y,gBAAkB9Y,EAAOO,aACtDipC,EAAwBzpC,EAAG+Y,iBAAmB9Y,EAAOO,aAMzD,OAHA2oC,EAAa10C,EAAQw0C,GAAQA,EAAOx0C,EAAQy0C,GAAQC,EAAaD,EAAOC,EAAaD,EAAO,GAAKC,EACjGC,EAAa30C,EAAQy0C,GAAQA,EAAOz0C,EAAQw0C,GAAQA,EAAOG,EAAaA,EAAaH,EAAO,GAAKG,EAEzE,IAApBJ,EAAStzC,OAES,OAAXuO,EAAkBjE,EAAGe,GAAG/H,SAAWgH,EAAG/I,EAAE+B,UAE/CkmB,MAAMiqB,KAENA,EAAa,GAEbjqB,MAAMkqB,KAENA,EAAaD,GAEbA,IAAeC,IACfD,EAAa,EAAIC,EAAa,EAAID,EAAa,GAEnDN,EAAgBM,GAAc,GAAKC,GAAc,EACjDN,EAAgBK,GAAc,GAAKC,GAAc,GAG7C30C,EAAQw0C,IAASJ,GAAiBp0C,EAAQy0C,IAASJ,KACnDQ,GAAc,GAIdA,IACIT,IACAM,EAAa,GAEbL,IACAM,EAAa,IAKXzM,EAAcC,EAAgC,IADxD30B,EAAe9S,KAAKwgC,IAAIyT,EAAaD,SAGf,IAAXE,IAEPD,EAAaC,GADbT,EAAazzC,KAAK+G,IAAI/G,KAAKwgC,IAAIwT,GAAah0C,KAAKwgC,IAAIyT,KAErDD,EAAaE,EAAST,GAGtBY,GACAtC,EAAUlnC,EAAGinC,mBAAmBkC,EAAYC,EAAY,SACxDhd,EAAO72B,EAAWyK,EAAG/I,EAAEY,SAEvB8kC,GAAe10B,IADfmtB,EAAQ,CAAC8R,EAAQ,GAAK9a,EAAM8a,EAAQ,GAAK9a,IACJ,IAAM,EAAIgJ,EAAM,GAAKA,EAAM,KAChEwH,GAAkB30B,GAAgBmtB,EAAM,IAAM,EAAIA,EAAM,GAAKA,EAAM,MAC5DqU,IACPvC,EAAUlnC,EAAGinC,mBAAmBkC,EAAYC,EAAY,UACxDzM,GAAe38B,EAAGjO,KAAKqW,2BAA2B8+B,EAAQ,GAAIj/B,GAC9D20B,GAAkB58B,EAAGjO,KAAKqW,2BAA2B8+B,EAAQ,GAAIj/B,IAEtD,MAAXhE,GAAkBrO,EAASqK,EAAO6+B,kBAClCnC,EAAc38B,EAAGjO,KAAKgW,WAAW9H,EAAO6+B,eAAgB,MAAOnC,EAAa10B,GAC5E20B,EAAiB58B,EAAGjO,KAAKgW,WAAW9H,EAAO6+B,eAAgB,SAAUlC,EAAgB30B,IAE1E,OAAXhE,GAAmBrO,EAASqK,EAAOk/B,mBACnCxC,EAAc38B,EAAGjO,KAAKgW,WAAW9H,EAAOk/B,gBAAiB,MAAOxC,EAAa10B,GAC7E20B,EAAiB58B,EAAGjO,KAAKgW,WAAW9H,EAAOk/B,gBAAiB,SAAUvC,EAAgB30B,IAGtFqhC,IACIT,IACAjM,EAAiBuM,GAEjBL,IACAnM,GAAeyM,IAGvBpwC,EAAS,CAACmwC,EAAavM,EAAgBwM,EAAazM,GAC7C4M,EAAavwC,EAAO6tC,UAAY7tC,EAC3C,EACAnD,EAAqB6zC,cAAgB,SAAU1nC,GAC3C,IAAIhC,EAAKvI,KACLwI,EAASD,EAAGC,OAChB,OAAOhL,EAAUgL,EAAO8qB,YAAc/qB,EAAG2B,eAAiBlK,KAAKmK,UAAU3B,EAAO8qB,YAAc9qB,EAAO8qB,WAAa/qB,EAAGtI,GAAGR,IAAI8K,GAAS,SAAUqY,GAC3I,OAAOra,EAAGtI,GAAGR,IAAImjB,EAAE/R,QAAQ,SAAU5T,GACjC,OAAOA,EAAEsC,CACb,GACJ,GACJ,EACAnB,EAAqB8zC,cAAgB,SAAU3nC,GAC3C,IAAIhC,EAAKvI,KACLwI,EAASD,EAAGC,OAChB,OAAOhL,EAAUgL,EAAO2qB,YAAc5qB,EAAG2B,eAAiBlK,KAAKmK,UAAU3B,EAAO2qB,YAAc3qB,EAAO2qB,WAAa5qB,EAAGtI,GAAGwE,IAAI8F,GAAS,SAAUqY,GAC3I,OAAOra,EAAGtI,GAAGwE,IAAIme,EAAE/R,QAAQ,SAAU5T,GACjC,OAAOA,EAAEsC,CACb,GACJ,GACJ,EACAnB,EAAqB+zC,kBAAoB,SAAU5wC,GAC/C,IAGI6wC,EACA7hC,EACA8hC,EACAC,EANA/pC,EAAKvI,KACLwI,EAASD,EAAGC,OACZmsB,EAAOpzB,EAAO,GAAKA,EAAO,GAqB9B,OAfIgP,EADAhI,EAAGqB,gBACO,EACHrB,EAAG+U,QAAQ,QAClB80B,EAAe7pC,EAAGwsB,mBACO,EAAIJ,GAAQyd,EAAe,GAAK,EAAI,GAE5C,IAAPzd,EAEyB,WAAnCp5B,EAAQiN,EAAOy+B,iBAAgC9oC,EAASqK,EAAOy+B,iBAC/DoL,EAAcr1C,EAAQwL,EAAOy+B,eAAe3/B,MAAQkB,EAAOy+B,eAAe3/B,KAAOiJ,EACjF+hC,EAAet1C,EAAQwL,EAAOy+B,eAAe7/B,OAASoB,EAAOy+B,eAAe7/B,MAAQmJ,GAEpF8hC,EAAcC,EAD0B,iBAA1B9pC,EAAOy+B,eACQz+B,EAAOy+B,eAEP12B,EAE1B,CAAEjJ,KAAM+qC,EAAajrC,MAAOkrC,EACvC,EACAl0C,EAAqB2R,WAAa,SAAUxF,GACxC,IAAIhC,EAAKvI,KACLuvC,EAAU,CAAChnC,EAAG0pC,cAAc1nC,GAAUhC,EAAG2pC,cAAc3nC,IACvDgoC,EAAShD,EAAQ,GACjBiD,EAAQjD,EAAQ,GAChBh/B,EAAUhI,EAAG4pC,kBAAkB5C,GAC/B9vC,EAAM,EACNgF,EAAM,EAiBV,OAfI8tC,EAASC,GAAU,GAAMjqC,EAAGqB,kBACxBrB,EAAG2B,gBACHqoC,EAAS,IAAInhC,KAAwB,GAAnBmhC,EAAOE,WACzBD,EAAQ,IAAIphC,KAAuB,IAAlBohC,EAAMC,aAEvBF,EAAoB,IAAXA,EAAe,EAAa,GAATA,EAC5BC,EAAkB,IAAVA,GAAe,EAAY,IAARA,KAG/BD,GAAqB,IAAXA,KACV9yC,EAAM8I,EAAG2B,eAAiB,IAAIkH,KAAKmhC,EAAOE,UAAYliC,EAAQjJ,MAAQirC,EAAShiC,EAAQjJ,OAEvFkrC,GAAmB,IAAVA,KACT/tC,EAAM8D,EAAG2B,eAAiB,IAAIkH,KAAKohC,EAAMC,UAAYliC,EAAQnJ,OAASorC,EAAQjiC,EAAQnJ,OAEnF,CAAC3H,EAAKgF,EACjB,EACArG,EAAqB+hB,cAAgB,SAAU5V,EAASsQ,EAAmBC,EAAsB43B,EAAUnxC,GACvG,IAAIgH,EAAKvI,KACLwI,EAASD,EAAGC,OAyBhB,OAvBIsS,IACAvS,EAAGhJ,EAAEgC,OAAOA,GAAkBgH,EAAGtI,GAAG0Y,OAAOpQ,EAAGwH,WAAWxF,KACzDhC,EAAGwQ,WAAaxQ,EAAGhJ,EAAEgC,SACjBiH,EAAOwQ,cACPzQ,EAAG0Q,KAAK/Y,MAAMqI,EAAGhJ,GAAGozC,oBAExBpqC,EAAGqQ,KAAKrX,OAAOgH,EAAGhJ,EAAEgC,UAChBgH,EAAGtQ,OACHsQ,EAAGtQ,MAAMiI,MAAMqI,EAAGqQ,OAGtBiC,IACAtS,EAAGhJ,EAAEgC,OAAOA,KAAmBgH,EAAGtQ,OAASsQ,EAAGtQ,MAAMsB,QAAUgP,EAAGwQ,WAAaxQ,EAAGtQ,MAAM0gB,WACnFnQ,EAAOwQ,cACPzQ,EAAG0Q,KAAK/Y,MAAMqI,EAAGhJ,GAAGozC,qBAKxBD,GACAnqC,EAAGhJ,EAAEgC,OAAOgH,EAAGqqC,YAAYrqC,EAAGhJ,EAAE8gB,cAG7B9X,EAAGhJ,EAAEgC,QAChB,EACAnD,EAAqBw0C,YAAc,SAAUrxC,GACzC,IAAIsxC,EAAa7yC,KAAK8yC,gBAClBrzC,EAAMozC,EAAW,GACjBpuC,EAAMouC,EAAW,GASrB,OARItxC,EAAO,IAAM9B,IACb8B,EAAO,IAAMA,EAAO,IAAM9B,EAAM8B,EAAO,IACvCA,EAAO,GAAK9B,GAEZgF,GAAOlD,EAAO,KACdA,EAAO,IAAMA,EAAO,IAAMA,EAAO,GAAKkD,GACtClD,EAAO,GAAKkD,GAETlD,CACX,EAEAnD,EAAqB20C,KAAO,SAAU/Y,GAClC,IAIIgZ,EAAIC,EAAIC,EAAIC,EAAIC,EAAMC,EAAMC,EAAMC,EAJlChrC,EAAKvI,KACLwI,EAASD,EAAGC,OACZC,EAAOF,EAAGE,KACVxI,EAAKsI,EAAGtI,GAGRsI,EAAGwT,cAGFvT,EAAO6wB,yBAGR7wB,EAAOwQ,eAAiBzQ,EAAG0Q,KAAKu6B,WAG/BhrC,EAAOw9B,0BAIZgN,EAAKzqC,EAAG+L,UAAU,GAClB2+B,EAAK1qC,EAAG+L,UAAU,GAClB4+B,EAAKlZ,EAAM,GACXmZ,EAAKnZ,EAAM,GACXoZ,EAAO11C,KAAK+B,IAAIuzC,EAAIE,GACpBG,EAAO31C,KAAK+G,IAAIuuC,EAAIE,GACpBI,EAAO9qC,EAAOixB,uBAAyBlxB,EAAGkU,OAAOtV,IAAMzJ,KAAK+B,IAAIwzC,EAAIE,GACpEI,EAAO/qC,EAAOixB,uBAAyBlxB,EAAG5I,OAASjC,KAAK+G,IAAIwuC,EAAIE,GAEhE1qC,EAAK5F,OAAO,IAAMnM,EAAMyE,UAAUkG,KAAK,IAAK+xC,GAAM/xC,KAAK,IAAKiyC,GAAMjyC,KAAK,QAASgyC,EAAOD,GAAM/xC,KAAK,SAAUkyC,EAAOD,GAEnH7qC,EAAKxC,UAAU,IAAMvP,EAAMiC,QAAQsN,UAAU,IAAMvP,EAAMgC,OAAOyf,QAAO,SAAUpa,GAC7E,OAAOyK,EAAOoxB,4BAA4B77B,EAC9C,IAAG+E,MAAK,SAAU/E,EAAG4D,GACjB,IAGI0oB,EACAC,EACAmpB,EACAC,EACApa,EAEAp6B,EATAxG,EAAQuH,EAAG4C,OAAO7C,MAClB25B,EAAajhC,EAAMyX,QAAQzZ,EAAM2E,UACjCs4C,EAAaj7C,EAAMyX,QAAQzZ,EAAM4E,UAMjCs4C,GAAW,EAEf,GAAIl7C,EAAMyX,QAAQzZ,EAAMsC,QACpBqxB,EAAwB,EAAnB3xB,EAAM2I,KAAK,MAChBipB,EAAwB,EAAnB5xB,EAAM2I,KAAK,MAChBi4B,EAAS/wB,EAAGsrC,YACZD,EAAWR,EAAO/oB,GAAMA,EAAKgpB,GAAQC,EAAOhpB,GAAMA,EAAKipB,MACpD,KAAI76C,EAAMyX,QAAQzZ,EAAMoC,KAU3B,OARAuxB,GADAnrB,EAAMF,EAAWgB,OACRT,EACT+qB,EAAKprB,EAAIM,EACTi0C,EAAKv0C,EAAIQ,MACTg0C,EAAKx0C,EAAIS,OACT25B,EAAS/wB,EAAGurC,WACZF,IAAaP,EAAOhpB,GAAMA,EAAKopB,EAAKL,GAAWG,EAAOjpB,GAAMA,EAAKopB,EAAKJ,EAI1E,CACIM,EAAWD,IACXj7C,EAAMyX,QAAQzZ,EAAM4E,UAAWq4C,GAE/Bj7C,EAAMyX,QAAQzZ,EAAM2E,UAAWs+B,GAC/BL,EAAOx8B,KAAKyL,GAAKoxB,EAAYjhC,EAAOqF,EAAG4D,GAE/C,KACJ,EAEAvD,EAAqB21C,UAAY,SAAU/Z,GACvC,IAAIzxB,EAAKvI,KACLwI,EAASD,EAAGC,OACZD,EAAGwT,cAGFvT,EAAO6wB,yBAGZ9wB,EAAG+L,UAAY0lB,EACfzxB,EAAGE,KAAK5F,OAAO,IAAMnM,EAAME,OAAO+P,OAAO,QAAQtF,KAAK,QAAS3K,EAAMyE,UAAUmL,MAAM,UAAW,IAChGiC,EAAGgM,UAAW,EAClB,EAEAnW,EAAqB41C,QAAU,WAC3B,IAAIzrC,EAAKvI,KACLwI,EAASD,EAAGC,OACZD,EAAGwT,cAGFvT,EAAO6wB,yBAGZ9wB,EAAGE,KAAK5F,OAAO,IAAMnM,EAAMyE,UAAU+H,aAAauO,SAAS,KAAKnL,MAAM,UAAW,GAAGG,SACpF8B,EAAGE,KAAKxC,UAAU,IAAMvP,EAAMgC,OAAOyX,QAAQzZ,EAAM4E,UAAU,GAC7DiN,EAAGgM,UAAW,EAClB,EAEAnW,EAAqB61C,WAAa,SAAUC,GACxC,IAAI3rC,EAAKvI,KACLm0C,EAAaD,IAAW3rC,EAAG+U,QAAQ,SAAW/U,EAAGo2B,sBAAwBp2B,EAAG6rC,QAC5EC,EAAcH,IAAW3rC,EAAG+U,QAAQ,SAAW/U,EAAGo2B,sBAAwBp2B,EAAG+rC,SACjF,OAAO,SAAUr3C,EAAG0gC,EAAOtyB,GAEvB,OADmC,OAAtB9C,EAAGjO,KAAK8Q,MAAMC,GAAegpC,EAAcF,GAC1Cr3C,KAAKyL,EAAItL,EAAG0gC,EAC9B,CACJ,EACAv/B,EAAqBg2C,QAAU,SAAUn3C,GACrC,IAAIsL,EAAKvI,KACLwI,EAASD,EAAGC,OAEhB,OADaA,EAAOkH,mBAAqBlH,EAAOkH,mBAAqBnH,EAAGkhC,oBAC1DxsC,EAClB,EACAmB,EAAqBk2C,SAAW,SAAUr3C,GACtC,IAAIsL,EAAKvI,KACLwI,EAASD,EAAGC,OAEhB,OADaA,EAAOqH,oBAAsBrH,EAAOqH,oBAAsBtH,EAAGkhC,oBAC5DxsC,EAClB,EACAmB,EAAqBqrC,mBAAqB,SAAUxsC,GAChD,OAAOD,EAAQC,IAAMA,EAAI,EAC7B,EACAmB,EAAqBugC,sBAAwB,SAAU1hC,EAAG0gC,GACtD,OAAgB,IAARA,GAAajyB,QAAQ,GAAK,GACtC,EACAtN,EAAqBuxC,gBAAkB,SAAUxb,GAC7C,IACI0R,EADK7lC,KACYwI,OAAOq9B,YAExB0O,EAAgB,SAAuBt3C,GACvC,OAAOD,EAAQC,IAAMA,EAAI,EAC7B,EAeA,MAbkC,mBAAvB4oC,EAAYt+B,OACVs+B,EAAYt+B,OACkB,WAAhChM,EAAQsqC,EAAYt+B,QACvBs+B,EAAYt+B,OAAO4sB,IACuB,IAAjC0R,EAAYt+B,OAAO4sB,GAAqBogB,EAAgB1O,EAAYt+B,OAAO4sB,GAE3E,WACL,MAAO,EACX,EAGKogB,CAGjB,EAEAn2C,EAAqB8b,SAAW,WAC5B,IAAI3R,EAAKvI,KACLwI,EAASD,EAAGC,OACZvI,EAAKsI,EAAGtI,GACZsI,EAAG5O,KAAO4O,EAAGE,KAAK9B,OAAO,KAAKtF,KAAK,YAAakH,EAAG6L,iBAAiB/S,KAAK,QAAS3K,EAAMiD,MACpF6O,EAAOo/B,aACPr/B,EAAG5O,KAAKgN,OAAO,KAAKtF,KAAK,QAAS3K,EAAMoD,QAExC0O,EAAOs/B,aACPv/B,EAAG5O,KAAKgN,OAAO,KAAKtF,KAAK,QAAS3K,EAAMyD,QAExCqO,EAAOw/B,iBACPz/B,EAAG5O,KAAKgN,OAAO,KAAKtF,KAAK,QAAS3K,EAAMuD,YAAY0M,OAAO,QAAQtF,KAAK,QAAS3K,EAAMuD,YAE3FsO,EAAG1O,MAAQoG,EAAGgG,UAAU,IACnBuC,EAAO2R,kBACR5R,EAAG6R,eAEX,EACAhc,EAAqBgc,cAAgB,WACjC,IAAI7R,EAAKvI,KACLC,EAAKsI,EAAGtI,GACZsI,EAAG3O,UAAY2O,EAAGE,KAAK9B,OAAO,KAAKtF,KAAK,YAAakH,EAAG6L,iBAAiB/S,KAAK,QAAS3K,EAAMiD,KAAO,IAAMjD,EAAMkD,WAChH2O,EAAG3O,UAAU+M,OAAO,KAAKtF,KAAK,QAAS3K,EAAMsD,YAC7CuO,EAAG3O,UAAU+M,OAAO,KAAKtF,KAAK,QAAS3K,EAAM2D,YAC7CkO,EAAGvO,WAAaiG,EAAGgG,UAAU,GACjC,EACA7H,EAAqBm4B,YAAc,SAAU2G,GACzC,IAAI30B,EAAKvI,KACLwI,EAASD,EAAGC,OACZvI,EAAKsI,EAAGtI,GACRu0C,EAAYjsC,EAAGksC,iBAAiBjsC,EAAOq/B,YAAat/B,EAAGhJ,GACvDsB,EAAa0H,EAAGqB,gBAAkBrB,EAAGqC,MAAM/J,aAAe,EAE9D0H,EAAGouB,UAAYnuB,EAAOO,aAAe,CACjC,GAAM,EACN,GAAMR,EAAG7I,MACT,GAAM,SAAY3B,GACd,OAAOwK,EAAGhJ,EAAExB,GAAK8C,CACrB,EACA,GAAM,SAAY9C,GACd,OAAOwK,EAAGhJ,EAAExB,GAAK8C,CACrB,GACA,CACA,GAAM,SAAY9C,GACd,OAAOwK,EAAGhJ,EAAExB,GAAK8C,CACrB,EACA,GAAM,SAAY9C,GACd,OAAOwK,EAAGhJ,EAAExB,GAAK8C,CACrB,EACA,GAAM,EACN,GAAM0H,EAAG5I,QAGb4I,EAAG1O,MAAQ0O,EAAGE,KAAK5F,OAAO,IAAMnM,EAAMoD,QAAQmM,UAAU,IAAMvP,EAAMmD,OAAOqM,KAAKsuC,GAChFjsC,EAAG1O,MAAMuM,QAAQO,OAAO,QAAQtF,KAAK,QAAS3K,EAAMmD,OAC/CqjC,GACD30B,EAAG1O,MAAMwH,KAAKkH,EAAGouB,WAAWrwB,MAAM,WAAW,WACzC,OAAQrG,EAAG4C,OAAO7C,MAAMqB,KAAKmH,EAAOO,aAAe,KAAO,SAAWP,EAAOO,aAAeR,EAAG5I,OAAS,GAAK,EAAI,CACpH,IAEJ4I,EAAG1O,MAAM2M,OAAOC,QACpB,EAEArI,EAAqBs2C,YAAc,WAC/B,IAAInsC,EAAKvI,KACLwI,EAASD,EAAGC,OACZmsC,EAAapsC,EAAG4D,MAAMzL,cAAgB6H,EAAG/I,EAAEoC,MAAM4G,EAAOu/B,cAC5Dx/B,EAAGrO,MAAQqO,EAAGE,KAAK5F,OAAO,IAAMnM,EAAMyD,QAAQ8L,UAAU,IAAMvP,EAAMwD,OAAOgM,KAAKyuC,GAChFpsC,EAAGrO,MAAMkM,QAAQO,OAAO,QAAQtF,KAAK,QAAS3K,EAAMwD,OACpDqO,EAAGrO,MAAMmH,KAAK,KAAMmH,EAAOO,aAAeR,EAAG/I,EAAI,GAAG6B,KAAK,KAAMmH,EAAOO,aAAeR,EAAG/I,EAAI+I,EAAG7I,OAAO2B,KAAK,KAAMmH,EAAOO,aAAe,EAAIR,EAAG/I,GAAG6B,KAAK,KAAMmH,EAAOO,aAAeR,EAAG5I,OAAS4I,EAAG/I,GACjM+I,EAAGrO,MAAMsM,OAAOC,SAChB8B,EAAG2S,YAAY3S,EAAGrO,MAAO,OAC7B,EAEAkE,EAAqBw2C,eAAiB,SAAU72C,GAC5C,OAAOA,EAAEkP,SAAWlP,EAAEkP,SAAW,KACrC,EACA7O,EAAqBy2C,WAAa,SAAU92C,GACxC,MAAsB,UAAfA,EAAEkP,SAAuB,EAAmB,WAAflP,EAAEkP,SAAwB,GAAK,CACvE,EACA7O,EAAqB02C,WAAa,SAAU/2C,GACxC,MAAsB,UAAfA,EAAEkP,UAAwBjN,KAAKL,OAAwB,WAAf5B,EAAEkP,UAAyBjN,KAAKL,OAAS,EAAI,CAChG,EACAvB,EAAqB22C,WAAa,SAAUh3C,GACxC,MAAsB,UAAfA,EAAEkP,SAAuB,EAAmB,WAAflP,EAAEkP,SAAwBjN,KAAKN,MAAQ,EAAIM,KAAKN,KACxF,EACAtB,EAAqB4iB,WAAa,SAAUvP,GACxC,IAGI1X,EACAK,EACA6pB,EALA1b,EAAKvI,KACLyI,EAAOF,EAAGE,KACVD,EAASD,EAAGC,OAMhBD,EAAG5O,KAAK2M,MAAM,aAAciC,EAAGwT,aAAe,SAAW,WAEzDtT,EAAK5F,OAAO,QAAUnM,EAAMuD,YAAYqM,MAAM,aAAc,UACxDkC,EAAOo/B,aACPr/B,EAAGguB,cAEPhuB,EAAGvO,WAAayO,EAAK5F,OAAO,IAAMnM,EAAMsD,YAAYiM,UAAU,IAAMvP,EAAMqD,WAAWmM,KAAKsC,EAAOmvB,eAEjG59B,EAAYwO,EAAGvO,WAAWoM,QAAQO,OAAO,KAAKtF,KAAK,SAAS,SAAUtD,GAClE,OAAOrH,EAAMqD,WAAagE,EAAS,MAAI,IAAMA,EAAS,MAAI,GAC9D,KACU4I,OAAO,QAAQL,MAAM,UAAW,GAC1CvM,EAAU4M,OAAO,QAAQtF,KAAK,cAAekH,EAAGqsC,gBAAgBvzC,KAAK,YAAamH,EAAOO,aAAe,GAAK,eAAe1H,KAAK,KAAMkH,EAAGssC,YAAYxzC,KAAK,MAAO,GAAGiF,MAAM,UAAW,GAItLiC,EAAGvO,WAAWwM,OAAOtD,aAAauO,SAASA,GAAUnL,MAAM,UAAW,GAAGG,SAGrE+B,EAAOs/B,aACPv/B,EAAGmsC,cAEPnsC,EAAGlO,WAAaoO,EAAK5F,OAAO,IAAMnM,EAAM2D,YAAY4L,UAAU,IAAMvP,EAAM0D,WAAW8L,KAAKsC,EAAOqvB,eAEjGz9B,EAAYmO,EAAGlO,WAAW+L,QAAQO,OAAO,KAAKtF,KAAK,SAAS,SAAUtD,GAClE,OAAOrH,EAAM0D,WAAa2D,EAAS,MAAI,IAAMA,EAAS,MAAI,GAC9D,KACU4I,OAAO,QAAQL,MAAM,UAAW,GAC1ClM,EAAUuM,OAAO,QAAQtF,KAAK,cAAekH,EAAGqsC,gBAAgBvzC,KAAK,YAAamH,EAAOO,aAAe,cAAgB,IAAI1H,KAAK,KAAMkH,EAAGssC,YAAYxzC,KAAK,MAAO,GAAGiF,MAAM,UAAW,GAEtL2d,EAAK1b,EAAG0b,GAAGhb,KAAKV,GAChBA,EAAGlO,WAAWwI,OAAO,QAAQK,aAAauO,SAASA,GAAUpQ,KAAK,KAAMmH,EAAOO,aAAekb,EAAK,GAAG5iB,KAAK,KAAMmH,EAAOO,aAAekb,EAAK1b,EAAG7I,OAAO2B,KAAK,KAAMmH,EAAOO,aAAe,EAAIkb,GAAI5iB,KAAK,KAAMmH,EAAOO,aAAeR,EAAG5I,OAASskB,GAAI3d,MAAM,UAAW,GACjQiC,EAAGlO,WAAWwI,OAAO,QAAQK,aAAauO,SAASA,GAAUpQ,KAAK,IAAKmH,EAAOO,aAAeR,EAAGusC,WAAW7rC,KAAKV,GAAMA,EAAGwsC,WAAW9rC,KAAKV,IAAKlH,KAAK,IAAK4iB,GAAIzqB,MAAK,SAAUuE,GACvK,OAAOA,EAAEvE,IACb,IAAG8M,MAAM,UAAW,GAEpBiC,EAAGlO,WAAWmM,OAAOtD,aAAauO,SAASA,GAAUnL,MAAM,UAAW,GAAGG,QAC7E,EACArI,EAAqBskB,WAAa,SAAUrS,GACxC,IAAI9H,EAAKvI,KACLwI,EAASD,EAAGC,OACZwX,EAAKzX,EAAGyX,GAAG/W,KAAKV,GAChB1P,EAAQ0P,EAAGvO,WAAW6I,OAAO,QAC7BpJ,EAAQ8O,EAAGvO,WAAW6I,OAAO,QACjC,MAAO,EAAEwN,EAAiBxX,EAAMqK,aAAerK,GAAOwI,KAAK,KAAMmH,EAAOO,aAAe,EAAIiX,GAAI3e,KAAK,KAAMmH,EAAOO,aAAeR,EAAG7I,MAAQsgB,GAAI3e,KAAK,KAAMmH,EAAOO,aAAeiX,EAAK,GAAG3e,KAAK,KAAMmH,EAAOO,aAAeiX,EAAKzX,EAAG5I,QAAQ2G,MAAM,UAAW,IAAK+J,EAAiB5W,EAAMyJ,aAAezJ,GAAO4H,KAAK,IAAKmH,EAAOO,aAAeR,EAAGwsC,WAAW9rC,KAAKV,GAAMA,EAAGusC,WAAW7rC,KAAKV,IAAKlH,KAAK,IAAK2e,GAAIxmB,MAAK,SAAUuE,GACtZ,OAAOA,EAAEvE,IACb,IAAG8M,MAAM,UAAW,GACxB,EACAlI,EAAqB42C,eAAiB,SAAUzT,GAC5C,IAAIh5B,EAAKvI,KACLwI,EAASD,EAAGC,OACZysC,EAAa1T,EAAappB,QAAO,SAAUpa,GAC3C,OAAOA,GAAKf,EAAQe,EAAEzB,MAC1B,IACI44C,EAAU3sC,EAAGE,KAAKxC,UAAU,QAAUvP,EAAMuD,YAC5C8pB,EAAKxb,EAAGwb,GAAG9a,KAAKV,GACfC,EAAOwgC,eAIRzgC,EAAG+U,QAAQ,YAAc/U,EAAGwT,eAGhCm5B,EAAQ5uC,MAAM,aAAc,WAAWJ,KAAK,CAAC+uC,EAAW,KAAK5zC,KAAKmH,EAAOO,aAAe,KAAO,KAAMgb,GAAI1iB,KAAKmH,EAAOO,aAAe,KAAO,KAAMgb,GACjJxb,EAAG2S,YAAYg6B,EAAS,SAC5B,EACA92C,EAAqBo4B,eAAiB,WAClCx2B,KAAKyI,KAAK5F,OAAO,QAAUnM,EAAMuD,YAAYqM,MAAM,aAAc,SACrE,EACAlI,EAAqB0iB,iBAAmB,WACpC,IAAIvY,EAAKvI,KACLwI,EAASD,EAAGC,OAChBD,EAAGE,KAAK5F,OAAO,QAAUnM,EAAMuD,YAAYoH,KAAK,KAAMmH,EAAOO,aAAe,GAAK,IAAI1H,KAAK,KAAMmH,EAAOO,aAAeR,EAAG7I,OAAS,IAAI2B,KAAK,KAAMmH,EAAOO,cAAgB,GAAK,GAAG1H,KAAK,KAAMmH,EAAOO,cAAgB,GAAKR,EAAG5I,OAC9N,EACAvB,EAAqBq2C,iBAAmB,SAAUr5B,EAAMlb,GACpD,IAEIqvC,EACA4F,EACAC,EACAzzC,EALA4G,EAAKvI,KACLq1C,EAAW,GAKXC,EAAU/sC,EAAGE,KAAK5F,OAAO,IAAMnM,EAAM6D,OAAO0L,UAAU,SAASvD,OACnE,GAAa,SAAT0Y,EAIA,IAFA+5B,GADA5F,EAAUhnC,EAAGwH,cACO,GAAGwlC,cACvBH,EAAW7F,EAAQ,GAAGgG,cACjB5zC,EAAIwzC,EAAWxzC,GAAKyzC,EAAUzzC,IAC/B0zC,EAASvzC,KAAK,IAAIsP,KAAKzP,EAAI,yBAG/B0zC,EAAWn1C,EAAM0B,MAAM,KACV3D,OAASq3C,IAElBD,EAAWA,EAASl9B,QAAO,SAAUpa,GACjC,OAAQ,GAAKA,GAAGoP,QAAQ,KAAO,CACnC,KAGR,OAAOkoC,CACX,EACAj3C,EAAqBo3C,sBAAwB,SAAU11C,GACnD,OAAOA,EAAS,SAAUlH,GACtB,IAAI+F,GAAQ,EAMZ,MALA,GAAG6E,OAAO1D,GAAQlB,SAAQ,SAAU62C,IAC5B,UAAWA,GAAS78C,EAAK0D,QAAUm5C,EAAMn5C,OAAS,UAAWm5C,GAAS78C,EAAY,QAAM68C,EAAa,SACrG92C,GAAQ,EAEhB,IACOA,CACX,EAAI,WACA,OAAO,CACX,CACJ,EACAP,EAAqBw5B,gBAAkB,SAAU93B,EAAQ41C,GACrD,IAAIntC,EAAKvI,KACLwI,EAASD,EAAGC,OACZmtC,EAAWptC,EAAGitC,sBAAsB11C,GACpC81C,EAAS,SAAgBh9C,GACzB,OAAQ+8C,EAAS/8C,EACrB,EACIkqC,EAAa4S,EAAOh/C,EAAMsD,WAAatD,EAAM2D,WAC7CwoC,EAAY6S,EAAOh/C,EAAMqD,UAAYrD,EAAM0D,UAC/CmO,EAAGE,KAAK5F,OAAO,IAAMigC,GAAY78B,UAAU,IAAM48B,GAAW1qB,OAAOw9B,GAAUzyC,aAAauO,SAASjJ,EAAO0V,qBAAqB5X,MAAM,UAAW,GAAGG,SAC/IivC,EACAltC,EAAOmvB,aAAenvB,EAAOmvB,aAAaxf,OAAOy9B,GAEjDptC,EAAOqvB,aAAervB,EAAOqvB,aAAa1f,OAAOy9B,EAEzD,EAEAx3C,EAAqBic,cAAgB,WACxBra,KACNyI,KAAK5F,OAAO,IAAMnM,EAAME,OAAO+P,OAAO,KAAKtF,KAAK,QAAS3K,EAAMmB,YAAYyO,MAAM,eAAgB,EACxG,EACAlI,EAAqBwjB,gBAAkB,WACnC,IAEIi0B,EACAC,EAHAvtC,EAAKvI,KACLwI,EAASD,EAAGC,OAGZyxB,EAAc1xB,EAAG0xB,cAGjBpiC,EAAa0Q,EAAGE,KAAK5F,OAAO,IAAMnM,EAAMmB,YAAYyO,MAAM,SAAUkC,EAAOwQ,aAAexQ,EAAOO,aAAe,YAAc,YAAc,MAAMoH,QAAQzZ,EAAMqB,mBAAoBkiC,GAAa9pB,QAAQzZ,EAAMoB,kBAAmBmiC,GAGtOpiC,EAAWoO,UAAU,IAAMvP,EAAMkB,WAAW6O,SAG5C8B,EAAG3Q,UAAYC,EAAWoO,UAAU,IAAMvP,EAAMkB,WAE5CqiC,GACA4b,EAAkBttC,EAAG3Q,UAAUsO,KAAK,CAAC,IAErCqC,EAAGwtC,gCAAgCF,EAAgBzvC,SAEnDmC,EAAGytC,gBAAgBH,KAInBC,EAAqBvtC,EAAGwlC,sBAAsBxlC,EAAGrC,KAAKqE,SACtD1S,EAAWo+C,MAAMH,EAAqBA,EAAmBjlC,OAAS,IAClEtI,EAAG3Q,UAAYC,EAAWoO,UAAU,IAAMvP,EAAMkB,WAChDi+C,EAAkBttC,EAAG3Q,UAAUsO,MAAK,SAAUnI,GAC1C,OAAOA,CACX,IAEAwK,EAAG2tC,6BAA6BL,EAAgBzvC,SAEhDmC,EAAGytC,gBAAgBH,GAEnBA,EAAgBrvC,OAAOC,SAE/B,EACArI,EAAqB43C,gBAAkB,SAAUH,GAC7C,IAEIt2C,EACAC,EACAoD,EACAD,EACAwzC,EACAC,EAPA7tC,EAAKvI,KACLwI,EAASD,EAAGC,OAShBqtC,EAAkBA,GAAmBttC,EAAG3Q,UAAUsO,MAAK,SAAUnI,GAC7D,OAAOA,CACX,IAEIwK,EAAG0xB,eAEH16B,EAAI,EACJC,EAAI,EACJoD,EAAI2F,EAAG7I,MACPiD,EAAI4F,EAAG5I,UAEF4I,EAAG6a,cAAe7a,EAAG2B,gBAAoB3B,EAAGqB,iBAwC7CusC,EAAQ5tC,EAAG8tC,oBACXD,EAAQ,SAAer4C,GACnB,OAAOwK,EAAGhJ,EAAExB,EAAEwB,GAAK42C,EAAQ,CAC/B,IAxCA5tC,EAAGqlC,WAEHuI,EAAQ,SAAep4C,GACnB,IAAIu4C,EAAQ/tC,EAAGslC,SAAS9vC,EAAE8F,OACtB0yC,EAAQhuC,EAAGulC,SAAS/vC,EAAE8F,OAG1B,OAAc,OAAVyyC,GAA4B,OAAVC,EACX/tC,EAAOO,aAAeR,EAAG5I,OAAS4I,EAAG7I,OAGlC,OAAV42C,IACAA,EAAQ/tC,EAAGhJ,EAAEgC,SAAS,IAEZ,OAAVg1C,IACAA,EAAQhuC,EAAGhJ,EAAEgC,SAAS,IAGnB7D,KAAK+G,IAAI,GAAI8D,EAAGhJ,EAAEg3C,GAAShuC,EAAGhJ,EAAE+2C,IAAU,GACrD,EACAF,EAAQ,SAAer4C,GACnB,IAAIu4C,EAAQ/tC,EAAGslC,SAAS9vC,EAAE8F,OACtB0yC,EAAQhuC,EAAGulC,SAAS/vC,EAAE8F,OACtB2yC,EAAQjuC,EAAGrC,KAAK8R,GAAGja,EAAEsN,IAAItN,EAAE8F,OAG/B,OAAc,OAAVyyC,GAA4B,OAAVC,EACX,GAGG,OAAVD,IACAA,EAAQ/tC,EAAGhJ,EAAEgC,SAAS,KAGlBgH,EAAGhJ,EAAEi3C,GAASjuC,EAAGhJ,EAAE+2C,IAAU,EACzC,GAOJ/2C,EAAIiJ,EAAOO,aAAe,EAAIqtC,EAC9B52C,EAAIgJ,EAAOO,aAAeqtC,EAAQ,EAClCxzC,EAAI4F,EAAOO,aAAeR,EAAG7I,MAAQy2C,EACrCxzC,EAAI6F,EAAOO,aAAeotC,EAAQ5tC,EAAG5I,QAGzCk2C,EAAgBx0C,KAAK,QAASkH,EAAG+6B,WAAWr6B,KAAKV,IAAKlH,KAAK,IAAK9B,GAAG8B,KAAK,IAAK7B,GAAG6B,KAAK,QAASuB,GAAGvB,KAAK,SAAUsB,EACpH,EACAvE,EAAqB83C,6BAA+B,SAAUO,GAC1D,IAAIluC,EAAKvI,KACLC,EAAKsI,EAAGtI,GACRuI,EAASD,EAAGC,OAChBiuC,EAAe9vC,OAAO,QAAQtF,KAAK,QAASkH,EAAG+6B,WAAWr6B,KAAKV,IAAKjC,MAAM,SAAUkC,EAAO6wB,wBAA0B7wB,EAAOixB,uBAAyB,UAAY,MAAMvgB,GAAG,aAAa,SAAUnb,GAC7L,IAAI8F,EAAQ9F,EAAE8F,MAEV0E,EAAGgM,UAAYhM,EAAGiM,SAGlBjM,EAAGwT,eAKHvT,EAAO2/B,4BACP5/B,EAAGmuC,cAAc7yC,EAAO,MAAM,GAElC0E,EAAGouC,WAAW9yC,EAAO,MAAM,GAG3B0E,EAAGE,KAAKxC,UAAU,IAAMvP,EAAMgC,MAAQ,IAAMmL,GAAOf,MAAK,SAAU/E,GAC9DyK,EAAO84B,iBAAiBxkC,KAAKyL,EAAGmK,IAAK3U,EACzC,IACJ,IAAGmb,GAAG,YAAY,SAAUnb,GACxB,IAAI8F,EAAQ9F,EAAE8F,MACT0E,EAAGC,SAGJD,EAAGwT,eAGPxT,EAAGiuB,iBACHjuB,EAAGm5B,cAEHn5B,EAAGquC,kBACHruC,EAAGsuC,eAEHtuC,EAAGE,KAAKxC,UAAU,IAAMvP,EAAMgC,MAAQ,IAAMmL,GAAOf,MAAK,SAAU/E,GAC9DyK,EAAOm5B,gBAAgB7kC,KAAKyL,EAAGmK,IAAK3U,EACxC,KACJ,IAAGmb,GAAG,aAAa,SAAUnb,GACzB,IAAIwjC,EACA19B,EAAQ9F,EAAE8F,MACVjM,EAAY2Q,EAAG+G,IAAIzM,OAAO,IAAMnM,EAAMkB,UAAY,IAAMiM,GAExD0E,EAAGgM,UAAYhM,EAAGiM,SAGlBjM,EAAGwT,eAIHxT,EAAGuuC,WAAW/4C,IAAmC,eAA7BwK,EAAGC,OAAO+/B,gBAAmCtoC,EAAG+5B,MAAMh6B,MAAM,GAAKuI,EAAGhJ,EAAEgJ,EAAGglC,UAAUxvC,EAAEsN,GAAIxH,MAC7GA,GAAS,GAIb09B,EAAeh5B,EAAGgH,oBAAoBhH,EAAGrC,KAAKqE,SAAS5G,KAAI,SAAUif,GACjE,OAAOra,EAAG+1B,QAAQ/1B,EAAGstB,gBAAgBjT,EAAE/R,OAAQhN,GACnD,IAEI2E,EAAOygC,kBACP1gC,EAAGi5B,YAAYD,EAAcvhC,MAC7BuI,EAAGysC,eAAezT,MAGlB/4B,EAAOygC,iBAAqBzgC,EAAO6wB,yBAA0B7wB,EAAOixB,yBAIxElxB,EAAGE,KAAKxC,UAAU,IAAMvP,EAAMgC,MAAQ,IAAMmL,GAAOf,MAAK,WACpD7C,EAAG4C,OAAO7C,MAAMmQ,QAAQzZ,EAAM0E,UAAU,GACpCoN,EAAO6wB,wBACPzhC,EAAU0O,MAAM,SAAUkC,EAAOixB,uBAAyB,UAAY,MAErEjxB,EAAOygC,kBACR1gC,EAAGiuB,iBACHjuB,EAAGm5B,cACEl5B,EAAOixB,yBACRlxB,EAAGquC,gBAAgB/yC,GACnB0E,EAAGsuC,aAAahzC,IAG5B,IAAGsU,QAAO,SAAUpa,GAChB,OAAOwK,EAAGwuC,cAAc/2C,KAAMjC,EAClC,IAAG+E,MAAK,SAAU/E,GACVyK,EAAO6wB,yBAA2B7wB,EAAOixB,wBAA0BjxB,EAAOoxB,4BAA4B77B,KACtGnG,EAAU0O,MAAM,SAAU,WAEzBkC,EAAOygC,kBACR1gC,EAAGi5B,YAAY,CAACzjC,GAAIiC,MACpBuI,EAAGysC,eAAe,CAACj3C,IACfyK,EAAO2/B,4BACP5/B,EAAGmuC,cAAc7yC,EAAO9F,EAAEsN,IAAI,GAElC9C,EAAGouC,WAAW9yC,EAAO9F,EAAEsN,IAAI,GAEnC,IACJ,IAAG6N,GAAG,SAAS,SAAUnb,GACrB,IAAI8F,EAAQ9F,EAAE8F,OACV0E,EAAGwT,cAAiBxT,EAAGq5B,cAGvBr5B,EAAGkM,YACHlM,EAAGkM,aAAc,GAGjBlM,EAAGuuC,WAAW/4C,IAAgC,eAA1ByK,EAAO+/B,gBAAmCtoC,EAAG+5B,MAAMh6B,MAAM,GAAKuI,EAAGhJ,EAAEgJ,EAAGglC,UAAUxvC,EAAEsN,GAAIxH,MAC1GA,GAAS,GAEb0E,EAAGE,KAAKxC,UAAU,IAAMvP,EAAMgC,MAAQ,IAAMmL,GAAOf,MAAK,SAAU/E,IAC1DyK,EAAOixB,wBAA0BlxB,EAAGwuC,cAAc/2C,KAAMjC,MACxDwK,EAAGq5B,YAAY5hC,KAAMjC,EAAG8F,GACxB0E,EAAGC,OAAOq5B,aAAa/kC,KAAKyL,EAAGmK,IAAK3U,EAAGiC,MAE/C,KACJ,IAAGlD,KAAK0L,EAAOy9B,0BAA4B19B,EAAGwqC,KAAO9yC,EAAG+2C,SAASjE,OAAOkE,OAAO76C,QAAQ8c,GAAG,QAAQ,WAC9F3Q,EAAGwqC,KAAK9yC,EAAG+5B,MAAMh6B,MACrB,IAAGkZ,GAAG,aAAa,WACf3Q,EAAGwrC,UAAU9zC,EAAG+5B,MAAMh6B,MAC1B,IAAGkZ,GAAG,WAAW,WACb3Q,EAAGyrC,SACP,IAAK,WAAa,EACtB,EAEA51C,EAAqB23C,gCAAkC,SAAUU,GAC7D,IAAIluC,EAAKvI,KACLC,EAAKsI,EAAGtI,GACRuI,EAASD,EAAGC,OAEhB,SAAS0uC,IACL3uC,EAAG+G,IAAIzM,OAAO,IAAMnM,EAAMkB,WAAW0O,MAAM,SAAU,MACrDiC,EAAGiuB,iBACHjuB,EAAGm5B,cACHn5B,EAAGquC,kBACHruC,EAAGsuC,cACP,CAEAJ,EAAe9vC,OAAO,QAAQtF,KAAK,IAAK,GAAGA,KAAK,IAAK,GAAGA,KAAK,QAASkH,EAAG7I,OAAO2B,KAAK,SAAUkH,EAAG5I,QAAQ0B,KAAK,QAAS3K,EAAMkB,WAAWshB,GAAG,YAAY,WAC/I3Q,EAAGC,SAGJD,EAAGwT,cAGPm7B,IACJ,IAAGh+B,GAAG,aAAa,WACf,IACI8gB,EAAOoW,EAAoB7O,EAD3BpyB,EAAgB5G,EAAGgH,oBAAoBhH,EAAGrC,KAAKqE,SAG/ChC,EAAGgM,UAGHhM,EAAGwT,WAAW5M,KAIlB6qB,EAAQ/5B,EAAG+5B,MAAMh6B,MACjBowC,EAAU7nC,EAAG0nC,uBAAuB9gC,EAAe6qB,IAE/CzxB,EAAGmM,WAAe07B,GAAWA,EAAQ/kC,KAAO9C,EAAGmM,UAAUrJ,KACzD7C,EAAOm5B,gBAAgB7kC,KAAKyL,EAAGmK,IAAKnK,EAAGmM,WACvCnM,EAAGmM,eAAY3R,GAGdqtC,GAYL7O,GAPIh5B,EAAGsb,cAAcusB,KAAa5nC,EAAOygC,gBACzB,CAACmH,GAED7nC,EAAG+kC,UAAUn+B,EAAeihC,EAAQ7wC,IAI3BoE,KAAI,SAAU5F,GACnC,OAAOwK,EAAG+1B,QAAQvgC,EACtB,IACAwK,EAAGi5B,YAAYD,EAAcvhC,MAGzBwI,EAAO2/B,4BACP5/B,EAAGmuC,cAActG,EAAQvsC,MAAOusC,EAAQ/kC,IAAI,GAEhD9C,EAAGouC,WAAWvG,EAAQvsC,MAAOusC,EAAQ/kC,IAAI,GAGzC9C,EAAGysC,eAAezT,IAGdh5B,EAAGqX,UAAUwwB,EAAQ/kC,KAAO9C,EAAGgoC,KAAKH,EAASpW,GAASxxB,EAAO0/B,qBAC7D3/B,EAAG+G,IAAIzM,OAAO,IAAMnM,EAAMkB,WAAW0O,MAAM,SAAU,WAChDiC,EAAGmM,YACJlM,EAAO84B,iBAAiBxkC,KAAKyL,EAAGmK,IAAK09B,GACrC7nC,EAAGmM,UAAY07B,KA9BnB8G,IAiCR,IAAGh+B,GAAG,SAAS,WACX,IACI8gB,EAAOoW,EADPjhC,EAAgB5G,EAAGgH,oBAAoBhH,EAAGrC,KAAKqE,SAE/ChC,EAAGwT,WAAW5M,KAIlB6qB,EAAQ/5B,EAAG+5B,MAAMh6B,OACjBowC,EAAU7nC,EAAG0nC,uBAAuB9gC,EAAe6qB,MAK/CzxB,EAAGqX,UAAUwwB,EAAQ/kC,KAAO9C,EAAGgoC,KAAKH,EAASpW,GAASxxB,EAAO0/B,oBAC7D3/B,EAAGE,KAAKxC,UAAU,IAAMvP,EAAMiC,OAAS4P,EAAG0wB,wBAAwBmX,EAAQ/kC,KAAKpF,UAAU,IAAMvP,EAAMgC,MAAQ,IAAM03C,EAAQvsC,OAAOf,MAAK,YAC/H0F,EAAOixB,wBAA0BlxB,EAAGwuC,cAAc/2C,KAAMowC,MACxD7nC,EAAGq5B,YAAY5hC,KAAMowC,EAASA,EAAQvsC,OACtC0E,EAAGC,OAAOq5B,aAAa/kC,KAAKyL,EAAGmK,IAAK09B,EAASpwC,MAErD,IAER,IAAGlD,KAAK0L,EAAOy9B,0BAA4B19B,EAAGwqC,KAAO9yC,EAAG+2C,SAASjE,OAAOkE,OAAO76C,QAAQ8c,GAAG,QAAQ,WAC9F3Q,EAAGwqC,KAAK9yC,EAAG+5B,MAAMh6B,MACrB,IAAGkZ,GAAG,aAAa,WACf3Q,EAAGwrC,UAAU9zC,EAAG+5B,MAAMh6B,MAC1B,IAAGkZ,GAAG,WAAW,WACb3Q,EAAGyrC,SACP,IAAK,WAAa,EACtB,EACA51C,EAAqBg8B,cAAgB,SAAUhf,EAAMvX,EAAOm2B,GACxD,IAAIzxB,EAAKvI,KACLm3C,EAAW,IAAMzgD,EAAMkB,WAAc2Q,EAAG0xB,cAA8B,GAAd,IAAMp2B,GAC9DjM,EAAY2Q,EAAGE,KAAK5F,OAAOs0C,GAAUxvC,OACrCzI,EAAMtH,EAAUuH,wBAChBI,EAAIL,EAAIoI,MAAQ0yB,EAAQA,EAAM,GAAK,GACnCx6B,EAAIN,EAAIiI,KAAO6yB,EAAQA,EAAM,GAAK,GAClCod,EAAQx/B,SAASy/B,YAAY,eAEjCD,EAAME,eAAel8B,GAAM,GAAM,EAAMzI,OAAQ,EAAGpT,EAAGC,EAAGD,EAAGC,GAAG,GAAO,GAAO,GAAO,EAAO,EAAG,MAC7F5H,EAAUwiC,cAAcgd,EAC5B,EAEAh5C,EAAqB2b,WAAa,WAC9B,IAAIxR,EAAKvI,KAIT,GAHAuI,EAAGgvC,kBAAoB,CAAC,EACxBhvC,EAAGivC,mBAAoB,EACvBjvC,EAAGkT,OAASlT,EAAG+G,IAAI3I,OAAO,KAAKtF,KAAK,YAAakH,EAAGM,aAAa,YAC5DN,EAAGC,OAAOyX,YAGX,OAFA1X,EAAGkT,OAAOnV,MAAM,aAAc,eAC9BiC,EAAGsN,gBAAkBtN,EAAG+P,SAAS/P,EAAGrC,KAAKqE,UAK7ChC,EAAGkvC,0BACP,EACAr5C,EAAqBq5C,yBAA2B,WAC5C,IAAIlvC,EAAKvI,KACTuI,EAAG2X,aAAa3X,EAAG+P,SAAS/P,EAAGrC,KAAKqE,SAAU,CAAEqQ,eAAe,EAAOoI,4BAA4B,EAAO3S,gBAAgB,GAC7H,EACAjS,EAAqB6e,oBAAsB,SAAUzB,EAAcG,GAC/D,IAAIpT,EAAKvI,KACLwI,EAASD,EAAGC,OACZkvC,EAAsB,CACtBvwC,IAAKoB,EAAG6N,YAAc7N,EAAGmU,uBAAyBlU,EAAO+9B,eAAiB,IAAMh+B,EAAGgU,cAAgBf,EAAejT,EAAGqU,0BAA4BpU,EAAO+9B,eACxJj/B,KAAMiB,EAAG+N,aAAe/N,EAAGsU,wBAA0BrU,EAAO89B,eAAiB,GAAM/9B,EAAG8T,aAAeV,EAAcpT,EAAGoU,yBAA2BnU,EAAO89B,eAAiB,IAG7K/9B,EAAGyU,QAAU,CACT7V,IAAKoB,EAAG0N,cAAgB,EAAI1N,EAAG4N,cAAgBuhC,EAAoBvwC,IAAMoB,EAAGgU,cAAgBf,EAC5FpU,MAAO2V,IACP1V,OAAQ,EACRC,KAAMiB,EAAG0N,cAAgB1N,EAAG8T,aAAeV,EAAcpT,EAAG4N,cAAgBuhC,EAAoBpwC,KAAO,EAE/G,EACAlJ,EAAqBkmB,gBAAkB,SAAUjU,GAC7C,IAAI9H,EAAKvI,MACRqQ,EAAiB9H,EAAGkT,OAAOvY,aAAeqF,EAAGkT,QAAQpa,KAAK,YAAakH,EAAGM,aAAa,UAC5F,EACAzK,EAAqBu5C,iBAAmB,SAAUC,GAC9C53C,KAAKuW,WAAaqhC,CACtB,EACAx5C,EAAqBy5C,sBAAwB,SAAUj1C,GACnD5C,KAAKwW,gBAAkB5T,CAC3B,EACAxE,EAAqB05C,uBAAyB,SAAUn1C,GACpD3C,KAAKyW,iBAAmB9T,CAC5B,EACAvE,EAAqBwd,eAAiB,WAClC,IAAIrT,EAAKvI,KACT,OAAOuI,EAAGC,OAAOyX,YAAc1X,EAAG0N,eAAiB1N,EAAG4N,cAAgB5N,EAAGiO,iBAAmBjO,EAAGgO,WAAa,GAAKhO,EAAG8T,aAAe,CACvI,EACAje,EAAqBsd,gBAAkB,WACnC,IAAInT,EAAKvI,KACL2C,EAAI,EAQR,OAPI4F,EAAGC,OAAOyX,cAENtd,EADA4F,EAAG0N,cACC1N,EAAGgU,cAEH7e,KAAK+G,IAAI,GAAI8D,EAAGkO,mBAAqBlO,EAAGgO,WAAa,IAG1D5T,CACX,EACAvE,EAAqB25C,iBAAmB,SAAUj9C,GAC9C,OAAOA,EAAWqV,QAAQzZ,EAAMuE,kBAAoB,KAAO,CAC/D,EACAmD,EAAqB45C,0BAA4B,SAAUl9C,GACvD,OAAOA,EAAWqV,QAAQzZ,EAAMuE,kBAAoB,KAAO,EAC/D,EACAmD,EAAqBi5B,kBAAoB,SAAUpD,EAAW6C,GAC1D,IAAIvuB,EAAKvI,KACTi0B,EAAY1rB,EAAGyuB,eAAe/C,GAC9B1rB,EAAGkT,OAAOxV,UAAU,IAAMvP,EAAMoE,YAAYqd,QAAO,SAAU9M,GACzD,OAAO4oB,EAAU9mB,QAAQ9B,IAAO,CACpC,IAAG8E,QAAQzZ,EAAMwE,kBAAmB47B,GAAO5zB,aAAauO,SAAS,KAAKnL,MAAM,WAAW,WAEnF,OADcwwB,EAAQvuB,EAAGwvC,iBAAmBxvC,EAAGyvC,2BAChCl7C,KAAKyL,EAAIA,EAAGtI,GAAG4C,OAAO7C,MACzC,GACJ,EACA5B,EAAqBqjC,aAAe,WAChC,IAAIl5B,EAAKvI,KACLC,EAAKsI,EAAGtI,GACZsI,EAAGkT,OAAOxV,UAAU,IAAMvP,EAAMoE,YAAYqV,QAAQzZ,EAAMwE,mBAAmB,GAAOgI,aAAauO,SAAS,KAAKnL,MAAM,WAAW,WAC5H,OAAOiC,EAAGwvC,iBAAiB93C,EAAG4C,OAAO7C,MACzC,GACJ,EACA5B,EAAqBm5B,WAAa,SAAUtD,GACxC,IAAI1rB,EAAKvI,KACLwI,EAASD,EAAGC,OACXA,EAAOyX,cACRzX,EAAOyX,aAAc,EACrB1X,EAAGkT,OAAOnV,MAAM,aAAc,WACzBiC,EAAGivC,mBACJjvC,EAAGkvC,4BAGXlvC,EAAG4lC,sBAAsBla,GACzB1rB,EAAGkT,OAAOxV,UAAUsC,EAAGkvB,gBAAgBxD,IAAY3tB,MAAM,aAAc,WAAWpD,aAAaoD,MAAM,WAAW,WAC5G,OAAOiC,EAAGwvC,iBAAiBxvC,EAAGtI,GAAG4C,OAAO7C,MAC5C,GACJ,EACA5B,EAAqB85B,WAAa,SAAUjE,GACxC,IAAI1rB,EAAKvI,KACLwI,EAASD,EAAGC,OACZA,EAAOyX,aAAejiB,EAAQi2B,KAC9BzrB,EAAOyX,aAAc,EACrB1X,EAAGkT,OAAOnV,MAAM,aAAc,WAElCiC,EAAGiQ,mBAAmByb,GACtB1rB,EAAGkT,OAAOxV,UAAUsC,EAAGkvB,gBAAgBxD,IAAY3tB,MAAM,UAAW,GAAGA,MAAM,aAAc,SAC/F,EACAlI,EAAqBi2B,4BAA8B,WAC/Cr0B,KAAKu3C,kBAAoB,CAAC,CAC9B,EACAn5C,EAAqB8hB,aAAe,SAAU+T,EAAW31B,EAASuT,GAC9D,IAEIomC,EAAYC,EAAgBC,EAAgBC,EAAYC,EAAgBC,EAAgBC,EAAiBC,EAAiBC,EAO1HC,EAQAroC,EAAgB2S,EAChBvpB,EAAOk/C,EAAOC,EAAOC,EAlBrBtwC,EAAKvI,KACLwI,EAASD,EAAGC,OAEZswC,EAAa,EACbxG,EAAe,GACfpuC,EAAW,EACX60C,EAAY,EACZC,EAAS,GACTC,EAAYzwC,EAAOs+B,uBAAyB,EAE5CoS,EAAc,EACdC,EAAU,CAAC,EACXC,EAAS,CAAC,EACVC,EAAU,CAAC,EACXC,EAAU,CAAC,GACXC,EAAQ,CAAC,EACT3B,EAAO,EAaX,SAAS4B,EAAWC,EAAapuC,GAI7B,OAHK9C,EAAGgvC,kBAAkBlsC,KACtB9C,EAAGgvC,kBAAkBlsC,GAAM9C,EAAGmxC,YAAYD,EAAYE,YAAajjD,EAAMoE,WAAY2+C,IAElFlxC,EAAGgvC,kBAAkBlsC,EAChC,CAEA,SAASuuC,EAAgBH,EAAapuC,EAAIxH,GACtC,IAOI4Y,EACAo9B,EARAC,EAAkB,IAAVj2C,EACRk2C,EAASl2C,IAAUowB,EAAUh2B,OAAS,EACtCiB,EAAMs6C,EAAWC,EAAapuC,GAC9B2uC,EAAY96C,EAAIQ,MAAQu5C,IAAac,GAAYxxC,EAAG0N,eAAiB1N,EAAG4N,cAAqBm8B,EAAJ,GAAoB9pC,EAAOq+B,eACpHoT,EAAa/6C,EAAIS,OAASm5C,EAC1BoB,EAAa3xC,EAAG0N,eAAiB1N,EAAG4N,cAAgB8jC,EAAaD,EACjEG,EAAa5xC,EAAG0N,eAAiB1N,EAAG4N,cAAgB5N,EAAGmT,kBAAoBnT,EAAGqT,iBAKlF,SAASw+B,EAAa/uC,EAAIgvC,GACjBA,IACD59B,GAAU09B,EAAajB,EAAcgB,GAAc,GACtClB,IACTv8B,GAAU09B,EAAaD,GAAc,EACrChB,EAAc,EACdtB,KAGR2B,EAAMluC,GAAMusC,EACZ0B,EAAQ1B,GAAQrvC,EAAG4N,cAAgB,GAAKsG,EACxC08B,EAAQ9tC,GAAM6tC,EACdA,GAAegB,CACnB,CAEIJ,IACAZ,EAAc,EACdtB,EAAO,EACP1zC,EAAW,EACX60C,EAAY,IAGZvwC,EAAOyX,aAAgB1X,EAAGivB,eAAensB,IAK7C+tC,EAAO/tC,GAAM2uC,EACbX,EAAQhuC,GAAM4uC,IAET/1C,GAAY81C,GAAa91C,KAC1BA,EAAW81C,KAEVjB,GAAakB,GAAclB,KAC5BA,EAAYkB,GAEhBJ,EAAYtxC,EAAG0N,eAAiB1N,EAAG4N,cAAgB4iC,EAAY70C,EAE3DsE,EAAOo+B,gBACPxqC,OAAO8B,KAAKk7C,GAAQx6C,SAAQ,SAAUyM,GAClC+tC,EAAO/tC,GAAMnH,CACjB,IACA9H,OAAO8B,KAAKm7C,GAASz6C,SAAQ,SAAUyM,GACnCguC,EAAQhuC,GAAM0tC,CAClB,KACAt8B,GAAU09B,EAAaN,EAAY5lB,EAAUh2B,QAAU,GAC1C+6C,GACTE,EAAc,EACdtB,EAAO,EACP3jB,EAAUr1B,SAAQ,SAAUyM,GACxB+uC,EAAa/uC,EACjB,KAEA+uC,EAAa/uC,GAAI,IAGrB+uC,EAAa/uC,IAjCb+tC,EAAO/tC,GAAMguC,EAAQhuC,GAAMkuC,EAAMluC,GAAM8tC,EAAQ9tC,GAAM,CAmC7D,CArFA4oB,EAAYA,EAAU9b,QAAO,SAAU9M,GACnC,OAAQ7N,EAAUgL,EAAOk9B,WAAWr6B,KAAkC,OAA1B7C,EAAOk9B,WAAWr6B,EAClE,IAGAgF,EAAiBhS,EADjBC,EAAUA,GAAW,CAAC,EACc,kBAAkB,GACtD0kB,EAA6B3kB,EAAUC,EAAS,8BAA8B,GAiF1EiK,EAAG4N,gBACHyhC,EAAOpvC,EAAOg+B,kBAAoBh+B,EAAOg+B,kBAAoBvS,EAAUh2B,OACvEsK,EAAGovC,iBAAiBC,IAGpBrvC,EAAG0N,eACHgiC,EAAa,SAAoB5sC,GAC7B,OAAOnH,EAAWq1C,EAAMluC,EAC5B,EACA+sC,EAAa,SAAoB/sC,GAC7B,OAAOiuC,EAAQC,EAAMluC,IAAO8tC,EAAQ9tC,EACxC,GACO9C,EAAG4N,eACV8hC,EAAa,SAAoB5sC,GAC7B,OAAOnH,EAAWq1C,EAAMluC,GAAM,EAClC,EACA+sC,EAAa,SAAoB/sC,GAC7B,OAAOiuC,EAAQC,EAAMluC,IAAO8tC,EAAQ9tC,EACxC,IAEA4sC,EAAa,SAAoB5sC,GAC7B,OAAOiuC,EAAQC,EAAMluC,IAAO8tC,EAAQ9tC,EACxC,EACA+sC,EAAa,SAAoB/sC,GAC7B,OAAO0tC,EAAYQ,EAAMluC,EAC7B,GAEJ6sC,EAAiB,SAAwB7sC,EAAI1J,GACzC,OAAOs2C,EAAW5sC,EAAI1J,GAAK,EAAI6G,EAAOs+B,sBAC1C,EACAuR,EAAiB,SAAwBhtC,EAAI1J,GACzC,OAAOy2C,EAAW/sC,EAAI1J,GAAK,CAC/B,EACAw2C,EAAiB,SAAwB9sC,EAAI1J,GACzC,OAAOs2C,EAAW5sC,EAAI1J,EAC1B,EACA22C,EAAiB,SAAwBjtC,EAAI1J,GACzC,OAAOy2C,EAAW/sC,EAAI1J,GAAK,CAC/B,EACA42C,EAAkB,SAAyBltC,EAAI1J,GAC3C,OAAOs2C,EAAW5sC,EAAI1J,GAAK,CAC/B,EACA62C,EAAkB,SAAyBntC,EAAI1J,GAC3C,OAAOs2C,EAAW5sC,EAAI1J,GAAK,EAAI6G,EAAOs+B,sBAC1C,EACA2R,EAAiB,SAAwBptC,EAAI1J,GACzC,OAAOy2C,EAAW/sC,EAAI1J,GAAK,CAC/B,GAGA+2C,EAAInwC,EAAGkT,OAAOxV,UAAU,IAAMvP,EAAMoE,YAAYoL,KAAK+tB,GAAW7tB,QAAQO,OAAO,KAAKtF,KAAK,SAAS,SAAUgK,GACxG,OAAO9C,EAAGg6B,cAAc7rC,EAAMoE,WAAYuQ,EAC9C,IAAG/E,MAAM,cAAc,SAAU+E,GAC7B,OAAO9C,EAAGivB,eAAensB,GAAM,UAAY,QAC/C,IAAG/E,MAAM,SAAU,WAAW4S,GAAG,SAAS,SAAU7N,GAC5C7C,EAAOi+B,oBACPj+B,EAAOi+B,oBAAoB3pC,KAAKyL,EAAI8C,GAEhC9C,EAAGtI,GAAGm3C,MAAMkD,QACZ/xC,EAAGmK,IAAIulB,OACP1vB,EAAGmK,IAAIslB,KAAK3sB,KAEZ9C,EAAGmK,IAAI4mB,OAAOjuB,GACd9C,EAAG0V,eAAe5S,GAAM9C,EAAGmK,IAAIokB,MAAMzrB,GAAM9C,EAAGmK,IAAIwkB,SAG9D,IAAGhe,GAAG,aAAa,SAAU7N,GACrB7C,EAAOk+B,wBACPl+B,EAAOk+B,wBAAwB5pC,KAAKyL,EAAI8C,IAExC9C,EAAGtI,GAAG4C,OAAO7C,MAAMmQ,QAAQzZ,EAAMwE,mBAAmB,IAC/CqN,EAAGoM,YAAcpM,EAAG0V,eAAe5S,IACpC9C,EAAGmK,IAAIokB,MAAMzrB,GAGzB,IAAG6N,GAAG,YAAY,SAAU7N,GACpB7C,EAAOm+B,uBACPn+B,EAAOm+B,uBAAuB7pC,KAAKyL,EAAI8C,IAEvC9C,EAAGtI,GAAG4C,OAAO7C,MAAMmQ,QAAQzZ,EAAMwE,mBAAmB,GACpDqN,EAAGmK,IAAIwkB,SAEf,KACEvwB,OAAO,QAAQnN,MAAK,SAAU6R,GAC5B,OAAO7N,EAAUgL,EAAOk9B,WAAWr6B,IAAO7C,EAAOk9B,WAAWr6B,GAAMA,CACtE,IAAGvI,MAAK,SAAUuI,EAAI1J,GAClBi4C,EAAgB55C,KAAMqL,EAAI1J,EAC9B,IAAG2E,MAAM,iBAAkB,QAAQjF,KAAK,IAAKkH,EAAG0N,eAAiB1N,EAAG4N,cAAgB+hC,GAAkB,KAAK72C,KAAK,IAAKkH,EAAG0N,eAAiB1N,EAAG4N,eAAiB,IAAMkiC,GACnKK,EAAE/xC,OAAO,QAAQtF,KAAK,QAAS3K,EAAMqE,iBAAiBuL,MAAM,eAAgB,GAAGjF,KAAK,IAAKkH,EAAG0N,eAAiB1N,EAAG4N,cAAgBgiC,GAAkB,KAAK92C,KAAK,IAAKkH,EAAG0N,eAAiB1N,EAAG4N,eAAiB,IAAMmiC,GAC/MI,EAAE/xC,OAAO,QAAQtF,KAAK,QAAS3K,EAAMsE,gBAAgBsL,MAAM,SAAUiC,EAAGqM,OAAOtO,MAAM,iBAAkB,QAAQjF,KAAK,KAAMkH,EAAG0N,eAAiB1N,EAAG4N,cAAgBoiC,GAAmB,KAAKl3C,KAAK,KAAMkH,EAAG0N,eAAiB1N,EAAG4N,eAAiB,IAAMsiC,GAAgBp3C,KAAK,KAAMkH,EAAG0N,eAAiB1N,EAAG4N,cAAgBqiC,GAAmB,KAAKn3C,KAAK,KAAMkH,EAAG0N,eAAiB1N,EAAG4N,eAAiB,IAAMsiC,GAAgBp3C,KAAK,eAAgBmH,EAAOu+B,yBAGjb8R,EAAatwC,EAAGkT,OAAO5Y,OAAO,IAAMnM,EAAMmE,iBAAmB,SACzD0N,EAAG4N,eAAiBjS,EAAW,GAA2B,IAAtB20C,EAAWn2C,SAC/Cm2C,EAAatwC,EAAGkT,OAAOpV,OAAO,IAAK,IAAM3P,EAAMoE,YAAYuG,KAAK,QAAS3K,EAAMmE,kBAAkB8L,OAAO,SAG5GlN,EAAQ8O,EAAGkT,OAAOxV,UAAU,QAAQC,KAAK+tB,GAAWz6B,MAAK,SAAU6R,GAC/D,OAAO7N,EAAUgL,EAAOk9B,WAAWr6B,IAAO7C,EAAOk9B,WAAWr6B,GAAMA,CACtE,IACCvI,MAAK,SAAUuI,EAAI1J,GAChBi4C,EAAgB55C,KAAMqL,EAAI1J,EAC9B,KACC0O,EAAiB5W,EAAMyJ,aAAezJ,GAAO4H,KAAK,IAAK62C,GAAgB72C,KAAK,IAAKg3C,GAElFM,EAAQpwC,EAAGkT,OAAOxV,UAAU,QAAUvP,EAAMqE,iBAAiBmL,KAAK+tB,IACjE5jB,EAAiBsoC,EAAMz1C,aAAey1C,GAAOt3C,KAAK,SAAS,SAAUgK,GAClE,OAAO+tC,EAAO/tC,EAClB,IAAGhK,KAAK,UAAU,SAAUgK,GACxB,OAAOguC,EAAQhuC,EACnB,IAAGhK,KAAK,IAAK82C,GAAgB92C,KAAK,IAAKi3C,GAEvCM,EAAQrwC,EAAGkT,OAAOxV,UAAU,QAAUvP,EAAMsE,gBAAgBkL,KAAK+tB,IAChE5jB,EAAiBuoC,EAAM11C,aAAe01C,GAAOtyC,MAAM,SAAUiC,EAAGuM,WAAa,SAAUzJ,GACpF,OAAO9C,EAAGuM,WAAWvM,EAAGsK,MAAMxH,GAAIwF,OAAO,GAAGvU,MAChD,EAAIiM,EAAGqM,OAAOvT,KAAK,KAAMk3C,GAAiBl3C,KAAK,KAAMo3C,GAAgBp3C,KAAK,KAAMm3C,GAAiBn3C,KAAK,KAAMo3C,GAExGI,IACCxoC,EAAiBwoC,EAAW31C,aAAe21C,GAAYx3C,KAAK,SAAUkH,EAAGmT,kBAAoB,IAAIra,KAAK,QAAS6C,GAAY0zC,EAAO,GAAK,IAI5IrvC,EAAGkT,OAAOxV,UAAU,IAAMvP,EAAMoE,YAAYqV,QAAQzZ,EAAMuE,kBAAkB,SAAUoQ,GAClF,OAAQ9C,EAAG0V,eAAe5S,EAC9B,IAGA9C,EAAGsvC,sBAAsB3zC,GACzBqE,EAAGuvC,uBAAuBiB,GAC1BxwC,EAAGovC,iBAAiBC,GAEpBrvC,EAAGkQ,cACHlQ,EAAGmQ,eACHnQ,EAAGqR,gBAEHrR,EAAG0a,aAAaD,EAA4BnR,GAC5CtJ,EAAGivC,mBAAoB,CAC3B,EAEAp5C,EAAqB6b,WAAa,WAC9B,IAAI1R,EAAKvI,KACTuI,EAAGnQ,OAASmQ,EAAGE,KAAK9B,OAAO,KAAKtF,KAAK,YAAakH,EAAG2L,UAAU7S,KAAK,QAAS3K,EAAM2B,QACvF,EACA+F,EAAqB6iB,aAAe,SAAUxP,GAC1C,IAAIlJ,EAAKvI,KACLwI,EAASD,EAAGC,OAGhBD,EAAGnQ,OAAOkO,MAAM,aAAciC,EAAGwT,aAAe,SAAW,WAE3DxT,EAAG0tB,WAAa1tB,EAAGE,KAAK5F,OAAO,IAAMnM,EAAM2B,SAAS4N,UAAU,IAAMvP,EAAM0B,QAAQ8N,KAAKsC,EAAOnQ,SAC9FkQ,EAAG0tB,WAAW7vB,QAAQO,OAAO,KAAKA,OAAO,QAAQL,MAAM,eAAgB,GACvEiC,EAAG0tB,WAAW50B,KAAK,QAASkH,EAAG86B,YAAYp6B,KAAKV,IAChDA,EAAG0tB,WAAWzvB,OAAOtD,aAAauO,SAASA,GAAUnL,MAAM,UAAW,GAAGG,QAC7E,EACArI,EAAqBqkB,aAAe,SAAUpS,GAC1C,IAAI9H,EAAKvI,KACL3H,EAAUkQ,EAAG0tB,WAAWhwB,UAAU,QAAQnD,MAAK,WAI/C,IAAIy3C,EAAahyC,EAAGtI,GAAG4C,OAAO7C,KAAKulB,YAAY0wB,QAC/C1tC,EAAGtI,GAAG4C,OAAO7C,MAAMi2C,MAAMsE,EAC7B,IACIh7C,EAAIgJ,EAAGquB,QAAQ3tB,KAAKV,GACpB/I,EAAI+I,EAAGiyC,QAAQvxC,KAAKV,GACpB3F,EAAI2F,EAAGsuB,YAAY5tB,KAAKV,GACxB5F,EAAI4F,EAAGkyC,aAAaxxC,KAAKV,GAC7B,MAAO,EAAE8H,EAAiBhY,EAAQ6K,aAAe7K,GAASgJ,KAAK,IAAK9B,GAAG8B,KAAK,IAAK7B,GAAG6B,KAAK,QAASuB,GAAGvB,KAAK,SAAUsB,GAAG2D,MAAM,gBAAgB,SAAUvI,GACnJ,OAAOf,EAAQe,EAAE4lB,SAAW5lB,EAAE4lB,QAAU,EAC5C,IACJ,EACAvlB,EAAqBw4B,QAAU,SAAU74B,GACrC,IAAIwK,EAAKvI,KACLwI,EAASD,EAAGC,OAEZ0b,EAAoB,MAAXnmB,EAAEzD,KAAeiO,EAAG/I,EAAI+I,EAAGe,GAMxC,MALe,MAAXvL,EAAEzD,MAA2B,OAAXyD,EAAEzD,KACbkO,EAAOO,cAAe,UAAWhL,EAAImmB,EAAOnmB,EAAEyD,OAAa,EAE3DgH,EAAOO,aAAe,EAAI,UAAWhL,EAAIwK,EAAGhJ,EAAEgJ,EAAG2B,eAAiB3B,EAAG4B,UAAUpM,EAAEyD,OAASzD,EAAEyD,OAAS,CAGpH,EACApD,EAAqBo8C,QAAU,SAAUz8C,GACrC,IAAIwK,EAAKvI,KACLwI,EAASD,EAAGC,OAEZ0b,EAAoB,MAAXnmB,EAAEzD,KAAeiO,EAAG/I,EAAI+I,EAAGe,GAMxC,MALe,MAAXvL,EAAEzD,MAA2B,OAAXyD,EAAEzD,KACbkO,EAAOO,aAAe,EAAI,QAAShL,EAAImmB,EAAOnmB,EAAEkT,KAAO,EAEvDzI,EAAOO,cAAe,UAAWhL,EAAIwK,EAAGhJ,EAAEgJ,EAAG2B,eAAiB3B,EAAG4B,UAAUpM,EAAEyD,OAASzD,EAAEyD,OAAa,CAGpH,EACApD,EAAqBy4B,YAAc,SAAU94B,GACzC,IAGIkT,EAHA1I,EAAKvI,KACLwI,EAASD,EAAGC,OACZhH,EAAQ+G,EAAGquB,QAAQ74B,GAEnBmmB,EAAoB,MAAXnmB,EAAEzD,KAAeiO,EAAG/I,EAAI+I,EAAGe,GAMxC,OAJI2H,EADW,MAAXlT,EAAEzD,MAA2B,OAAXyD,EAAEzD,KACdkO,EAAOO,cAAe,QAAShL,EAAImmB,EAAOnmB,EAAEkT,KAAkB1I,EAAG7I,MAEjE8I,EAAOO,aAAeR,EAAG7I,MAAQ,QAAS3B,EAAIwK,EAAGhJ,EAAEgJ,EAAG2B,eAAiB3B,EAAG4B,UAAUpM,EAAEkT,KAAOlT,EAAEkT,KAAO1I,EAAG7I,OAEtG8B,EAAQ,EAAIyP,EAAMzP,CACnC,EACApD,EAAqBq8C,aAAe,SAAU18C,GAC1C,IAGIkT,EAHA1I,EAAKvI,KACLwI,EAASD,EAAGC,OACZhH,EAAQxB,KAAKw6C,QAAQz8C,GAErBmmB,EAAoB,MAAXnmB,EAAEzD,KAAeiO,EAAG/I,EAAI+I,EAAGe,GAMxC,OAJI2H,EADW,MAAXlT,EAAEzD,MAA2B,OAAXyD,EAAEzD,KACdkO,EAAOO,aAAeR,EAAG5I,OAAS,UAAW5B,EAAImmB,EAAOnmB,EAAEyD,OAAS+G,EAAG5I,OAEtE6I,EAAOO,cAAe,QAAShL,EAAIwK,EAAGhJ,EAAEgJ,EAAG2B,eAAiB3B,EAAG4B,UAAUpM,EAAEkT,KAAOlT,EAAEkT,KAAmB1I,EAAG5I,QAEvG6B,EAAQ,EAAIyP,EAAMzP,CACnC,EACApD,EAAqBs4B,YAAc,SAAU34B,GACzC,OAAQA,EAAEzD,MAAmB,MAAXyD,EAAEzD,IACxB,EAEA8D,EAAqBs8C,SAAW,SAAUj7C,EAAKgF,EAAKk2C,GAChD,OAAQA,EAAgB36C,KAAKC,GAAGgL,KAAK/K,QAAUF,KAAKC,GAAGC,MAAMC,UAAUC,MAAM,CAACX,EAAKgF,GACvF,EACArG,EAAqBw8C,KAAO,SAAUn7C,EAAKgF,EAAKlD,EAAQs5C,GACpD,IAGIt8C,EAHAgK,EAAKvI,KACLE,EAAQqI,EAAGmyC,SAASj7C,EAAKgF,EAAK8D,EAAG2B,gBACjC4wC,EAASv5C,EAASrB,EAAMqB,OAAOA,GAAUrB,EAkB7C,IAAK3B,KAfDgK,EAAGqB,iBACHixC,EAASA,GAAU,WACf,OAAO,CACX,EACA36C,EAAQ,SAAenC,EAAGg9C,GACtB,IAAI99C,EAAI69C,EAAO/8C,GAAK88C,EAAO98C,GAC3B,OAAOg9C,EAAM99C,EAAIS,KAAKC,KAAKV,EAC/B,GAEAiD,EAAQ,SAAenC,EAAGg9C,GACtB,IAAI99C,EAAI69C,EAAO/8C,GACf,OAAOg9C,EAAM99C,EAAIS,KAAKC,KAAKV,EAC/B,EAGQ69C,EACR56C,EAAM3B,GAAOu8C,EAAOv8C,GAgBxB,OAdA2B,EAAMmgB,UAAY,WACd,OAAOy6B,EAAOv5C,QAClB,EAEIgH,EAAGqB,kBACH1J,EAAMqB,OAAS,SAAUA,GACrB,OAAK2F,UAAUjJ,QAIf68C,EAAOv5C,OAAOA,GACPrB,GAHI,EADPqB,EAASvB,KAAKqgB,aACC,GAAI9e,EAAO,GAAK,EAIvC,GAEGrB,CACX,EACA9B,EAAqB48C,KAAO,SAAUv7C,EAAKgF,EAAKlD,GAC5C,IAAIrB,EAAQF,KAAK06C,SAASj7C,EAAKgF,EAAKzE,KAAKgL,iBAIzC,OAHIzJ,GACArB,EAAMqB,OAAOA,GAEVrB,CACX,EACA9B,EAAqB87B,UAAY,SAAU7uB,GACvC,MAA+B,OAAxBrL,KAAK1F,KAAK8Q,MAAMC,GAAerL,KAAKsJ,GAAKtJ,KAAKR,CACzD,EACApB,EAAqB68C,aAAe,SAAU5vC,GAC1C,MAA+B,OAAxBrL,KAAK1F,KAAK8Q,MAAMC,GAAerL,KAAK8Y,MAAQ9Y,KAAK6Y,IAC5D,EACAza,EAAqBsa,aAAe,WAChC,IAAInQ,EAAKvI,KACLwI,EAASD,EAAGC,OACZ0yC,GAAW3yC,EAAGhJ,EAElBgJ,EAAG4yC,KAAO3yC,EAAOO,aAAe,EAAI,EACpCR,EAAG6yC,KAAO5yC,EAAOO,aAAeR,EAAG5I,OAAS4I,EAAG7I,MAC/C6I,EAAGipC,KAAOhpC,EAAOO,aAAe,EAAIR,EAAG5I,OACvC4I,EAAGkpC,KAAOjpC,EAAOO,aAAeR,EAAG7I,MAAQ,EAC3C6I,EAAG8yC,QAAU9yC,EAAG4yC,KAChB5yC,EAAG+yC,QAAU/yC,EAAG6yC,KAChB7yC,EAAGgzC,QAAU/yC,EAAOO,aAAe,EAAIR,EAAG4U,QAC1C5U,EAAGizC,QAAUhzC,EAAOO,aAAeR,EAAG2U,OAAS,EAE/C3U,EAAGhJ,EAAIgJ,EAAGqyC,KAAKryC,EAAG4yC,KAAM5yC,EAAG6yC,KAAMF,OAAUn4C,EAAYwF,EAAGhJ,EAAE8gB,aAAa,WACrE,OAAO9X,EAAGqC,MAAM/J,YACpB,IACA0H,EAAG/I,EAAI+I,EAAGyyC,KAAKzyC,EAAGipC,KAAMjpC,EAAGkpC,KAAMyJ,EAAU1yC,EAAO8+B,eAAiB/+B,EAAG/I,EAAE+B,UACxEgH,EAAGe,GAAKf,EAAGyyC,KAAKzyC,EAAGipC,KAAMjpC,EAAGkpC,KAAMyJ,EAAU1yC,EAAOm/B,gBAAkBp/B,EAAGe,GAAG/H,UAC3EgH,EAAGqQ,KAAOrQ,EAAGqyC,KAAKryC,EAAG4yC,KAAM5yC,EAAG6yC,KAAM7yC,EAAGwQ,YAAY,SAAUhb,GACzD,OAAOA,EAAI,EAAI,EAAIwK,EAAGsC,SAAShK,YACnC,IACA0H,EAAGsQ,KAAOtQ,EAAGyyC,KAAKzyC,EAAGgzC,QAAShzC,EAAGizC,QAASN,EAAU1yC,EAAO8+B,eAAiB/+B,EAAGsQ,KAAKtX,UACpFgH,EAAGuQ,MAAQvQ,EAAGyyC,KAAKzyC,EAAGgzC,QAAShzC,EAAGizC,QAASN,EAAU1yC,EAAOm/B,gBAAkBp/B,EAAGuQ,MAAMvX,UAEvFgH,EAAG0H,gBAAkB1H,EAAGjO,KAAKiR,qBAC7BhD,EAAG2H,gBAAkB3H,EAAGjO,KAAKyR,qBAC7BxD,EAAGoH,gBAAkBpH,EAAGjO,KAAK2R,qBAC7B1D,EAAGuH,iBAAmBvH,EAAGjO,KAAK8R,sBAE9B7D,EAAGqC,MAAQrC,EAAGjO,KAAKmP,SAASlB,EAAGhJ,EAAGgJ,EAAGyH,QAASzH,EAAG0H,gBAAiB1H,EAAG2H,gBAAiB1H,EAAOw+B,mBAC7Fz+B,EAAGsC,SAAWtC,EAAGjO,KAAKmP,SAASlB,EAAGqQ,KAAMrQ,EAAGyN,WAAYzN,EAAG0H,gBAAiB1H,EAAG2H,gBAAiB1H,EAAOw+B,mBACtGz+B,EAAG4D,MAAQ5D,EAAGjO,KAAKwQ,SAASvC,EAAG/I,EAAG+I,EAAGkH,QAASjH,EAAOkH,mBAAoBnH,EAAGoH,gBAAiBnH,EAAO4+B,mBACpG7+B,EAAG+D,OAAS/D,EAAGjO,KAAKwQ,SAASvC,EAAGe,GAAIf,EAAGqH,SAAUpH,EAAOqH,oBAAqBtH,EAAGuH,iBAAkBtH,EAAOi/B,oBAGpGyT,IACG3yC,EAAGtQ,OACHsQ,EAAGtQ,MAAMiI,MAAMqI,EAAGqQ,MAElBpQ,EAAOwQ,cACPzQ,EAAG0Q,KAAK/Y,MAAMqI,EAAGhJ,IAIrBgJ,EAAGszB,WACHtzB,EAAGszB,WAEX,EAEAz9B,EAAqBq9C,YAAc,SAAU9kD,EAAQoH,EAAG4D,GACpD,IAAI4G,EAAKvI,KACLwI,EAASD,EAAGC,OACZ8W,GAAM9W,EAAOO,aAAeR,EAAGwZ,QAAUxZ,EAAGyZ,SAAS/Y,KAAKV,GAC1DgX,GAAM/W,EAAOO,aAAeR,EAAGyZ,QAAUzZ,EAAGwZ,SAAS9Y,KAAKV,GAC1DmzC,EAAInzC,EAAGozC,aAAa1yC,KAAKV,GAC7BC,EAAO09B,gBAAgBppC,KAAKyL,EAAGmK,IAAK3U,EAAGpH,EAAOgR,QAE9CY,EAAGE,KAAK5F,OAAO,IAAMnM,EAAMiB,gBAAkB4Q,EAAG0wB,wBAAwBl7B,EAAEsN,KAAKpF,UAAU,IAAMvP,EAAMgB,eAAiB,IAAMiK,GAAGuE,KAAK,CAACnI,IAAIqI,QAAQO,OAAO,UAAUtF,KAAK,SAAS,WAC5K,OAAOkH,EAAGg6B,cAAc7rC,EAAMgB,eAAgBiK,EAClD,IAAGN,KAAK,KAAMie,GAAIje,KAAK,KAAMke,GAAIle,KAAK,UAAU,WAC5C,OAAOkH,EAAGqM,MAAM7W,EACpB,IAAGsD,KAAK,KAAK,SAAUtD,GACnB,OAA4B,IAArBwK,EAAGozC,aAAa59C,EAC3B,IAAGmF,aAAauO,SAAS,KAAKpQ,KAAK,IAAKq6C,EAC5C,EACAt9C,EAAqBw9C,cAAgB,SAAUjlD,EAAQoH,EAAG4D,GACtD,IAAI4G,EAAKvI,KACTuI,EAAGC,OAAO29B,kBAAkBrpC,KAAKyL,EAAGmK,IAAK3U,EAAGpH,EAAOgR,QAEnDY,EAAGE,KAAK5F,OAAO,IAAMnM,EAAMiB,gBAAkB4Q,EAAG0wB,wBAAwBl7B,EAAEsN,KAAKpF,UAAU,IAAMvP,EAAMgB,eAAiB,IAAMiK,GAAGuB,aAAauO,SAAS,KAAKpQ,KAAK,IAAK,GAAGoF,QAC3K,EACArI,EAAqBy1C,YAAc,SAAU9a,EAAUpiC,EAAQoH,EAAG4D,GAC9Do3B,EAAW/4B,KAAKy7C,YAAY9kD,EAAQoH,EAAG4D,GAAK3B,KAAK47C,cAAcjlD,EAAQoH,EAAG4D,EAC9E,EACAvD,EAAqBy9C,WAAa,SAAUllD,EAAQoH,GAChD,IAAIwK,EAAKvI,KACTuI,EAAGC,OAAO09B,gBAAgBppC,KAAKyL,EAAIxK,EAAGpH,EAAOgR,QACzCY,EAAGC,OAAO+8B,sBACV5uC,EAAOuM,aAAauO,SAAS,KAAKnL,MAAM,QAAQ,WAC5C,OAAOiC,EAAGtI,GAAG67C,IAAIvzC,EAAGqM,MAAM7W,IAAIg+C,SAAS,IAC3C,GAER,EACA39C,EAAqB49C,aAAe,SAAUrlD,EAAQoH,GAClD,IAAIwK,EAAKvI,KACTuI,EAAGC,OAAO29B,kBAAkBrpC,KAAKyL,EAAIxK,EAAGpH,EAAOgR,QAC3CY,EAAGC,OAAO+8B,sBACV5uC,EAAOuM,aAAauO,SAAS,KAAKnL,MAAM,QAAQ,WAC5C,OAAOiC,EAAGqM,MAAM7W,EACpB,GAER,EACAK,EAAqB01C,WAAa,SAAU/a,EAAUpiC,EAAQoH,EAAG4D,GAC7Do3B,EAAW/4B,KAAK67C,WAAWllD,EAAQoH,EAAG4D,GAAK3B,KAAKg8C,aAAarlD,EAAQoH,EAAG4D,EAC5E,EACAvD,EAAqBm7B,UAAY,SAAUQ,EAAMh8B,GAC7C,IACIu7B,EADA/wB,EAAKvI,KAYT,MAVsB,WAAlB+5B,EAAKkiB,SAGD3iB,EAFA/wB,EAAGuuC,WAAW/4C,GAEL,WAAmB,EAEnBwK,EAAGsrC,YAES,SAAlB9Z,EAAKkiB,WACZ3iB,EAAS/wB,EAAGurC,YAETxa,CACX,EACAl7B,EAAqBwjC,YAAc,SAAU7H,EAAMh8B,EAAG4D,GAClD,IAAI4G,EAAKvI,KACLC,EAAKsI,EAAGtI,GACRuI,EAASD,EAAGC,OACZ9P,EAAQuH,EAAG4C,OAAOk3B,GAClBJ,EAAajhC,EAAMyX,QAAQzZ,EAAM2E,UACjCi+B,EAAS/wB,EAAGgxB,UAAUQ,EAAMh8B,GAAGkL,KAAKV,GAEpCC,EAAO6wB,wBAA0B7wB,EAAOoxB,4BAA4B77B,KAC/DyK,EAAOw9B,yBACRz9B,EAAGE,KAAKxC,UAAU,IAAMvP,EAAMiC,QAAU6P,EAAOixB,uBAAyBlxB,EAAG0wB,wBAAwBl7B,EAAEsN,IAAM,KAAKpF,UAAU,IAAMvP,EAAMgC,OAAOoK,MAAK,SAAU/E,EAAG4D,GAC3J,IAAIjJ,EAAQuH,EAAG4C,OAAO7C,MAClBtH,EAAMyX,QAAQzZ,EAAM2E,WACpBi+B,GAAO,EAAO5gC,EAAMyX,QAAQzZ,EAAM2E,UAAU,GAAQ0C,EAAG4D,EAE/D,IAEJjJ,EAAMyX,QAAQzZ,EAAM2E,UAAWs+B,GAC/BL,GAAQK,EAAYjhC,EAAOqF,EAAG4D,GAEtC,EAEAvD,EAAqB4Y,QAAU,WAClBhX,KACNyI,KAAK5F,OAAO,IAAMnM,EAAME,OAAO+P,OAAO,KAAKtF,KAAK,QAAS3K,EAAMM,UACtE,EACAoH,EAAqBwf,oBAAsB,SAAUrT,GACjD,IAAIhC,EAAKvI,KACLwI,EAASD,EAAGC,OAGZs7B,EAAgBv7B,EAAGu7B,cAAc76B,KAAKV,GACtC26B,EAAY36B,EAAG26B,UAAUj6B,KAAKV,GAC9Bg4B,EAAah4B,EAAGg4B,WAAWt3B,KAAKV,GACpBA,EAAGE,KAAK5F,OAAO,IAAMnM,EAAMM,WAAWiP,UAAU,IAAMvP,EAAMK,UAAUmP,KAAKqE,GAASlJ,KAAK,SAAS,SAAUtD,GACxH,OAAO+lC,EAAc/lC,GAAKwiC,EAAWxiC,EACzC,IAC6BqI,QAAQO,OAAO,KAAKtF,KAAK,QAASyiC,GAAex9B,MAAM,iBAAkB,QAEzFK,OAAO,KAAKtF,KAAK,QAAS6hC,GAAW58B,MAAM,UAAU,SAAUvI,GACxE,OAAOyK,EAAOoxB,4BAA4B77B,GAAK,UAAY,IAC/D,GACJ,EACAK,EAAqB8iB,UAAY,SAAUlC,GACvC,IAAIzW,EAAKvI,KACLk8C,EAAU3zC,EAAG2zC,QAAQjzC,KAAKV,GAC1B06B,EAAW16B,EAAG06B,SAASh6B,KAAKV,GAC5Bib,EAAiBjb,EAAGib,eAAeva,KAAKV,GACxCqM,EAAQ,SAAe7W,GACvB,OAAOwK,EAAGqM,MAAM7W,EAAEsN,GACtB,EACA9C,EAAG4tB,QAAU5tB,EAAGE,KAAKxC,UAAU,IAAMvP,EAAMqC,MAAMkN,UAAU,IAAMvP,EAAMoC,KAAKoN,KAAKg2C,GACjF3zC,EAAG4tB,QAAQ/vB,QAAQO,OAAO,QAAQtF,KAAK,QAAS4hC,GAAU38B,MAAM,SAAUsO,GAAOtO,MAAM,OAAQsO,GAC/FrM,EAAG4tB,QAAQ7vB,MAAM,UAAWkd,GAC5Bjb,EAAG4tB,QAAQ3vB,OAAOtD,aAAauO,SAASuN,GAAiBvY,QAC7D,EACArI,EAAqBgkB,UAAY,SAAUxD,EAASvO,GAChD,MAAO,EAAEA,EAAiBrQ,KAAKm2B,QAAQjzB,WAAWxF,KAAKy+C,SAAS/3C,YAAcpE,KAAKm2B,SAAS90B,KAAK,IAAKud,GAAStY,MAAM,SAAUtG,KAAK4U,OAAOtO,MAAM,OAAQtG,KAAK4U,OAAOtO,MAAM,UAAW,GAC1L,EACAlI,EAAqBg+C,QAAU,SAAU9hD,EAAM+hD,GAC3C,IACI7zC,EADKxI,KACOwI,OACZ5F,EAAgC,iBAArB4F,EAAOggC,UAAyBhgC,EAAOggC,UAAY6T,EAAgB/hD,EAAKmN,eAAiBe,EAAOigC,gBAAkB4T,EAAgB,EACjJ,OAAO7zC,EAAOkgC,eAAiB9lC,EAAI4F,EAAOkgC,cAAgBlgC,EAAOkgC,cAAgB9lC,CACrF,EACAxE,EAAqBk+C,QAAU,SAAU36C,EAAG0J,GACxC,IAAI9C,EAAKvI,KACT,OAAQqL,EAAK9C,EAAGE,KAAKxC,UAAU,IAAMvP,EAAMqC,KAAOwP,EAAG0wB,wBAAwB5tB,IAAO9C,EAAGE,MAAMxC,UAAU,IAAMvP,EAAMoC,KAAOkE,EAAQ2E,GAAK,IAAMA,EAAI,IACrJ,EACAvD,EAAqBu4C,WAAa,SAAUh1C,EAAG0J,EAAIyuC,GAC/C,IAAIvxC,EAAKvI,KACL85C,GACAvxC,EAAGsuC,eAEPtuC,EAAG+zC,QAAQ36C,EAAG0J,GAAI8E,QAAQzZ,EAAM0E,UAAU,EAC9C,EACAgD,EAAqBy4C,aAAe,SAAUl1C,GACjC3B,KACNs8C,QAAQ36C,GAAGwO,QAAQzZ,EAAM0E,UAAU,EAC1C,EACAgD,EAAqBuiB,gBAAkB,SAAUhB,EAAY48B,GACzD,IAAIh0C,EAAKvI,KACLwI,EAASD,EAAGC,OACZg0C,EAAYj0C,EAAGk0C,qBAAqB98B,EAAY48B,GACpD,OAAO,SAAUx+C,EAAG4D,GAEhB,IAAI6wB,EAASgqB,EAAUz+C,EAAG4D,GAGtB+6C,EAASl0C,EAAOO,aAAe,EAAI,EACnC4zC,EAASn0C,EAAOO,aAAe,EAAI,EAIvC,MAFW,KAAOypB,EAAO,GAAGkqB,GAAU,IAAMlqB,EAAO,GAAGmqB,GAA3C,KAAiEnqB,EAAO,GAAGkqB,GAAU,IAAMlqB,EAAO,GAAGmqB,GAArG,KAA2HnqB,EAAO,GAAGkqB,GAAU,IAAMlqB,EAAO,GAAGmqB,GAA/J,KAAqLnqB,EAAO,GAAGkqB,GAAU,IAAMlqB,EAAO,GAAGmqB,GAAzN,IAGf,CACJ,EACAv+C,EAAqBq+C,qBAAuB,SAAU98B,EAAY48B,GAC9D,IAAIh0C,EAAKvI,KACL1F,EAAOiiD,EAAQh0C,EAAGsC,SAAWtC,EAAGqC,MAChCyxC,EAAgB18B,EAAWi9B,QAAU,EACrCC,EAAOt0C,EAAG6zC,QAAQ9hD,EAAM+hD,GACxBS,EAAOv0C,EAAGw0C,UAAUF,EAAMR,EAAe18B,IAAc48B,GACvDS,EAAOz0C,EAAG00C,YAAYV,GACtBW,EAAY30C,EAAG40C,eAAe50C,EAAGqX,UAAWD,IAAc48B,GAC1Da,EAAiBP,GAAQt0C,EAAGC,OAAOogC,UAAY,GAC/C1kB,EAASq4B,EAAQh0C,EAAG0yC,aAAe1yC,EAAG2xB,UAC1C,OAAO,SAAUn8B,EAAG4D,GAChB,IAAI07C,EAAKn5B,EAAOpnB,KAAKyL,EAAIxK,EAAEsN,GAAlB6Y,CAAsB,GAC3B22B,EAASqC,EAAUn/C,EAAG4D,IAAM07C,EAEhCC,EAAOR,EAAK/+C,GACRw/C,EAAOP,EAAKj/C,GAQhB,OANIwK,EAAGC,OAAOO,eACN,EAAIhL,EAAEzB,OAASihD,EAAOF,GAAMt/C,EAAEzB,MAAQ,GAAK+gD,EAAKE,KAChDA,EAAOF,GAIR,CAAC,CAACC,EAAOF,EAAgBvC,GAAS,CAACyC,EAAOF,EAAgBG,GAAQF,EAAKxC,IAAU,CAACyC,EAAOT,EAAOO,EAAgBG,GAAQF,EAAKxC,IAAU,CAACyC,EAAOT,EAAOO,EAAgBvC,GACjL,CACJ,EACAz8C,EAAqBkyC,YAAc,SAAUvW,GACzC,IAAIC,EAAQh6B,KAAKC,GAAG+5B,MAAMD,GACtB76B,EAAM66B,EAAK56B,wBACXq+C,EAAOzjB,EAAK16B,YAAYC,QAAQ,GAChCm+C,EAAO1jB,EAAK16B,YAAYC,QAAQ,GAChCC,EAAI7B,KAAK+B,IAAI+9C,EAAKj+C,EAAGk+C,EAAKl+C,GAC1BC,EAAI9B,KAAK+B,IAAI+9C,EAAKh+C,EAAGi+C,EAAKj+C,GAG1Bq7C,EAAS,EAET6C,EAAKn+C,EAJDL,EAAIQ,MAIKm7C,EACb5H,EAAKzzC,EAJDN,EAAIS,OAIKk7C,EACb8C,EAAKn+C,EAAIq7C,EACb,OAJSt7C,EAAIs7C,EAID7gB,EAAM,IAAMA,EAAM,GAAK0jB,GAAMC,EAAK3jB,EAAM,IAAMA,EAAM,GAAKiZ,CACzE,EAEA70C,EAAqBqhB,gBAAkB,SAAUm+B,GAC7C,IAIIxoB,EACA6W,EALA1jC,EAAKvI,KACLwI,EAASD,EAAGC,OACZ2wB,EAAU,CAAC,EACXx3B,EAAI,EAoBR,OAjBA4G,EAAGgH,oBAAoBhH,EAAGrC,KAAKqE,QAAQ4N,OAAOylC,EAAYr1C,IAAK3J,SAAQ,SAAUb,GAC7E,IAAKq3B,EAAI,EAAGA,EAAI5sB,EAAOuvB,YAAY95B,OAAQm3B,IACvC,KAAI5sB,EAAOuvB,YAAY3C,GAAGjoB,QAAQpP,EAAEsN,IAAM,GAG1C,IAAK4gC,EAAI,EAAGA,EAAIzjC,EAAOuvB,YAAY3C,GAAGn3B,OAAQguC,IAC1C,GAAIzjC,EAAOuvB,YAAY3C,GAAG6W,KAAM9S,EAAS,CACrCA,EAAQp7B,EAAEsN,IAAM8tB,EAAQ3wB,EAAOuvB,YAAY3C,GAAG6W,IAC9C,KACJ,CAGJ1uC,EAAY47B,EAAQp7B,EAAEsN,OACtB8tB,EAAQp7B,EAAEsN,IAAM1J,IAExB,IACAw3B,EAAQyjB,QAAUj7C,EAAI,EACfw3B,CACX,EACA/6B,EAAqB2+C,UAAY,SAAUlC,EAAQgD,EAAY1kB,EAASojB,GACpE,IAAIh0C,EAAKvI,KACLE,EAAQq8C,EAAQh0C,EAAGqQ,KAAOrQ,EAAGhJ,EACjC,OAAO,SAAUxB,GACb,IAAI8F,EAAQ9F,EAAEsN,MAAM8tB,EAAUA,EAAQp7B,EAAEsN,IAAM,EAC9C,OAAOtN,EAAEwB,GAAa,IAARxB,EAAEwB,EAAUW,EAAMnC,EAAEwB,GAAKs7C,GAAUgD,EAAa,EAAIh6C,GAAS,CAC/E,CACJ,EACAzF,EAAqB6+C,UAAY,SAAUV,GACvC,IAAIh0C,EAAKvI,KACT,OAAO,SAAUjC,GAEb,OADYw+C,EAAQh0C,EAAG0yC,aAAal9C,EAAEsN,IAAM9C,EAAG2xB,UAAUn8B,EAAEsN,KAC9CtN,EAAEzB,MACnB,CACJ,EACA8B,EAAqB++C,eAAiB,SAAUS,EAAYzkB,EAASojB,GACjE,IAAIh0C,EAAKvI,KACLuK,EAAUhC,EAAG2mC,aAAa3mC,EAAGgH,oBAAoBhH,EAAGrC,KAAKqE,QAAQ4N,OAAOylC,EAAYr1C,KACpF0rB,EAAY1pB,EAAQ5G,KAAI,SAAUif,GAClC,OAAOA,EAAEvX,EACb,IACA,OAAO,SAAUtN,EAAG4D,GAChB,IAAIzB,EAAQq8C,EAAQh0C,EAAG0yC,aAAal9C,EAAEsN,IAAM9C,EAAG2xB,UAAUn8B,EAAEsN,IACvDgyC,EAAKn9C,EAAM,GACX26C,EAASwC,EAuBb,OAtBA9yC,EAAQ3L,SAAQ,SAAUgkB,GACtB,IAAI/R,EAAStI,EAAGuuC,WAAW/4C,GAAKwK,EAAGmoC,oBAAoB9tB,EAAE/R,QAAU+R,EAAE/R,OACjE+R,EAAEvX,KAAOtN,EAAEsN,IAAM8tB,EAAQvW,EAAEvX,MAAQ8tB,EAAQp7B,EAAEsN,KAG7C4oB,EAAU9mB,QAAQyV,EAAEvX,IAAM4oB,EAAU9mB,QAAQpP,EAAEsN,WAErB,IAAdwF,EAAOlP,KAAuBkP,EAAOlP,GAAGpC,IAAOxB,EAAEwB,IAGxDoC,GAAK,EACLkP,EAAOjS,SAAQ,SAAU3B,EAAGm4B,GACpBn4B,EAAEsC,IAAMxB,EAAEwB,IACVoC,EAAIyzB,EAEZ,KAEAzzB,KAAKkP,GAAUA,EAAOlP,GAAGrF,MAAQyB,EAAEzB,OAAS,IAC5Cu+C,GAAU36C,EAAM2Q,EAAOlP,GAAGrF,OAAS+gD,GAG/C,IACOxC,CACX,CACJ,EACAz8C,EAAqB24C,cAAgB,SAAUhd,EAAMh8B,GACjD,IAEI61C,EAFArrC,EAAKvI,KACLtH,EAAQ6P,EAAGtI,GAAG4C,OAAOk3B,GASzB,OAPKxxB,EAAG0V,eAAelgB,EAAEsN,IAEI,WAAlB0uB,EAAKkiB,SACZrI,EAAWrrC,EAAGuuC,WAAW/4C,GAAKwK,EAAGu1C,aAAa/jB,EAAMxxB,EAAG2xB,UAAUn8B,EAAEsN,GAAf9C,CAAmBxK,EAAEzB,QAAUiM,EAAGw1C,eAAehkB,EAA2B,IAArBxxB,EAAGozC,aAAa59C,IAClG,SAAlBg8B,EAAKkiB,WACZrI,GAAWl7C,EAAMyX,QAAQzZ,EAAMoC,MAAOyP,EAAG+nC,YAAYvW,IAJrD6Z,GAAW,EAMRA,CACX,EAEAx1C,EAAqB4/C,eAAiB,SAAUjgD,GAC5C,IAAIwK,EAAKvI,KACLi+C,EAAgB11C,EAAG21C,oBAAoB31C,EAAGC,OAAOugC,2BAA6BxgC,EAAGC,OAAOugC,0BAA4B,WACxH,OAAOxgC,EAAG41C,aAAapgD,GAAKkgD,EAAgB11C,EAAGuuC,WAAW/4C,GAAKwK,EAAGC,OAAO+/B,eAAiB,QAC9F,EAEAnqC,EAAqB6Y,SAAW,WACnBjX,KACNyI,KAAK5F,OAAO,IAAMnM,EAAME,OAAO+P,OAAO,KAAKtF,KAAK,QAAS3K,EAAMI,WACtE,EACAsH,EAAqByf,qBAAuB,SAAUtT,GAClD,IAGI6zC,EAHA71C,EAAKvI,KACLwI,EAASD,EAAGC,OAGZq7B,EAAiBt7B,EAAGs7B,eAAe56B,KAAKV,GACxCu6B,EAAav6B,EAAGu6B,WAAW75B,KAAKV,GAChC66B,EAAa76B,EAAG66B,WAAWn6B,KAAKV,GAChCy6B,EAAez6B,EAAGy6B,aAAa/5B,KAAKV,GACpCg4B,EAAah4B,EAAGg4B,WAAWt3B,KAAKV,IAIpC61C,EAHiB71C,EAAGE,KAAK5F,OAAO,IAAMnM,EAAMI,YAAYmP,UAAU,IAAMvP,EAAMG,WAAWqP,KAAKqE,GAASlJ,KAAK,SAAS,SAAUtD,GAC3H,OAAO8lC,EAAe9lC,GAAKwiC,EAAWxiC,EAC1C,IAC+BqI,QAAQO,OAAO,KAAKtF,KAAK,QAASwiC,GAAgBv9B,MAAM,UAAW,GAAGA,MAAM,iBAAkB,SAE/GK,OAAO,KAAKtF,KAAK,QAASyhC,GAExCsb,EAAcz3C,OAAO,KAAKtF,KAAK,QAAS+hC,GAExCgb,EAAcz3C,OAAO,KAAKtF,KAAK,SAAS,SAAUtD,GAC9C,OAAOwK,EAAGg6B,cAAc7rC,EAAMiB,gBAAiBoG,EAAEsN,GACrD,IACA+yC,EAAcz3C,OAAO,KAAKtF,KAAK,QAAS2hC,GAAc18B,MAAM,UAAU,SAAUvI,GAC5E,OAAOyK,EAAOoxB,4BAA4B77B,GAAK,UAAY,IAC/D,IAEAwM,EAAQ3L,SAAQ,SAAUgkB,GACtBra,EAAGE,KAAKxC,UAAU,IAAMvP,EAAMiB,gBAAkB4Q,EAAG0wB,wBAAwBrW,EAAEvX,KAAKpF,UAAU,IAAMvP,EAAMgB,gBAAgBoL,MAAK,SAAU/E,GACnIA,EAAEzB,MAAQsmB,EAAE/R,OAAO9S,EAAE8F,OAAOvH,KAChC,GACJ,GAGJ,EACA8B,EAAqB+iB,WAAa,SAAUnC,GACxC,IAAIzW,EAAKvI,KACTuI,EAAG6tB,SAAW7tB,EAAGE,KAAKxC,UAAU,IAAMvP,EAAMmC,OAAOoN,UAAU,IAAMvP,EAAMkC,MAAMsN,KAAKqC,EAAG81C,SAASp1C,KAAKV,IACrGA,EAAG6tB,SAAShwB,QAAQO,OAAO,QAAQtF,KAAK,QAASkH,EAAGs6B,UAAU55B,KAAKV,IAAKjC,MAAM,SAAUiC,EAAGqM,OAC3FrM,EAAG6tB,SAAS9vB,MAAM,UAAWiC,EAAGib,eAAeva,KAAKV,IAAKjC,MAAM,mBAAmB,SAAUvI,GACxF,OAAOwK,EAAGuuC,WAAW/4C,GAAK,aAAe,EAC7C,IAAGsD,KAAK,YAAa,MACrBkH,EAAG6tB,SAAS5vB,OAAOtD,aAAauO,SAASuN,GAAiB1Y,MAAM,UAAW,GAAGG,QAClF,EACArI,EAAqBikB,WAAa,SAAUxD,EAAUxO,GAClD,MAAO,EAAEA,EAAiBrQ,KAAKo2B,SAASlzB,WAAWxF,KAAKy+C,SAAS/3C,YAAcpE,KAAKo2B,UAAU/0B,KAAK,IAAKwd,GAAUvY,MAAM,SAAUtG,KAAK4U,OAAOtO,MAAM,UAAW,GACnK,EACAlI,EAAqBwiB,iBAAmB,SAAUf,EAAa08B,GAC3D,IAAIh0C,EAAKvI,KACLwI,EAASD,EAAGC,OACZ5P,EAAO2P,EAAGtI,GAAGqP,IAAI1W,OACjB4jD,EAAYj0C,EAAG+1C,sBAAsBz+B,EAAa08B,GAClDgC,EAAehC,EAAQh0C,EAAG0yC,aAAe1yC,EAAG2xB,UAC5CskB,EAAS,SAAgBzgD,GACzB,OAAQw+C,EAAQh0C,EAAG4b,MAAQ5b,EAAGwb,IAAIjnB,KAAKyL,EAAIxK,EAC/C,EACI0gD,EAAS,SAAgB1gD,EAAG4D,GAC5B,OAAO6G,EAAOuvB,YAAY95B,OAAS,EAAIu+C,EAAUz+C,EAAG4D,GAAG,GAAG,GAAK48C,EAAazhD,KAAKyL,EAAIxK,EAAEsN,GAAxBkzC,CAA4BxgD,EAAEzB,MACjG,EAQA,OANA1D,EAAO4P,EAAOO,aAAenQ,EAAK2G,EAAEk/C,GAAQj/C,EAAEg/C,GAAU5lD,EAAK2G,EAAEi/C,GAAQh/C,EAAEi/C,GACpEj2C,EAAO8/B,mBACR1vC,EAAOA,EAAK8lD,SAAQ,SAAU3gD,GAC1B,OAAkB,MAAXA,EAAEzB,KACb,KAEG,SAAUyB,GACb,IAKIkB,EALA4R,EAASrI,EAAO8/B,iBAAmB//B,EAAG8mC,iBAAiBtxC,EAAE8S,QAAU9S,EAAE8S,OACrEtR,EAAIg9C,EAAQh0C,EAAGqQ,KAAOrQ,EAAGhJ,EACzBC,EAAI++C,EAAazhD,KAAKyL,EAAIxK,EAAEsN,IAC5BszC,EAAK,EACLtB,EAAK,EAkBT,OAhBI90C,EAAGuX,WAAW/hB,GACVyK,EAAOu9B,aAAahoC,EAAEsN,IACtBpM,EAAOsJ,EAAGq2C,gBAAgB/tC,EAAQtR,EAAGC,EAAGgJ,EAAOu9B,aAAahoC,EAAEsN,MAE1D9C,EAAGuuC,WAAW/4C,KACd8S,EAAStI,EAAGmoC,oBAAoB7/B,IAEpC5R,EAAOrG,EAAKmpC,YAAYx5B,EAAGy1C,eAAejgD,GAAnCnF,CAAuCiY,KAG9CA,EAAO,KACP8tC,EAAKp/C,EAAEsR,EAAO,GAAGtR,GACjB89C,EAAK79C,EAAEqR,EAAO,GAAGvU,QAErB2C,EAAOuJ,EAAOO,aAAe,KAAOs0C,EAAK,IAAMsB,EAAK,KAAOA,EAAK,IAAMtB,GAEnEp+C,GAAc,OACzB,CACJ,EACAb,EAAqBkgD,sBAAwB,SAAUz+B,EAAa08B,GAEhE,IAAIh0C,EAAKvI,KACLwI,EAASD,EAAGC,OACZq2C,EAAiBh/B,EAAY+8B,QAAU,EACvCr9C,EAAIgJ,EAAGw0C,UAAU,EAAG8B,EAAgBh/B,IAAe08B,GACnD/8C,EAAI+I,EAAG00C,YAAYV,GACnBuC,EAAav2C,EAAG40C,eAAe50C,EAAGuX,WAAYD,IAAe08B,GAC7Dr4B,EAASq4B,EAAQh0C,EAAG0yC,aAAe1yC,EAAG2xB,UAC1C,OAAO,SAAUn8B,EAAG4D,GAChB,IAAI07C,EAAKn5B,EAAOpnB,KAAKyL,EAAIxK,EAAEsN,GAAlB6Y,CAAsB,GAC3B22B,EAASiE,EAAW/gD,EAAG4D,IAAM07C,EAEjCC,EAAO/9C,EAAExB,GACLw/C,EAAO/9C,EAAEzB,GAQb,OANIyK,EAAOO,eACH,EAAIhL,EAAEzB,OAASihD,EAAOF,GAAMt/C,EAAEzB,MAAQ,GAAK+gD,EAAKE,KAChDA,EAAOF,GAIR,CAAC,CAACC,EAAMC,GAAQF,EAAKxC,IAAU,CAACyC,EAAMC,GAAQF,EAAKxC,IAC1D,CAACyC,EAAMC,GAAQF,EAAKxC,IACpB,CAACyC,EAAMC,GAAQF,EAAKxC,IAExB,CACJ,EAEAz8C,EAAqBwgD,gBAAkB,SAAU7gD,EAAGwB,EAAGC,EAAGu/C,GACtD,IAGIp9C,EACAyzB,EAEA4pB,EACAC,EACAC,EACAj4C,EACAxB,EAEAkvB,EACAwqB,EAEAX,EACAC,EAhBAl2C,EAAKvI,KACLwI,EAASD,EAAGC,OAIZ5E,EAAI,IASJw7C,EAAU72C,EAAGqB,gBAAkB,GAAM,EAGrCvR,EAAU,GAEd,SAASgnD,EAAgB9/C,EAAGlH,GACxB,IAAIsJ,EACJ,IAAKA,EAAI,EAAGA,EAAItJ,EAAQ4F,OAAQ0D,IAC5B,GAAItJ,EAAQsJ,GAAGH,MAAQjC,GAAKA,GAAKlH,EAAQsJ,GAAGsP,IACxC,OAAO,EAGf,OAAO,CACX,CAGA,GAAIzT,EAAUuhD,GACV,IAAKp9C,EAAI,EAAGA,EAAIo9C,EAAS9gD,OAAQ0D,IAC7BtJ,EAAQsJ,GAAK,CAAC,EACVpE,EAAYwhD,EAASp9C,GAAGH,OACxBnJ,EAAQsJ,GAAGH,MAAQzD,EAAE,GAAGwB,EAExBlH,EAAQsJ,GAAGH,MAAQ+G,EAAG2B,eAAiB3B,EAAG4B,UAAU40C,EAASp9C,GAAGH,OAASu9C,EAASp9C,GAAGH,MAErFjE,EAAYwhD,EAASp9C,GAAGsP,KACxB5Y,EAAQsJ,GAAGsP,IAAMlT,EAAEA,EAAEE,OAAS,GAAGsB,EAEjClH,EAAQsJ,GAAGsP,IAAM1I,EAAG2B,eAAiB3B,EAAG4B,UAAU40C,EAASp9C,GAAGsP,KAAO8tC,EAASp9C,GAAGsP,IAkB7F,SAASquC,EAAU9sB,GACf,MAAO,IAAMA,EAAO,GAAG,GAAK,IAAMA,EAAO,GAAG,GAAK,IAAMA,EAAO,GAAG,GAAK,IAAMA,EAAO,GAAG,EAC1F,CA4BA,IA1CAgsB,EAASh2C,EAAOO,aAAe,SAAUhL,GACrC,OAAOyB,EAAEzB,EAAEzB,MACf,EAAI,SAAUyB,GACV,OAAOwB,EAAExB,EAAEwB,EACf,EACAk/C,EAASj2C,EAAOO,aAAe,SAAUhL,GACrC,OAAOwB,EAAExB,EAAEwB,EACf,EAAI,SAAUxB,GACV,OAAOyB,EAAEzB,EAAEzB,MACf,EAOI0iD,EADAz2C,EAAG2B,eACW,SAAqBq1C,EAAIrd,EAAI9M,EAAGT,GAC1C,IAAIgqB,EAAKY,EAAGhgD,EAAEkzC,UACV+M,EAAStd,EAAG3iC,EAAIggD,EAAGhgD,EACnBkgD,EAAM,IAAIruC,KAAKutC,EAAKa,EAASpqB,GAC7BsqB,EAAM,IAAItuC,KAAKutC,EAAKa,GAAUpqB,EAAIT,IAOtC,OAAO2qB,EALH92C,EAAOO,aACE,CAAC,CAACvJ,EAAE0/C,EAAG9pB,IAAK71B,EAAEkgD,IAAO,CAACjgD,EAAE0/C,EAAG9pB,EAAIT,IAAQp1B,EAAEmgD,KAEzC,CAAC,CAACngD,EAAEkgD,GAAMjgD,EAAE0/C,EAAG9pB,KAAM,CAAC71B,EAAEmgD,GAAMlgD,EAAE0/C,EAAG9pB,EAAIT,MAGxD,EAEc,SAAqB4qB,EAAIrd,EAAI9M,EAAGT,GAO1C,OAAO2qB,EALH92C,EAAOO,aACE,CAAC,CAACvJ,EAAE0/C,EAAG9pB,IAAI,GAAO71B,EAAE0/C,EAAG7pB,KAAM,CAAC51B,EAAE0/C,EAAG9pB,EAAIT,IAAO,GAAOp1B,EAAE0/C,EAAG7pB,EAAIT,MAE9D,CAAC,CAACp1B,EAAE0/C,EAAG7pB,IAAI,GAAO51B,EAAE0/C,EAAG9pB,KAAM,CAAC71B,EAAE0/C,EAAG7pB,EAAIT,IAAO,GAAOn1B,EAAE0/C,EAAG9pB,EAAIT,MAG/E,EAIChzB,EAAI,EAAGA,EAAI5D,EAAEE,OAAQ0D,IAAK,CAG3B,GAAIpE,EAAYlF,KAAagnD,EAAgBthD,EAAE4D,GAAGpC,EAAGlH,GACjDuL,GAAK,IAAM46C,EAAOzgD,EAAE4D,IAAM,IAAM88C,EAAO1gD,EAAE4D,SAarC,IATAs9C,EAAK12C,EAAGmyC,SAAS38C,EAAE4D,EAAI,GAAGpC,EAAI6/C,EAASrhD,EAAE4D,GAAGpC,EAAI6/C,EAAS72C,EAAG2B,gBAC5Dg1C,EAAK32C,EAAGmyC,SAAS38C,EAAE4D,EAAI,GAAGrF,MAAOyB,EAAE4D,GAAGrF,OAEtC2K,EAAK1H,EAAExB,EAAE4D,GAAGpC,GAAKA,EAAExB,EAAE4D,EAAI,GAAGpC,GAC5BkG,EAAKjG,EAAEzB,EAAE4D,GAAGrF,OAASkD,EAAEzB,EAAE4D,EAAI,GAAGrF,OAGhC6iD,EAAgB,GADhBxqB,EAAO,EADFj3B,KAAKogC,KAAKpgC,KAAKy0B,IAAIlrB,EAAI,GAAKvJ,KAAKy0B,IAAI1sB,EAAI,KAIzC2vB,EAAIT,EAAMS,GAAK,EAAGA,GAAK+pB,EACxBv7C,GAAKo7C,EAAYjhD,EAAE4D,EAAI,GAAI5D,EAAE4D,GAAIyzB,EAAGT,GAGzC52B,EAAE4D,GAAGpC,CAChB,CAEA,OAAOqE,CACX,EAEAxF,EAAqBgjB,WAAa,SAAUpC,GACxC,IAAIzW,EAAKvI,KACLC,EAAKsI,EAAGtI,GACZsI,EAAG8tB,SAAW9tB,EAAGE,KAAKxC,UAAU,IAAMvP,EAAM4C,OAAO2M,UAAU,IAAMvP,EAAM2C,MAAM6M,KAAKqC,EAAG81C,SAASp1C,KAAKV,IACrGA,EAAG8tB,SAASjwB,QAAQO,OAAO,QAAQtF,KAAK,QAASkH,EAAG46B,UAAUl6B,KAAKV,IAAKjC,MAAM,OAAQiC,EAAGqM,OAAOtO,MAAM,WAAW,WACvD,OAAtDiC,EAAGo3C,gBAAkB1/C,EAAG4C,OAAO7C,MAAMsG,MAAM,WAAkB,CACjE,IACAiC,EAAG8tB,SAAS/vB,MAAM,UAAWiC,EAAGo3C,gBAChCp3C,EAAG8tB,SAAS7vB,OAAOtD,aAAauO,SAASuN,GAAiB1Y,MAAM,UAAW,GAAGG,QAClF,EACArI,EAAqBkkB,WAAa,SAAU3D,EAAUtO,GAClD,MAAO,EAAEA,EAAiBrQ,KAAKq2B,SAASnzB,WAAWxF,KAAKy+C,SAAS/3C,YAAcpE,KAAKq2B,UAAUh1B,KAAK,IAAKsd,GAAUrY,MAAM,OAAQtG,KAAK4U,OAAOtO,MAAM,UAAWtG,KAAK2/C,gBACtK,EACAvhD,EAAqBsiB,iBAAmB,SAAUlB,EAAa+8B,GAC3D,IAAIh0C,EAAKvI,KACLwI,EAASD,EAAGC,OACZnP,EAAOkP,EAAGtI,GAAGqP,IAAIjW,OACjBmjD,EAAYj0C,EAAGq3C,sBAAsBpgC,EAAa+8B,GAClDgC,EAAehC,EAAQh0C,EAAG0yC,aAAe1yC,EAAG2xB,UAC5CskB,EAAS,SAAgBzgD,GACzB,OAAQw+C,EAAQh0C,EAAG4b,MAAQ5b,EAAGwb,IAAIjnB,KAAKyL,EAAIxK,EAC/C,EACI8hD,EAAS,SAAgB9hD,EAAG4D,GAC5B,OAAO6G,EAAOuvB,YAAY95B,OAAS,EAAIu+C,EAAUz+C,EAAG4D,GAAG,GAAG,GAAK48C,EAAazhD,KAAKyL,EAAIxK,EAAEsN,GAAxBkzC,CAA4Bh2C,EAAGu3C,iBAAiB/hD,EAAEsN,IACrH,EACI00C,EAAS,SAAgBhiD,EAAG4D,GAC5B,OAAO6G,EAAOuvB,YAAY95B,OAAS,EAAIu+C,EAAUz+C,EAAG4D,GAAG,GAAG,GAAK48C,EAAazhD,KAAKyL,EAAIxK,EAAEsN,GAAxBkzC,CAA4BxgD,EAAEzB,MACjG,EASA,OAPAjD,EAAOmP,EAAOO,aAAe1P,EAAKslD,GAAGkB,GAAQxkC,GAAG0kC,GAAQvgD,EAAEg/C,GAAUnlD,EAAKkG,EAAEi/C,GAAQnB,GAAG70C,EAAOsgC,WAAa,EAAI+W,GAAQtkC,GAAGwkC,GACpHv3C,EAAO8/B,mBACRjvC,EAAOA,EAAKqlD,SAAQ,SAAU3gD,GAC1B,OAAmB,OAAZA,EAAEzB,KACb,KAGG,SAAUyB,GACb,IAGIkB,EAHA4R,EAASrI,EAAO8/B,iBAAmB//B,EAAG8mC,iBAAiBtxC,EAAE8S,QAAU9S,EAAE8S,OACrE8tC,EAAK,EACLtB,EAAK,EAcT,OAZI90C,EAAGmX,WAAW3hB,IACVwK,EAAGuuC,WAAW/4C,KACd8S,EAAStI,EAAGmoC,oBAAoB7/B,IAEpC5R,EAAO5F,EAAK0oC,YAAYx5B,EAAGy1C,eAAejgD,GAAnC1E,CAAuCwX,KAE1CA,EAAO,KACP8tC,EAAKp2C,EAAGhJ,EAAEsR,EAAO,GAAGtR,GACpB89C,EAAK90C,EAAG2xB,UAAUn8B,EAAEsN,GAAf9C,CAAmBsI,EAAO,GAAGvU,QAEtC2C,EAAOuJ,EAAOO,aAAe,KAAOs0C,EAAK,IAAMsB,EAAK,KAAOA,EAAK,IAAMtB,GAEnEp+C,GAAc,OACzB,CACJ,EACAb,EAAqB0hD,iBAAmB,WACpC,OAAO,CACX,EACA1hD,EAAqBwhD,sBAAwB,SAAUpgC,EAAa+8B,GAEhE,IAAIh0C,EAAKvI,KACLwI,EAASD,EAAGC,OACZw3C,EAAiBxgC,EAAYo9B,QAAU,EACvCr9C,EAAIgJ,EAAGw0C,UAAU,EAAGiD,EAAgBxgC,IAAe+8B,GACnD/8C,EAAI+I,EAAG00C,YAAYV,GACnB0D,EAAa13C,EAAG40C,eAAe50C,EAAGmX,WAAYF,IAAe+8B,GAC7Dr4B,EAASq4B,EAAQh0C,EAAG0yC,aAAe1yC,EAAG2xB,UAC1C,OAAO,SAAUn8B,EAAG4D,GAChB,IAAI07C,EAAKn5B,EAAOpnB,KAAKyL,EAAIxK,EAAEsN,GAAlB6Y,CAAsB,GAC3B22B,EAASoF,EAAWliD,EAAG4D,IAAM07C,EAEjCC,EAAO/9C,EAAExB,GACLw/C,EAAO/9C,EAAEzB,GAQb,OANIyK,EAAOO,eACH,EAAIhL,EAAEzB,OAASihD,EAAOF,GAAMt/C,EAAEzB,MAAQ,GAAK+gD,EAAKE,KAChDA,EAAOF,GAIR,CAAC,CAACC,EAAMzC,GAAS,CAACyC,EAAMC,GAAQF,EAAKxC,IAAU,CAACyC,EAAMC,GAAQF,EAAKxC,IAC1E,CAACyC,EAAMzC,GAEX,CACJ,EAEAz8C,EAAqBijB,aAAe,WAChC,IAAI9Y,EAAKvI,KACTuI,EAAG+tB,WAAa/tB,EAAGE,KAAKxC,UAAU,IAAMvP,EAAMuC,SAASgN,UAAU,IAAMvP,EAAMsC,QAAQkN,KAAKqC,EAAG23C,kBAAkBj3C,KAAKV,IACpHA,EAAG+tB,WAAWlwB,QAAQO,OAAO,UAAUtF,KAAK,QAASkH,EAAGw6B,YAAY95B,KAAKV,IAAKlH,KAAK,IAAKkH,EAAG43C,OAAOl3C,KAAKV,IAAKjC,MAAM,OAAQiC,EAAGqM,OAC7HrM,EAAG+tB,WAAWhwB,MAAM,UAAWiC,EAAGkb,wBAAwBxa,KAAKV,IAC/DA,EAAG+tB,WAAW9vB,OAAOC,QACzB,EACArI,EAAqBmkB,aAAe,SAAUjD,EAAIC,EAAIlP,GAClD,IAAI1Y,EAAkBqI,KAAKyI,KAAKxC,UAAU,IAAMvP,EAAMgB,gBACtD,MAAO,EAAE2Y,EAAiBrQ,KAAKs2B,WAAWpzB,WAAWxF,KAAKy+C,SAAS/3C,YAAcpE,KAAKs2B,YAAYhwB,MAAM,UAAWtG,KAAK0jB,iBAAiBza,KAAKjJ,OAAOsG,MAAM,OAAQtG,KAAK4U,OAAOvT,KAAK,KAAMie,GAAIje,KAAK,KAAMke,IAAMlP,EAAiB1Y,EAAgBuL,WAAWxF,KAAKy+C,SAAS/3C,YAAczM,GAAiB0J,KAAK,KAAMie,GAAIje,KAAK,KAAMke,GACtU,EACAnhB,EAAqB4jB,QAAU,SAAUjkB,GACrC,OAAOA,EAAEwB,GAAa,IAARxB,EAAEwB,EAAUS,KAAKT,EAAExB,EAAEwB,GAAK,IAC5C,EACAnB,EAAqB0jB,cAAgB,WACjC,IACIjC,EACA28B,EAFAj0C,EAAKvI,KAGLuI,EAAGC,OAAOuvB,YAAY95B,OAAS,GAC/B4hB,EAActX,EAAGkX,gBAAgBlX,EAAGuX,YAAa08B,EAAYj0C,EAAG+1C,sBAAsBz+B,GACtFtX,EAAGwZ,QAAU,SAAUhkB,EAAG4D,GACtB,OAAO66C,EAAUz+C,EAAG4D,GAAG,GAAG,EAC9B,GAEA4G,EAAGwZ,QAAU,SAAUhkB,GACnB,OAAOwK,EAAG2xB,UAAUn8B,EAAEsN,GAAf9C,CAAmBxK,EAAEzB,MAChC,CAER,EACA8B,EAAqBgiD,WAAa,SAAUz+C,EAAG0J,GAC3C,IAAI9C,EAAKvI,KACT,OAAQqL,EAAK9C,EAAGE,KAAKxC,UAAU,IAAMvP,EAAMuC,QAAUsP,EAAG0wB,wBAAwB5tB,IAAO9C,EAAGE,MAAMxC,UAAU,IAAMvP,EAAMsC,QAAUgE,EAAQ2E,GAAK,IAAMA,EAAI,IAC3J,EACAvD,EAAqBs4C,cAAgB,SAAU/0C,EAAG0J,EAAIyuC,GAClD,IAAIvxC,EAAKvI,KACL07C,EAAInzC,EAAG83C,eAAep3C,KAAKV,GAC3BuxC,GACAvxC,EAAGquC,kBAEPruC,EAAG63C,WAAWz+C,EAAG0J,GAAI8E,QAAQzZ,EAAM0E,UAAU,GAAMiG,KAAK,IAAKq6C,EACjE,EACAt9C,EAAqBw4C,gBAAkB,SAAUj1C,GAC7C,IAAI4G,EAAKvI,KACL07C,EAAInzC,EAAG43C,OAAOl3C,KAAKV,GACvBA,EAAG63C,WAAWz+C,GAAGwW,QAAO,WACpB,OAAO5P,EAAGtI,GAAG4C,OAAO7C,MAAMmQ,QAAQzZ,EAAM0E,SAC5C,IAAG+U,QAAQzZ,EAAM0E,UAAU,GAAOiG,KAAK,IAAKq6C,EAChD,EACAt9C,EAAqB+hD,OAAS,SAAUpiD,GACpC,IAAIwK,EAAKvI,KACLwI,EAASD,EAAGC,OAChB,OAAOD,EAAGuuC,WAAW/4C,GAAK,EAAIb,EAAWsL,EAAOy/B,SAAWz/B,EAAOy/B,QAAQlqC,GAAKyK,EAAOy/B,OAC1F,EACA7pC,EAAqBiiD,eAAiB,SAAUtiD,GAC5C,IAAIwK,EAAKvI,KACLwI,EAASD,EAAGC,OAChB,OAAIA,EAAO2/B,2BACAjrC,EAAWsL,EAAO4/B,sBAAwB5/B,EAAO4/B,qBAAqBrqC,GAAKyK,EAAO4/B,qBAAuB5/B,EAAO4/B,qBAAsC,KAAf7/B,EAAG43C,OAAOpiD,GAEjJwK,EAAG43C,OAAOpiD,EAEzB,EACAK,EAAqBu9C,aAAe,SAAU59C,GAC1C,IAAIwK,EAAKvI,KACLwI,EAASD,EAAGC,OAChB,OAAOtL,EAAWsL,EAAO6/B,gBAAkB7/B,EAAO6/B,eAAetqC,GAAKyK,EAAO6/B,eAAiB7/B,EAAO6/B,eAAgC,EAAf9/B,EAAG43C,OAAOpiD,EACpI,EACAK,EAAqB2/C,eAAiB,SAAUhkB,EAAM2hB,GAClD,IAAIz7C,EAAKD,KAAKC,GACV+5B,EAAQ/5B,EAAG+5B,MAAMD,GACjBumB,EAAUrgD,EAAG4C,OAAOk3B,GACpBza,GAAMghC,EAAQj/C,KAAK,MACnBke,GAAM+gC,EAAQj/C,KAAK,MACvB,OAAO3D,KAAKogC,KAAKpgC,KAAKy0B,IAAI7S,EAAK0a,EAAM,GAAI,GAAKt8B,KAAKy0B,IAAI5S,EAAKya,EAAM,GAAI,IAAM0hB,CAChF,EACAt9C,EAAqB0/C,aAAe,SAAU/jB,EAAMv6B,GAChD,OAAO9B,KAAKwgC,IAAI1+B,EAAIQ,KAAKC,GAAG+5B,MAAMD,GAAM,IAAM,EAClD,EAEA37B,EAAqBke,gBAAkB,WACnC,IAAI/T,EAAKvI,KACLwI,EAASD,EAAGC,OAChB,OAAOA,EAAOorB,WAAaprB,EAAOorB,WAAarrB,EAAGg4C,gBACtD,EACAniD,EAAqBoe,iBAAmB,WACpC,IAAIjU,EAAKvI,KACLwI,EAASD,EAAGC,OACZ7F,EAAI6F,EAAOqrB,YAAcrrB,EAAOqrB,YAActrB,EAAGi4C,kBACrD,OAAO79C,EAAI,EAAIA,EAAI,KAAO4F,EAAG+U,QAAQ,WAAa9U,EAAO+U,iBAAmB,EAAI,EACpF,EACAnf,EAAqBse,qBAAuB,WACxC,IAAInU,EAAKvI,KACLwI,EAASD,EAAGC,OACZ+H,EAAUvT,EAAQwL,EAAO08B,aAAe18B,EAAO08B,YAAc,EAIjE,OAHI38B,EAAGjQ,OAASiQ,EAAGjQ,MAAMqP,SACrB4I,GAAWhI,EAAGk4C,mBAEXlwC,CACX,EACAnS,EAAqBwe,wBAA0B,WAC3C,IAAIpU,EAASxI,KAAKwI,OAClB,OAAOxL,EAAQwL,EAAO28B,gBAAkB38B,EAAO28B,eAAiB,CACpE,EACA/mC,EAAqBye,sBAAwB,SAAU3N,GACnD,IAAI3G,EAAKvI,KACLwI,EAASD,EAAGC,OAChB,OAAIxL,EAAQwL,EAAOw8B,cACRx8B,EAAOw8B,aACPx8B,EAAOO,cACNP,EAAOM,aAAeN,EAAOG,aAAe,EAAIjL,KAAK+G,IAAIhH,EAAO8K,EAAGm4C,qBAAqB,IAAKxxC,IAAoB,KACjH1G,EAAOY,aAAeZ,EAAOU,aAE9BX,EAAGjO,KAAKsT,wBAAwBR,QAAU,GAAK,EAE/C3P,EAAO8K,EAAGm4C,qBAAqB,IAAKxxC,GAEnD,EACA9Q,EAAqBue,uBAAyB,WAC1C,IAAIpU,EAAKvI,KACLwI,EAASD,EAAGC,OACZm4C,EAAiB,GACjBC,EAAqBr4C,EAAG0N,cAAgB1N,EAAGqT,iBAAmB,GAAK,EACvE,OAAI5e,EAAQwL,EAAOy8B,eACRz8B,EAAOy8B,cAAgB,EACvBz8B,EAAOO,aACP43C,EAAiBC,GAChBp4C,EAAOe,cAAgBf,EAAOyG,cAE/B,EAAI2xC,GAAsBr4C,EAAGjO,KAAKuT,yBAAyBT,QAAU,GAAK,GAE1E3P,EAAO8K,EAAGm4C,qBAAqB,OAASE,CAEvD,EAEAxiD,EAAqByiD,mBAAqB,SAAUtiD,GAGhD,IAFA,IACItB,EADAonC,EAASrkC,KAAK2X,YAAYhQ,OAEvB08B,GAA6B,SAAnBA,EAAOyc,SAAoB,CACxC,IACI7jD,EAAIonC,EAAOllC,wBAAwBZ,EACvC,CAAE,MAAOkiB,GACO,UAARliB,IAGAtB,EAAIonC,EAAO0c,YAEnB,CACA,GAAI9jD,EACA,MAEJonC,EAASA,EAAO9e,UACpB,CACA,OAAOtoB,CACX,EACAmB,EAAqBmiD,eAAiB,WAClC,OAAOvgD,KAAK6gD,mBAAmB,QACnC,EACAziD,EAAqBoiD,gBAAkB,WACnC,IAAI79C,EAAI3C,KAAK2X,YAAYrR,MAAM,UAC/B,OAAO3D,EAAEwK,QAAQ,MAAQ,GAAKxK,EAAE5D,QAAQ,KAAM,IAAM,CACxD,EAEAX,EAAqB4iD,WAAa,SAAU9xC,GACxC,IAAI3G,EAAKvI,KACLwI,EAASD,EAAGC,OACZy4C,EAAkBz4C,EAAOO,eAAiBP,EAAOO,eAAiBP,EAAOU,aACzEg4C,EAAgB14C,EAAOO,aAAerS,EAAM6D,MAAQ7D,EAAM+D,MAC1D0mD,EAAW54C,EAAGE,KAAK5F,OAAO,IAAMq+C,GAAev5C,OAC/Cy5C,EAAUD,GAAYF,EAAkBE,EAAShiD,wBAA0B,CAAEiI,MAAO,GACpFi6C,EAAY94C,EAAGoP,YAAYhQ,OAAOxI,wBAClC2c,EAASvT,EAAGwT,aACZulC,EAAUF,EAAQh6C,MAAQi6C,EAAU/5C,MAAQwU,EAAS,EAAIvT,EAAGsU,sBAAsB3N,IACtF,OAAOoyC,EAAU,EAAIA,EAAU,CACnC,EAEAljD,EAAqBsiD,qBAAuB,SAAUr1C,EAAI6D,GACtD,IAAI3G,EAAKvI,KACLiN,EAAW1E,EAAGjO,KAAKwT,qBAAqBzC,GAC5C,OAAO9C,EAAGjO,KAAKuU,gBAAgBxD,EAAI6D,IAAqBjC,EAASC,QAAU,GAAK,GACpF,EACA9O,EAAqB6d,wBAA0B,SAAUzP,GACrD,IAAIjE,EAAKvI,KACLwI,EAASD,EAAGC,OACZ7F,EAAI,GACR,MAAe,MAAX6J,GAAmBhE,EAAOM,YAGf,MAAX0D,GAAkBhE,EAAOsG,cAClBtG,EAAOsG,cAEH,MAAXtC,GAAmBhE,EAAOY,YAGf,OAAXoD,GAAoBhE,EAAOe,cAIhB,MAAXiD,IAAmBhE,EAAOO,cAAgBP,EAAOyB,qBACjDtH,EAAI,GAAK4F,EAAGjO,KAAKuU,gBAAgBrC,GAAU9O,KAAKugC,IAAIvgC,KAAK6H,IAAM,GAAKiD,EAAOyB,oBAAsB,MAGtF,MAAXuC,GAAkBhE,EAAOO,cAAgBP,EAAOuC,qBAChDpI,EAAI,GAAK4F,EAAGjO,KAAKuU,gBAAgBrC,GAAU9O,KAAKugC,IAAIvgC,KAAK6H,IAAM,GAAKiD,EAAOuC,oBAAsB,MAE9FpI,GAAK4F,EAAGjO,KAAKwT,qBAAqBtB,GAAQU,QAAU,EAAI,KAAkB,OAAXV,GAAmB,GAAK,IAVnFjE,EAAGqO,qBAHHpO,EAAOyX,aAAgB1X,EAAG0N,eAAkB1N,EAAG4N,cAAqB,EAAL,GAN/D,CAoBf,EAEA/X,EAAqBi4C,kBAAoB,WACrC,OAAO34C,KAAK+G,IAAI,EAAGzE,KAAK4K,MAAMnD,eAClC,EAEArJ,EAAqBoZ,UAAY,WAC7B,IAAIjP,EAAKvI,KACLC,EAAKsI,EAAGtI,GACZsI,EAAGtQ,MAAQgI,EAAGqP,IAAIrX,QAAQihB,GAAG,SAAS,WAClC3Q,EAAGg5C,gBACP,IACAh5C,EAAGtQ,MAAMwtB,OAAS,WAId,OAHIld,EAAGi5C,SACHj5C,EAAGi5C,QAAQ3+C,OAAO,IAAMnM,EAAMuB,OAAO6E,KAAKkD,MAEvCA,IACX,EACAuI,EAAGtQ,MAAMiI,MAAQ,SAAUA,GACvB,OAAOqI,EAAGC,OAAOO,aAAe/I,KAAKR,EAAEU,GAASF,KAAKT,EAAEW,EAC3D,CACJ,EACA9B,EAAqByb,aAAe,WAChC,IAAItR,EAAKvI,KACLwI,EAASD,EAAGC,OACZg5C,EAAUj5C,EAAGi5C,QAAUj5C,EAAG+G,IAAI3I,OAAO,KAAKtF,KAAK,YAAakH,EAAGM,aAAa,YAC5E44C,EAAaj5C,EAAO2T,cAAgB,UAAY,SAEpDqlC,EAAQl7C,MAAM,aAAcm7C,GAG5BD,EAAQ76C,OAAO,KAAKtF,KAAK,YAAakH,EAAG8L,qBAAqBhT,KAAK,QAAS3K,EAAME,OAGlF4qD,EAAQ3+C,OAAO,IAAMnM,EAAME,OAAO+P,OAAO,KAAKtF,KAAK,QAAS3K,EAAMM,WAGlEwqD,EAAQ3+C,OAAO,IAAMnM,EAAME,OAAO+P,OAAO,KAAKtF,KAAK,QAAS3K,EAAMI,YAGlE0qD,EAAQ76C,OAAO,KAAKtF,KAAK,YAAakH,EAAG2L,UAAU7S,KAAK,QAAS3K,EAAMuB,OAAO6E,KAAKyL,EAAGtQ,OAItFsQ,EAAGG,KAAKiJ,KAAO6vC,EAAQ76C,OAAO,KAAKtF,KAAK,QAAS3K,EAAM6D,OAAO8G,KAAK,YAAakH,EAAGM,aAAa,SAASxH,KAAK,YAAamH,EAAOO,aAAe,GAAKR,EAAGK,kBAAkBtC,MAAM,aAAckC,EAAO49B,qBAAuBqb,EAAa,SAC9O,EACArjD,EAAqB2f,yBAA2B,SAAUxT,GACtD,IAGIm3C,EAHAn5C,EAAKvI,KACLwhD,EAAUj5C,EAAGi5C,QACbh5C,EAASD,EAAGC,OAKZs7B,EAAgBv7B,EAAGu7B,cAAc76B,KAAKV,GACtC26B,EAAY36B,EAAG26B,UAAUj6B,KAAKV,GAC9Bs7B,EAAiBt7B,EAAGs7B,eAAe56B,KAAKV,GACxCu6B,EAAav6B,EAAGu6B,WAAW75B,KAAKV,GAChC66B,EAAa76B,EAAG66B,WAAWn6B,KAAKV,GAEhCC,EAAO2T,gBAEYqlC,EAAQ3+C,OAAO,IAAMnM,EAAMM,WAAWiP,UAAU,IAAMvP,EAAMK,UAAUmP,KAAKqE,GAASlJ,KAAK,QAASyiC,GAClF19B,QAAQO,OAAO,KAAKL,MAAM,UAAW,GAAGjF,KAAK,QAASyiC,GAEzEn9B,OAAO,KAAKtF,KAAK,QAAS6hC,IAI1Cwe,EADoBF,EAAQ3+C,OAAO,IAAMnM,EAAMI,YAAYmP,UAAU,IAAMvP,EAAMG,WAAWqP,KAAKqE,GAASlJ,KAAK,QAASwiC,GACnFz9B,QAAQO,OAAO,KAAKL,MAAM,UAAW,GAAGjF,KAAK,QAASwiC,IAE1El9B,OAAO,KAAKtF,KAAK,QAASyhC,GAE3C4e,EAAiB/6C,OAAO,KAAKtF,KAAK,QAAS+hC,GAG3Coe,EAAQv7C,UAAU,IAAMvP,EAAMuB,MAAQ,SAASoJ,KAAKmH,EAAOO,aAAe,QAAU,SAAUP,EAAOO,aAAeR,EAAG2U,OAAS3U,EAAG4U,SAE3I,EACA/e,EAAqBujD,qBAAuB,SAAU3iC,GAClD,IAAIzW,EAAKvI,KACTuI,EAAGq5C,WAAar5C,EAAGi5C,QAAQv7C,UAAU,IAAMvP,EAAMqC,MAAMkN,UAAU,IAAMvP,EAAMoC,KAAKoN,KAAKqC,EAAG2zC,QAAQjzC,KAAKV,IACvGA,EAAGq5C,WAAWx7C,QAAQO,OAAO,QAAQtF,KAAK,QAASkH,EAAG06B,SAASh6B,KAAKV,IAAKjC,MAAM,SAAU,QAAQA,MAAM,OAAQiC,EAAGqM,OAClHrM,EAAGq5C,WAAWt7C,MAAM,UAAWiC,EAAGib,eAAeva,KAAKV,IACtDA,EAAGq5C,WAAWp7C,OAAOtD,aAAauO,SAASuN,GAAiB1Y,MAAM,UAAW,GAAGG,QACpF,EACArI,EAAqByjD,qBAAuB,SAAUC,EAAczxC,EAAgBoB,IAC/EpB,EAAiBrQ,KAAK4hD,WAAW1+C,WAAWxF,KAAKy+C,SAAS/3C,YAAYqN,SAASA,GAAYzR,KAAK4hD,YAAYvgD,KAAK,IAAKygD,GAAcx7C,MAAM,UAAW,EAC1J,EACAlI,EAAqB2jD,sBAAwB,SAAU/iC,GACnD,IAAIzW,EAAKvI,KACTuI,EAAGy5C,YAAcz5C,EAAGi5C,QAAQv7C,UAAU,IAAMvP,EAAMmC,OAAOoN,UAAU,IAAMvP,EAAMkC,MAAMsN,KAAKqC,EAAG81C,SAASp1C,KAAKV,IAC3GA,EAAGy5C,YAAY57C,QAAQO,OAAO,QAAQtF,KAAK,QAASkH,EAAGs6B,UAAU55B,KAAKV,IAAKjC,MAAM,SAAUiC,EAAGqM,OAC9FrM,EAAGy5C,YAAY17C,MAAM,UAAWiC,EAAGib,eAAeva,KAAKV,IACvDA,EAAGy5C,YAAYx7C,OAAOtD,aAAauO,SAASuN,GAAiB1Y,MAAM,UAAW,GAAGG,QACrF,EACArI,EAAqB6jD,sBAAwB,SAAUC,EAAe7xC,EAAgBoB,IACjFpB,EAAiBrQ,KAAKgiD,YAAY9+C,WAAWxF,KAAKy+C,SAAS/3C,YAAYqN,SAASA,GAAYzR,KAAKgiD,aAAa3gD,KAAK,IAAK6gD,GAAe57C,MAAM,UAAW,EAC7J,EACAlI,EAAqB+jD,sBAAwB,SAAUnjC,GACnD,IAAIzW,EAAKvI,KACLC,EAAKsI,EAAGtI,GACZsI,EAAG65C,YAAc75C,EAAGi5C,QAAQv7C,UAAU,IAAMvP,EAAM4C,OAAO2M,UAAU,IAAMvP,EAAM2C,MAAM6M,KAAKqC,EAAG81C,SAASp1C,KAAKV,IAC3GA,EAAG65C,YAAYh8C,QAAQO,OAAO,QAAQtF,KAAK,QAASkH,EAAG46B,UAAUl6B,KAAKV,IAAKjC,MAAM,OAAQiC,EAAGqM,OAAOtO,MAAM,WAAW,WAC1D,OAAtDiC,EAAGo3C,gBAAkB1/C,EAAG4C,OAAO7C,MAAMsG,MAAM,WAAkB,CACjE,IACAiC,EAAG65C,YAAY97C,MAAM,UAAW,GAChCiC,EAAG65C,YAAY57C,OAAOtD,aAAauO,SAASuN,GAAiB1Y,MAAM,UAAW,GAAGG,QACrF,EACArI,EAAqBikD,sBAAwB,SAAUC,EAAejyC,EAAgBoB,IACjFpB,EAAiBrQ,KAAKoiD,YAAYl/C,WAAWxF,KAAKy+C,SAAS/3C,YAAYqN,SAASA,GAAYzR,KAAKoiD,aAAa/gD,KAAK,IAAKihD,GAAeh8C,MAAM,OAAQtG,KAAK4U,OAAOtO,MAAM,UAAWtG,KAAK2/C,eAC5L,EACAvhD,EAAqBsjB,eAAiB,SAAUtD,EAAcvM,EAAaJ,EAAUuN,EAAiBQ,EAAaG,EAAYE,GAC3H,IAGIyiC,EACAR,EACAI,EALA35C,EAAKvI,KACLC,EAAKsI,EAAGtI,GACRuI,EAASD,EAAGC,OAKhBD,EAAGi5C,QAAQl7C,MAAM,aAAckC,EAAO2T,cAAgB,UAAY,UAG9D3T,EAAO2T,gBAEHlc,EAAGm3C,OAA2B,SAAlBn3C,EAAGm3C,MAAMh8B,MACrB7S,EAAGtQ,MAAM0gB,OAAOpQ,EAAGhJ,EAAE8gB,aAAaoF,SAGlCrH,IAGK7V,EAAGtQ,MAAMsB,SACVgP,EAAGtQ,MAAM0gB,OAAOpQ,EAAGhJ,EAAE8gB,aAAaoF,SAGtC68B,EAAgB/5C,EAAGmY,iBAAiBlB,GAAa,GACjDsiC,EAAev5C,EAAGoY,gBAAgBhB,GAAY,GAC9CuiC,EAAgB35C,EAAGqY,iBAAiBf,GAAa,GAEjDtX,EAAGo5C,qBAAqBlwC,GACxBlJ,EAAGw5C,sBAAsBtwC,GACzBlJ,EAAG45C,sBAAsB1wC,GAEzBlJ,EAAGs5C,qBAAqBC,EAAcrwC,EAAUA,GAChDlJ,EAAG05C,sBAAsBC,EAAezwC,EAAUA,GAClDlJ,EAAG85C,sBAAsBC,EAAe7wC,EAAUA,IAG9D,EACArT,EAAqBmjD,eAAiB,WAClC,IAAIh5C,EAAKvI,KACLT,EAAIgJ,EAAGhJ,EACXgJ,EAAGqJ,OAAO,CACNvB,gBAAgB,EAChB8N,MAAO5V,EAAGC,OAAO4X,aACjBhC,cAAc,EACdvD,mBAAmB,EACnB4D,eAAe,IAEnBlW,EAAGC,OAAO69B,iBAAiBvpC,KAAKyL,EAAGmK,IAAKnT,EAAE8gB,YAC9C,EACAjiB,EAAqBimB,iBAAmB,SAAUhU,EAAgBwB,GAC9D,IACIhH,EADAtC,EAAKvI,KAEL6R,GAAeA,EAAYH,SAC3B7G,EAAWgH,EAAYH,UAEvB7G,EAAWtC,EAAGi5C,QAAQ3+C,OAAO,IAAMnM,EAAM6D,OACrC8V,IACAxF,EAAWA,EAAS3H,eAG5BqF,EAAGi5C,QAAQngD,KAAK,YAAakH,EAAGM,aAAa,YAC7CgC,EAASxJ,KAAK,YAAakH,EAAGM,aAAa,QAC/C,EACAzK,EAAqBoc,iBAAmB,WACpC,IAAIjS,EAAKvI,KACLwI,EAASD,EAAGC,OACZmQ,EAASzb,EAAWsL,EAAO+R,eAAiB/R,EAAO+R,cAAchS,EAAGwH,WAAWxH,EAAGrC,KAAKqE,UAAY/B,EAAO+R,cAI9G,OAHIhS,EAAG2B,iBACHyO,EAAS,CAACpQ,EAAG4B,UAAUwO,EAAO,IAAKpQ,EAAG4B,UAAUwO,EAAO,MAEpDA,CACX,EAEAva,EAAqBgZ,SAAW,WAC5B,IAAI7O,EAAKvI,KACTuI,EAAGE,KAAK5F,OAAO,IAAMnM,EAAME,OAAO+P,OAAO,KAAKtF,KAAK,QAAS3K,EAAMQ,YAClEqR,EAAG2tB,SAAW3tB,EAAGtI,GAAGgG,UAAU,GAClC,EACA7H,EAAqBuf,qBAAuB,SAAUpT,GAClD,IAAIhC,EAAKvI,KAGL4jC,EAAiBr7B,EAAGq7B,eAAe36B,KAAKV,GACxCm6B,EAAan6B,EAAGm6B,WAAWz5B,KAAKV,GAChCg4B,EAAah4B,EAAGg4B,WAAWt3B,KAAKV,GACnBA,EAAGE,KAAK5F,OAAO,IAAMnM,EAAMQ,YAAY+O,UAAU,IAAMvP,EAAMO,WAAWiP,KAAKqE,GAASlJ,KAAK,SAAS,SAAUtD,GAC3H,OAAO6lC,EAAe7lC,GAAKwiC,EAAWxiC,EAC1C,IAC+BqI,QAAQO,OAAO,KAAKtF,KAAK,QAASuiC,GAAgBt9B,MAAM,UAAW,GAAGA,MAAM,iBAAkB,QAC/GK,OAAO,KAAKtF,KAAK,QAASqhC,EAC5C,EACAtkC,EAAqBmjB,WAAa,SAAUvC,GACxC,IAAIzW,EAAKvI,KACLwI,EAASD,EAAGC,OACZ+5C,EAAgBh6C,EAAGg6C,cAAct5C,KAAKV,GACtCk6B,EAAYl6B,EAAGk6B,UAAUx5B,KAAKV,GAClCA,EAAG2tB,SAAW3tB,EAAGE,KAAKxC,UAAU,IAAMvP,EAAM+C,OAAOwM,UAAU,IAAMvP,EAAM8C,MAAM0M,KAAKq8C,GACpFh6C,EAAG2tB,SAAS9vB,QAAQO,OAAO,QAAQtF,KAAK,QAASohC,GAAWphC,KAAK,eAAe,SAAUtD,GACtF,OAAOyK,EAAOO,aAAehL,EAAEzB,MAAQ,EAAI,MAAQ,QAAU,QACjE,IAAGgK,MAAM,SAAU,QAAQA,MAAM,QAAQ,SAAUvI,GAC/C,OAAOwK,EAAGqM,MAAM7W,EACpB,IAAGuI,MAAM,eAAgB,GACzBiC,EAAG2tB,SAAS18B,MAAK,SAAUuE,EAAG4D,EAAGyzB,GAC7B,OAAO7sB,EAAGonC,gBAAgB5xC,EAAEsN,GAArB9C,CAAyBxK,EAAEzB,MAAOyB,EAAEsN,GAAI1J,EAAGyzB,EACtD,IACA7sB,EAAG2tB,SAAS1vB,OAAOtD,aAAauO,SAASuN,GAAiB1Y,MAAM,eAAgB,GAAGG,QACvF,EACArI,EAAqBokB,WAAa,SAAU1D,EAAUC,EAAUyjC,EAASnyC,GACrE,MAAO,EAAEA,EAAiBrQ,KAAKk2B,SAAShzB,aAAelD,KAAKk2B,UAAU70B,KAAK,IAAKyd,GAAUzd,KAAK,IAAK0d,GAAUzY,MAAM,OAAQtG,KAAK4U,OAAOtO,MAAM,eAAgBk8C,EAAU,EAAIxiD,KAAK8jB,eAAe7a,KAAKjJ,OACzM,EACA5B,EAAqBs7C,YAAc,SAAUlgD,EAAMipD,EAAKxnC,GACpD,IAGIynC,EAHAtzC,EAAQpP,KAAKC,GAAG4C,OAAO,QAAQ8D,OAAO,OAAOwJ,QAAQ,MAAM,GAC3Db,EAAMF,EAAMzI,OAAO,OAAOL,MAAM,aAAc,UAAUA,MAAM,WAAY,SAASA,MAAM,MAAO,GAAGA,MAAM,OAAQ,GACjHq8C,EAAO3iD,KAAKC,GAAG4C,OAAOoY,GAAS3U,MAAM,QAMzC,OAJAgJ,EAAIrJ,UAAU,UAAUC,KAAK,CAAC1M,IAAO4M,QAAQO,OAAO,QAAQwJ,QAAQsyC,GAAY,IAAI,GAAMn8C,MAAM,OAAQq8C,GAAMnpD,KAAKA,GAAMsJ,MAAK,WAC1H4/C,EAAO1iD,KAAKb,uBAChB,IACAiQ,EAAM3I,SACCi8C,CACX,EACAtkD,EAAqByiB,kBAAoB,SAAUrB,EAAaG,EAAYE,EAAa61B,GACrF,IAAIntC,EAAKvI,KACL4iD,EAAgBr6C,EAAGq3C,sBAAsBpgC,GAAa,GACtDqjC,EAAet6C,EAAGk0C,qBAAqB98B,GAAY,GACnDmjC,EAAgBv6C,EAAG+1C,sBAAsBz+B,GAAa,GACtDkjC,EAASrN,EAAOntC,EAAGy6C,YAAcz6C,EAAG06C,YACxC,OAAO,SAAUllD,EAAG4D,GAChB,IAAI66C,EAAYj0C,EAAGmX,WAAW3hB,GAAK6kD,EAAgBr6C,EAAGqX,UAAU7hB,GAAK8kD,EAAeC,EACpF,OAAOC,EAAOjmD,KAAKyL,EAAIi0C,EAAUz+C,EAAG4D,GAAI5D,EAAGiC,KAC/C,CACJ,EACA5B,EAAqB4kD,YAAc,SAAUxwB,EAAQz0B,EAAG07C,GACpD,IAEIyJ,EACA3yC,EAHAhI,EAAKvI,KACLd,EAAMu6C,EAAYt6C,wBAiBtB,OAdIoJ,EAAGC,OAAOO,cACVwH,EAAUhI,EAAGqX,UAAU7hB,GAAK,EAAI,EAChCmlD,EAAO1wB,EAAO,GAAG,GAAKjiB,GAAWxS,EAAEzB,MAAQ,GAAK,EAAI,IAEpD4mD,EAAO36C,EAAG+U,QAAQ,QAAUkV,EAAO,GAAG,GAAKA,EAAO,GAAG,IAAM,EAAIA,EAAO,GAAG,GAG7D,OAAZz0B,EAAEzB,QACE4mD,EAAO36C,EAAG7I,MACVwjD,EAAO36C,EAAG7I,MAAQR,EAAIQ,MACfwjD,EAAO,IACdA,EAAO,IAGRA,CACX,EACA9kD,EAAqB6kD,YAAc,SAAUzwB,EAAQz0B,EAAG07C,GACpD,IAEI0J,EAFA56C,EAAKvI,KACLd,EAAMu6C,EAAYt6C,wBAyBtB,OAvBIoJ,EAAGC,OAAOO,aACVo6C,GAAQ3wB,EAAO,GAAG,GAAKA,EAAO,GAAG,GAAkB,GAAbtzB,EAAIS,QAAgB,GAE1DwjD,EAAO3wB,EAAO,GAAG,GACbz0B,EAAEzB,MAAQ,GAAiB,IAAZyB,EAAEzB,QAAgBiM,EAAG4kC,kBACpCgW,GAAQjkD,EAAIS,OACR4I,EAAGqX,UAAU7hB,IAAMwK,EAAG66C,WACtBD,GAAQ,GACA56C,EAAGqX,UAAU7hB,IAAMwK,EAAG86C,aAC9BF,GAAQ,IAGZA,GAAQ56C,EAAGqX,UAAU7hB,IAAM,GAAK,GAIxB,OAAZA,EAAEzB,OAAmBiM,EAAGC,OAAOO,eAC3Bo6C,EAAOjkD,EAAIS,OACXwjD,EAAOjkD,EAAIS,OACJwjD,EAAOnjD,KAAKL,SACnBwjD,EAAOnjD,KAAKL,OAAS,IAGtBwjD,CACX,EAEA/kD,EAAqB4b,UAAY,WAC7B,IAAIzR,EAAKvI,KACTuI,EAAGjQ,MAAQiQ,EAAG+G,IAAI3I,OAAO,QAAQnN,KAAK+O,EAAGC,OAAOshC,YAAYzoC,KAAK,QAASkH,EAAG7R,MAAM4B,MACvF,EACA8F,EAAqBojB,YAAc,WAC/B,IAAIjZ,EAAKvI,KACTuI,EAAGjQ,MAAM+I,KAAK,IAAKkH,EAAG+6C,UAAUr6C,KAAKV,IAAKlH,KAAK,IAAKkH,EAAGg7C,UAAUt6C,KAAKV,GAC1E,EACAnK,EAAqBklD,UAAY,WAC7B,IAAI/6C,EAAKvI,KACLwI,EAASD,EAAGC,OACZyE,EAAWzE,EAAOwhC,gBAAkB,OAUxC,OARI/8B,EAASE,QAAQ,UAAY,EACzB5E,EAAG8T,aAAe9T,EAAGmxC,YAAYnxC,EAAGjQ,MAAMqP,OAAOgyC,YAAapxC,EAAG7R,MAAM4B,MAAOiQ,EAAGjQ,MAAMqP,QAAQjI,MAAQ8I,EAAOuhC,cAAc3iC,MACzH6F,EAASE,QAAQ,WAAa,GAChC5E,EAAG8T,aAAe9T,EAAGmxC,YAAYnxC,EAAGjQ,MAAMqP,OAAOgyC,YAAapxC,EAAG7R,MAAM4B,MAAOiQ,EAAGjQ,MAAMqP,QAAQjI,OAAS,EAGzG8I,EAAOuhC,cAAcziC,IAGjC,EACAlJ,EAAqBmlD,UAAY,WAC7B,IAAIh7C,EAAKvI,KACT,OAAOuI,EAAGC,OAAOuhC,cAAc5iC,IAAMoB,EAAGmxC,YAAYnxC,EAAGjQ,MAAMqP,OAAOgyC,YAAapxC,EAAG7R,MAAM4B,MAAOiQ,EAAGjQ,MAAMqP,QAAQhI,MACtH,EACAvB,EAAqBqiD,gBAAkB,WACnC,IAAIl4C,EAAKvI,KACT,OAAOuI,EAAGg7C,YAAch7C,EAAGC,OAAOuhC,cAAc1iC,MACpD,EAEAjJ,EAAqB0b,YAAc,WAC/B,IAEInY,EAFA4G,EAAKvI,KACLwI,EAASD,EAAGC,OAIhB,GAFAD,EAAG/P,QAAU+P,EAAGoP,YAAYrR,MAAM,WAAY,YAAYK,OAAO,OAAOtF,KAAK,QAAS3K,EAAM6B,kBAAkB+N,MAAM,WAAY,YAAYA,MAAM,iBAAkB,QAAQA,MAAM,UAAW,QAEzLkC,EAAOmhC,kBAAmB,CAC1B,GAAIphC,EAAG2B,gBAAkB5M,EAASkL,EAAOohC,gBAAiB,CAEtD,IADAphC,EAAOohC,eAAiBrhC,EAAG4B,UAAU3B,EAAOohC,gBACvCjoC,EAAI,EAAGA,EAAI4G,EAAGrC,KAAKqE,QAAQ,GAAGsG,OAAO5S,QAClCsK,EAAGrC,KAAKqE,QAAQ,GAAGsG,OAAOlP,GAAGpC,EAAIiJ,EAAOohC,gBAAmB,EADjBjoC,KAKlD6G,EAAOohC,eAAiBjoC,CAC5B,CACA4G,EAAG/P,QAAQuf,KAAKvP,EAAO+gC,iBAAiBzsC,KAAKyL,EAAIA,EAAGrC,KAAKqE,QAAQ5G,KAAI,SAAU5F,GAC3E,OAAOwK,EAAG+1B,QAAQvgC,EAAE8S,OAAOrI,EAAOohC,gBACtC,IAAIrhC,EAAGjO,KAAKiR,qBAAsBhD,EAAG0rC,WAAW1rC,EAAGwT,cAAexT,EAAGqM,QACrErM,EAAG/P,QAAQ8N,MAAM,MAAOkC,EAAOqhC,sBAAsB1iC,KAAKb,MAAM,OAAQkC,EAAOqhC,sBAAsBviC,MAAMhB,MAAM,UAAW,QAChI,CACJ,EACAlI,EAAqBolD,uBAAyB,WAC1C,IAAIj7C,EAAKvI,KACLwI,EAASD,EAAGC,OAEhB,GAAkC,IAA9BA,EAAOuvB,YAAY95B,aAAyC8E,IAAzByF,EAAO0gC,cAgDvC,CAEH,IAAIrQ,EAAMtwB,EAAG2mC,aAAa3mC,EAAGrC,KAAKqE,SAAS5G,KAAI,SAAUhC,GACrD,OAAOA,EAAE0J,EACb,IAQA,OAJI9C,EAAGkmC,cAAgBlmC,EAAGimC,iBACtB3V,EAAMA,EAAIuW,WAGP,SAAU99B,EAAGC,GAChB,OAAOsnB,EAAI1rB,QAAQmE,EAAEjG,IAAMwtB,EAAI1rB,QAAQoE,EAAElG,GAC7C,CACJ,CA3DI,IAAI4jC,EAAQzmC,EAAO0gC,mBACLnmC,IAAVksC,IACAA,EAAQzmC,EAAOs9B,YAGnB,IAAI2d,EAAU,SAAiB/nD,GAC3B,OAAOA,EAAMA,EAAIY,MAAQ,IAC7B,EAGA,GAAIgB,EAAS2xC,IAAkC,QAAxBA,EAAM9K,cACzB,OAAO,SAAU7yB,EAAGC,GAChB,OAAOkyC,EAAQnyC,GAAKmyC,EAAQlyC,EAChC,EACG,GAAIjU,EAAS2xC,IAAkC,SAAxBA,EAAM9K,cAChC,OAAO,SAAU7yB,EAAGC,GAChB,OAAOkyC,EAAQlyC,GAAKkyC,EAAQnyC,EAChC,EACG,GAAIpU,EAAW+xC,GAAQ,CAM1B,IAAIyU,EAAezU,EAcnB,YAZ6BlsC,IAAzByF,EAAO0gC,gBACPwa,EAAe,SAAsBpyC,EAAGC,GACpC,OAAO09B,EAAM39B,EAAI,CACbjG,GAAIiG,EAAEjG,GACNwF,OAAQ,CAACS,IACT,KAAMC,EAAI,CACVlG,GAAIkG,EAAElG,GACNwF,OAAQ,CAACU,IACT,KACR,GAGGmyC,CACX,CAAO,OAAItmD,EAAQ6xC,GACR,SAAU39B,EAAGC,GAChB,OAAO09B,EAAM9hC,QAAQmE,EAAEjG,IAAM4jC,EAAM9hC,QAAQoE,EAAElG,GACjD,OAHG,CAqBf,EACAjN,EAAqBsrC,kBAAoB,SAAU3rC,EAAGyrC,EAAoBC,EAAoB70B,GAC1F,IAOIpb,EACAmI,EACArJ,EACAgE,EACAoxC,EACAiW,EAZAp7C,EAAKvI,KACLwI,EAASD,EAAGC,OACZo7C,EAAcp7C,EAAO2gC,sBAAwBK,EAC7Cqa,EAAar7C,EAAO4gC,qBAAuB,SAAUsE,GACrD,OAAOA,CACX,EACIoW,EAAct7C,EAAO6gC,sBAAwBI,EAQ7Csa,EAAsB/jD,KAAKwjD,yBAK/B,IAJIO,GACAhmD,EAAEsT,KAAK0yC,GAGNpiD,EAAI,EAAGA,EAAI5D,EAAEE,OAAQ0D,IACtB,GAAM5D,EAAE4D,KAAO5D,EAAE4D,GAAGrF,OAAwB,IAAfyB,EAAE4D,GAAGrF,SAI7B9C,IACDlB,EAAQuG,EAAS+kD,EAAcA,EAAY7lD,EAAE4D,GAAGpC,GAAKxB,EAAE4D,GAAGpC,GAC1D/F,EAAO,iBAAmB+O,EAAG7R,MAAM8B,QAAU,MAAQF,GAAmB,IAAVA,EAAc,uBAAyBA,EAAQ,aAAe,UAIlHyK,KADdzG,EAAQuC,EAASilD,EAAY/lD,EAAE4D,GAAGrF,MAAOyB,EAAE4D,GAAGg8B,MAAO5/B,EAAE4D,GAAG0J,GAAItN,EAAE4D,GAAGkC,MAAO9F,MACjD,CAErB,GAAkB,OAAdA,EAAE4D,GAAG+rC,KACL,SAEJA,EAAO7uC,EAASglD,EAAW9lD,EAAE4D,GAAG+rC,KAAM3vC,EAAE4D,GAAGg8B,MAAO5/B,EAAE4D,GAAG0J,GAAItN,EAAE4D,GAAGkC,QAChE8/C,EAAUp7C,EAAGuM,WAAavM,EAAGuM,WAAW/W,EAAE4D,GAAGrF,OAASsY,EAAM7W,EAAE4D,GAAG0J,IAEjE7R,GAAQ,cAAgB+O,EAAG7R,MAAM+B,YAAc,IAAM8P,EAAG0wB,wBAAwBl7B,EAAE4D,GAAG0J,IAAM,KAC3F7R,GAAQ,kDAAoDmqD,EAAU,YAAcjW,EAAO,QAC3Fl0C,GAAQ,qBAAuB8C,EAAQ,QACvC9C,GAAQ,OACZ,CAEJ,OAAOA,EAAO,UAClB,EACA4E,EAAqB4lD,gBAAkB,SAAU/O,EAAYgP,EAAQC,EAASjpC,GAC1E,IAGIqmC,EAAS6C,EAAaC,EAAcC,EAAYC,EAHhD/7C,EAAKvI,KACLwI,EAASD,EAAGC,OACZvI,EAAKsI,EAAGtI,GAERi0C,EAAS3rC,EAAGwT,aACZie,EAAQ/5B,EAAG+5B,MAAM/e,GA8BrB,OA5BIi5B,GACAiQ,GAAe57C,EAAG7I,OAAS6I,EAAG0N,cAAgB1N,EAAGqT,iBAAmB,IAAM,EAAIoe,EAAM,GACpFqqB,GAAc97C,EAAG+U,QAAQ,SAAW/U,EAAG5I,OAAS4I,EAAG5I,OAAS,GAAKq6B,EAAM,GAAK,KAE5EsnB,EAAU/4C,EAAGy4C,YAAW,GACpBx4C,EAAOO,cAEPq7C,GADAD,EAAc7C,EAAUtnB,EAAM,GAAK,KACNiqB,EAC7BK,EAAa/7C,EAAG8T,aAAe9T,EAAGoU,yBAClC0nC,EAAa97C,EAAGhJ,EAAE01C,EAAW,GAAG11C,GAAK,KAGrC6kD,GADAD,EAAc7C,EAAU/4C,EAAGsU,uBAAsB,GAAQtU,EAAGhJ,EAAE01C,EAAW,GAAG11C,GAAK,IACpD0kD,EAC7BK,EAAahD,EAAU/4C,EAAG8T,aAAe9T,EAAGoU,yBAC5C0nC,EAAarqB,EAAM,GAAK,IAGxBoqB,EAAeE,IAEfH,GAAeC,EAAeE,EAAa,IAE3CD,EAAaH,EAAU37C,EAAGgU,gBAC1B8nC,GAAcH,EAAU,KAG5BG,EAAa,IACbA,EAAa,GAEV,CAAEl9C,IAAKk9C,EAAY/8C,KAAM68C,EACpC,EACA/lD,EAAqBojC,YAAc,SAAUD,EAActmB,GACvD,IAEIgpC,EAAQC,EAASj3C,EAFjB1E,EAAKvI,KACLwI,EAASD,EAAGC,OAEZ0rC,EAAS3rC,EAAGwT,aACZk5B,EAAa1T,EAAappB,QAAO,SAAUpa,GAC3C,OAAOA,GAAKf,EAAQe,EAAEzB,MAC1B,IACIioD,EAAmB/7C,EAAO8gC,kBAAoBlrC,EAAqB4lD,gBAC7C,IAAtB/O,EAAWh3C,QAAiBuK,EAAOwgC,eAGvCzgC,EAAG/P,QAAQuf,KAAKvP,EAAO+gC,iBAAiBzsC,KAAKyL,EAAIg5B,EAAch5B,EAAGjO,KAAKiR,qBAAsBhD,EAAG0rC,WAAWC,GAAS3rC,EAAGqM,QAAQtO,MAAM,UAAW,SAGhJ29C,EAAS17C,EAAG/P,QAAQgsD,SAAS,eAC7BN,EAAU37C,EAAG/P,QAAQgsD,SAAS,gBAE9Bv3C,EAAWs3C,EAAiBznD,KAAKkD,KAAMi1C,EAAYgP,EAAQC,EAASjpC,GAEpE1S,EAAG/P,QAAQ8N,MAAM,MAAO2G,EAAS9F,IAAM,MAAMb,MAAM,OAAQ2G,EAAS3F,KAAO,MAC/E,EACAlJ,EAAqBsjC,YAAc,WAC/B1hC,KAAKxH,QAAQ8N,MAAM,UAAW,OAClC,EAEAlI,EAAqBq8B,cAAgB,SAAUxG,EAAW7Y,GACtD,IAAI7S,EAAKvI,KACLwI,EAASD,EAAGC,OAChBD,EAAGyuB,eAAe/C,GAAWr1B,SAAQ,SAAUyM,GAC3C9C,EAAGsO,cAAcxL,GAAM+P,IAAS5S,EAAOo9B,WAAWv6B,GAClD7C,EAAOo9B,WAAWv6B,GAAM+P,CAC5B,IACK6Y,IACDzrB,EAAOm9B,UAAYvqB,EAE3B,EACAhd,EAAqBkf,QAAU,SAAUlC,EAAM7Q,GAC3C,IAAIhC,EAAKvI,KACL8wC,EAAQvoC,EAAGC,OAAOo9B,WAClB6e,GAAM,EAkBV,OAjBAl6C,EAAUA,GAAWhC,EAAGrC,KAAKqE,UACdA,EAAQtM,OACnBsM,EAAQ3L,SAAQ,SAAUjI,GACtB,IAAIisB,EAAIkuB,EAAMn6C,EAAO0U,KACjBuX,GAAKA,EAAEzV,QAAQiO,IAAS,IAAMwH,GAAc,SAATxH,KACnCqpC,GAAM,EAEd,IACOroD,OAAO8B,KAAK4yC,GAAO7yC,OAC1B7B,OAAO8B,KAAK4yC,GAAOlyC,SAAQ,SAAUyM,GAC7BylC,EAAMzlC,KAAQ+P,IACdqpC,GAAM,EAEd,IAEAA,EAAMl8C,EAAGC,OAAOm9B,YAAcvqB,EAE3BqpC,CACX,EACArmD,EAAqB2d,WAAa,SAAUxR,GACxC,OAAOvK,KAAKsd,QAAQ,MAAO/S,IAAYvK,KAAKsd,QAAQ,QAAS/S,IAAYvK,KAAKsd,QAAQ,QAAS/S,EACnG,EACAnM,EAAqB0hB,WAAa,SAAU/hB,GACxC,IAAIyK,EAASxI,KAAKwI,OACd6C,EAAK/N,EAASS,GAAKA,EAAIA,EAAEsN,GAC7B,OAAQ7C,EAAOo9B,WAAWv6B,IAAO,CAAC,OAAQ,SAAU,OAAQ,cAAe,OAAQ,aAAa8B,QAAQ3E,EAAOo9B,WAAWv6B,KAAQ,CACtI,EACAjN,EAAqB04C,WAAa,SAAU/4C,GACxC,IAAIsN,EAAK/N,EAASS,GAAKA,EAAIA,EAAEsN,GAC7B,MAAO,CAAC,OAAQ,aAAa8B,QAAQnN,KAAKwI,OAAOo9B,WAAWv6B,KAAQ,CACxE,EACAjN,EAAqB+/C,aAAe,SAAUpgD,GAC1C,IAAIsN,EAAK/N,EAASS,GAAKA,EAAIA,EAAEsN,GAC7B,MAAO,CAAC,SAAU,eAAe8B,QAAQnN,KAAKwI,OAAOo9B,WAAWv6B,KAAQ,CAC5E,EACAjN,EAAqBshB,WAAa,SAAU3hB,GACxC,IAAIsN,EAAK/N,EAASS,GAAKA,EAAIA,EAAEsN,GAC7B,MAAO,CAAC,OAAQ,cAAe,aAAa8B,QAAQnN,KAAKwI,OAAOo9B,WAAWv6B,KAAQ,CACvF,EACAjN,EAAqBwhB,UAAY,SAAU7hB,GACvC,IAAIsN,EAAK/N,EAASS,GAAKA,EAAIA,EAAEsN,GAC7B,MAAsC,QAA/BrL,KAAKwI,OAAOo9B,WAAWv6B,EAClC,EACAjN,EAAqBylB,cAAgB,SAAU9lB,GAC3C,IAAIsN,EAAK/N,EAASS,GAAKA,EAAIA,EAAEsN,GAC7B,MAAsC,YAA/BrL,KAAKwI,OAAOo9B,WAAWv6B,EAClC,EACAjN,EAAqBghC,UAAY,SAAUrhC,GACvC,IAAIsN,EAAK/N,EAASS,GAAKA,EAAIA,EAAEsN,GAC7B,MAAsC,QAA/BrL,KAAKwI,OAAOo9B,WAAWv6B,EAClC,EACAjN,EAAqBs+B,YAAc,SAAU3+B,GACzC,IAAIsN,EAAK/N,EAASS,GAAKA,EAAIA,EAAEsN,GAC7B,MAAsC,UAA/BrL,KAAKwI,OAAOo9B,WAAWv6B,EAClC,EACAjN,EAAqB6gC,YAAc,SAAUlhC,GACzC,IAAIsN,EAAK/N,EAASS,GAAKA,EAAIA,EAAEsN,GAC7B,MAAsC,UAA/BrL,KAAKwI,OAAOo9B,WAAWv6B,EAClC,EACAjN,EAAqBq/B,UAAY,SAAU1/B,GACvC,OAAOiC,KAAKo/B,UAAUrhC,IAAMiC,KAAKi/B,YAAYlhC,IAAMiC,KAAK08B,YAAY3+B,EACxE,EACAK,EAAqBigD,SAAW,SAAUtgD,GACtC,OAAOiC,KAAK8f,WAAW/hB,GAAK,CAACA,GAAK,EACtC,EACAK,EAAqBuiC,QAAU,SAAU5iC,GACrC,OAAOiC,KAAKy9B,UAAU1/B,EAAEmI,MAAQ,CAACnI,GAAK,EAC1C,EAMAK,EAAqB89C,QAAU,SAAUn+C,GACrC,OAAOiC,KAAK4f,UAAU7hB,GAAKA,EAAE8S,OAAS,EAC1C,EACAzS,EAAqB8hD,kBAAoB,SAAUniD,GAC/C,OAAOiC,KAAK8f,WAAW/hB,IAAMiC,KAAK6jB,cAAc9lB,GAAKA,EAAE8S,OAAS,EACpE,EACAzS,EAAqBmkD,cAAgB,SAAUxkD,GAC3C,OAAOiC,KAAK4f,UAAU7hB,IAAMiC,KAAK8f,WAAW/hB,GAAKA,EAAE8S,OAAS,EAChE,EACAzS,EAAqB8/C,oBAAsB,SAAU9iC,GACjD,MAAO,CAAC,SAAU,gBAAiB,QAAS,aAAc,eAAgB,SAAU,WAAY,gBAAiB,kBAAmB,YAAYjO,QAAQiO,IAAS,CACrK,EAEAhd,EAAqBglD,SAAW,WAC5B,IAAIsB,EAAK/xC,OAAOsxB,UAAU0gB,UAC1B,OAAOD,EAAGv3C,QAAQ,WAAa,GAAKu3C,EAAGv3C,QAAQ,UAAY,CAC/D,EACA/O,EAAqBilD,SAAW,WAE5B,OADS1wC,OAAOsxB,UAAU0gB,UAChBx3C,QAAQ,WAAa,CACnC,EAEA/O,EAAqBqZ,SAAW,WAC5B,IAGImtC,EAHAr8C,EAAKvI,KACLC,EAAKsI,EAAGtI,GACRuI,EAASD,EAAGC,OAGhBD,EAAG0Q,KAAOhZ,EAAG+2C,SAAS/9B,OAAOC,GAAG,aAAa,WACzC0rC,EAAa3kD,EAAGm3C,MAAMyN,YACtBt8C,EAAG0Q,KAAKu6B,UAAYvzC,EAAGm3C,MAAMyN,YAAYvK,OAAS/xC,EAAGhJ,EAAE8gB,YAAc,KACrE7X,EAAO68B,iBAAiBvoC,KAAKyL,EAAGmK,IAAKzS,EAAGm3C,MAAMyN,YAClD,IAAG3rC,GAAG,QAAQ,WACV3Q,EAAGu8C,cAAchoD,KAAKyL,EAC1B,IAAG2Q,GAAG,WAAW,WACb,IAAIk+B,EAAQn3C,EAAGm3C,MAAMyN,YAEjBzN,GAASwN,EAAWG,UAAY3N,EAAM2N,SAAWH,EAAWI,UAAY5N,EAAM4N,UAGlFz8C,EAAGqZ,kBACHrZ,EAAGsZ,aACHrZ,EAAO88B,eAAexoC,KAAKyL,EAAGmK,IAAKnK,EAAGhJ,EAAE8gB,aAC5C,IACA9X,EAAG0Q,KAAK/Y,MAAQ,SAAUA,GACtB,OAAOsI,EAAOO,aAAe/I,KAAKR,EAAEU,GAASF,KAAKT,EAAEW,EACxD,EACAqI,EAAG0Q,KAAKgsC,eAAiB,WACrB,IAAItsC,EAASnQ,EAAO48B,YAAc58B,EAAO48B,YAAc,CAAC,EAAG,IAC3D,MAAO,CAACzsB,EAAO,GAAIjb,KAAK+G,IAAI8D,EAAGwsB,kBAAoBpc,EAAO,GAAIA,EAAO,IACzE,EACApQ,EAAG0Q,KAAK05B,kBAAoB,WACxB,IAAIhV,EAAQ7/B,EAAWyK,EAAGhJ,EAAE8gB,aAAeviB,EAAWyK,EAAGuqC,iBACrDn6B,EAAS3Y,KAAKilD,iBAElB,OADAjlD,KAAKsB,YAAY,CAACqX,EAAO,GAAKglB,EAAOhlB,EAAO,GAAKglB,IAC1C39B,IACX,CACJ,EACA5B,EAAqB00C,cAAgB,WACjC,IAAIvqC,EAAKvI,KACLwI,EAASD,EAAGC,OACZvI,EAAKsI,EAAGtI,GAGZ,MAAO,CAFGA,EAAGR,IAAI,CAAC8I,EAAGwQ,WAAW,GAAIvQ,EAAOyyB,aACjCh7B,EAAGwE,IAAI,CAAC8D,EAAGwQ,WAAW,GAAIvQ,EAAOwyB,aAE/C,EACA58B,EAAqByjB,WAAa,WAC9B,IAAItZ,EAAKvI,KACLklD,EAAI38C,EAAGC,OAAOwQ,aAAezQ,EAAG0Q,KAAO,WAAa,EACxD1Q,EAAGE,KAAK5F,OAAO,IAAMnM,EAAMsB,UAAU8E,KAAKooD,GAAGhsC,GAAG,gBAAiB,MACjE3Q,EAAGE,KAAKxC,UAAU,IAAMvP,EAAMkB,WAAWkF,KAAKooD,GAAGhsC,GAAG,gBAAiB,KACzE,EACA9a,EAAqB0mD,cAAgB,WACjC,IAAIv8C,EAAKvI,KACLC,EAAKsI,EAAGtI,GACRuI,EAASD,EAAGC,OACZyQ,EAAO1Q,EAAG0Q,KACV1Z,EAAIgJ,EAAGhJ,EACX,GAAKiJ,EAAOwQ,cAG2C,IAAnDzQ,EAAGgH,oBAAoBhH,EAAGrC,KAAKqE,SAAStM,OAA5C,CAGA,GAAkC,cAA9BgC,EAAGm3C,MAAMyN,YAAYzpC,MAAwBnC,EAAKu6B,UAGlD,OAFAj0C,EAAEgC,OAAO0X,EAAKu6B,gBACdv6B,EAAK/Y,MAAMX,GAAGozC,oBAGdpqC,EAAGqB,iBAAmBrK,EAAE8gB,YAAY,KAAO9X,EAAGwQ,WAAW,IACzDxZ,EAAEgC,OAAO,CAACgH,EAAGwQ,WAAW,GAAK,MAAOxZ,EAAE8gB,YAAY,KAEtD9X,EAAGqJ,OAAO,CACNvB,gBAAgB,EAChB8N,MAAO3V,EAAO4X,aACdhC,cAAc,EACdI,eAAe,EACfC,eAAe,IAEe,cAA9Bxe,EAAGm3C,MAAMyN,YAAYzpC,OACrB7S,EAAGkM,aAAc,GAErBjM,EAAOoyB,YAAY99B,KAAKyL,EAAGmK,IAAKnT,EAAE8gB,YAnBlC,CAoBJ,EAEOrO,CAEV,CAroSmFmzC,E,uBCFpF,oBACE,IAAIllD,EAAK,CACPgS,QAAS,UAEPmzC,EAAgB,GAAG5gD,MAAO6gD,EAAW,SAASC,GAChD,OAAOF,EAActoD,KAAKwoD,EAC5B,EACIC,EAAcvlD,KAAK4X,SACvB,SAAS4tC,EAAmB79C,GAC1B,OAAOA,IAASA,EAAK89C,eAAiB99C,EAAKiQ,UAAYjQ,GAAM+9C,eAC/D,CACA,SAASC,EAAUh+C,GACjB,OAAOA,IAASA,EAAK89C,eAAiB99C,EAAK89C,cAAcG,aAAej+C,EAAKiQ,UAAYjQ,GAAQA,EAAKi+C,YACxG,CACA,GAAIL,EACF,IACEF,EAASE,EAAYG,gBAAgBG,YAAY,GAAGC,QACtD,CAAE,MAAOrlC,GACP4kC,EAAW,SAASC,GAElB,IADA,IAAI3jD,EAAI2jD,EAAKrnD,OAAQ8nD,EAAQ,IAAI1oD,MAAMsE,GAChCA,KAAKokD,EAAMpkD,GAAK2jD,EAAK3jD,GAC5B,OAAOokD,CACT,CACF,CAKF,GAHK30C,KAAK40C,MAAK50C,KAAK40C,IAAM,WACxB,OAAQ,IAAI50C,IACd,GACIm0C,EACF,IACEA,EAAY1tC,cAAc,OAAOvR,MAAM2/C,YAAY,UAAW,EAAG,GACnE,CAAE,MAAOlgC,GACP,IAAImgC,EAAuBlmD,KAAKmmD,QAAQvqD,UAAWwqD,EAA0BF,EAAqBh4B,aAAcm4B,EAA4BH,EAAqBI,eAAgBC,EAAqBvmD,KAAKwmD,oBAAoB5qD,UAAW6qD,EAAuBF,EAAmBN,YACpRC,EAAqBh4B,aAAe,SAASwf,EAAMpxC,GACjD8pD,EAAwBtpD,KAAKkD,KAAM0tC,EAAMpxC,EAAQ,GACnD,EACA4pD,EAAqBI,eAAiB,SAASI,EAAOC,EAAOrqD,GAC3D+pD,EAA0BvpD,KAAKkD,KAAM0mD,EAAOC,EAAOrqD,EAAQ,GAC7D,EACAiqD,EAAmBN,YAAc,SAASvY,EAAMpxC,EAAOsqD,GACrDH,EAAqB3pD,KAAKkD,KAAM0tC,EAAMpxC,EAAQ,GAAIsqD,EACpD,CACF,CAGF,SAASC,EAAav1C,EAAGC,GACvB,OAAOD,EAAIC,GAAK,EAAID,EAAIC,EAAI,EAAID,GAAKC,EAAI,EAAIwL,GAC/C,CA6DA,SAAS+pC,EAAUvnD,GACjB,OAAa,OAANA,EAAawd,KAAOxd,CAC7B,CACA,SAASwnD,EAAWxnD,GAClB,OAAQkoB,MAAMloB,EAChB,CAyDA,SAASynD,EAAYC,GACnB,MAAO,CACL3/C,KAAM,SAASgK,EAAG/R,EAAG2nD,EAAIC,GAGvB,IAFIjgD,UAAUjJ,OAAS,IAAGipD,EAAK,GAC3BhgD,UAAUjJ,OAAS,IAAGkpD,EAAK71C,EAAErT,QAC1BipD,EAAKC,GAAI,CACd,IAAIC,EAAMF,EAAKC,IAAO,EAClBF,EAAQ31C,EAAE81C,GAAM7nD,GAAK,EAAG2nD,EAAKE,EAAM,EAAQD,EAAKC,CACtD,CACA,OAAOF,CACT,EACA9/C,MAAO,SAASkK,EAAG/R,EAAG2nD,EAAIC,GAGxB,IAFIjgD,UAAUjJ,OAAS,IAAGipD,EAAK,GAC3BhgD,UAAUjJ,OAAS,IAAGkpD,EAAK71C,EAAErT,QAC1BipD,EAAKC,GAAI,CACd,IAAIC,EAAMF,EAAKC,IAAO,EAClBF,EAAQ31C,EAAE81C,GAAM7nD,GAAK,EAAG4nD,EAAKC,EAAUF,EAAKE,EAAM,CACxD,CACA,OAAOF,CACT,EAEJ,CAnJAjnD,EAAGonD,UAAYR,EAIf5mD,EAAGqnD,WAAa,SAASh2C,EAAGC,GAC1B,OAAOA,EAAID,GAAK,EAAIC,EAAID,EAAI,EAAIC,GAAKD,EAAI,EAAIyL,GAC/C,EACA9c,EAAGR,IAAM,SAASsmD,EAAO/+B,GACvB,IAA8B1V,EAAGC,EAA7B5P,GAAK,EAAG9D,EAAIkoD,EAAM9nD,OACtB,GAAyB,IAArBiJ,UAAUjJ,OAAc,CAC1B,OAAS0D,EAAI9D,MAAyB,OAAjB0T,EAAIw0C,EAAMpkD,KAAe4P,GAAKA,EAAG,CACpDD,EAAIC,EACJ,KACF,CACA,OAAS5P,EAAI9D,GAAyB,OAAjB0T,EAAIw0C,EAAMpkD,KAAe2P,EAAIC,IAAGD,EAAIC,EAC3D,KAAO,CACL,OAAS5P,EAAI9D,MAA2C,OAAnC0T,EAAIyV,EAAElqB,KAAKipD,EAAOA,EAAMpkD,GAAIA,KAAe4P,GAAKA,EAAG,CACtED,EAAIC,EACJ,KACF,CACA,OAAS5P,EAAI9D,GAA2C,OAAnC0T,EAAIyV,EAAElqB,KAAKipD,EAAOA,EAAMpkD,GAAIA,KAAe2P,EAAIC,IAAGD,EAAIC,EAC7E,CACA,OAAOD,CACT,EACArR,EAAGwE,IAAM,SAASshD,EAAO/+B,GACvB,IAA8B1V,EAAGC,EAA7B5P,GAAK,EAAG9D,EAAIkoD,EAAM9nD,OACtB,GAAyB,IAArBiJ,UAAUjJ,OAAc,CAC1B,OAAS0D,EAAI9D,MAAyB,OAAjB0T,EAAIw0C,EAAMpkD,KAAe4P,GAAKA,EAAG,CACpDD,EAAIC,EACJ,KACF,CACA,OAAS5P,EAAI9D,GAAyB,OAAjB0T,EAAIw0C,EAAMpkD,KAAe4P,EAAID,IAAGA,EAAIC,EAC3D,KAAO,CACL,OAAS5P,EAAI9D,MAA2C,OAAnC0T,EAAIyV,EAAElqB,KAAKipD,EAAOA,EAAMpkD,GAAIA,KAAe4P,GAAKA,EAAG,CACtED,EAAIC,EACJ,KACF,CACA,OAAS5P,EAAI9D,GAA2C,OAAnC0T,EAAIyV,EAAElqB,KAAKipD,EAAOA,EAAMpkD,GAAIA,KAAe4P,EAAID,IAAGA,EAAIC,EAC7E,CACA,OAAOD,CACT,EACArR,EAAG0Y,OAAS,SAASotC,EAAO/+B,GAC1B,IAA8B1V,EAAGC,EAAGunB,EAAhCn3B,GAAK,EAAG9D,EAAIkoD,EAAM9nD,OACtB,GAAyB,IAArBiJ,UAAUjJ,OAAc,CAC1B,OAAS0D,EAAI9D,MAAyB,OAAjB0T,EAAIw0C,EAAMpkD,KAAe4P,GAAKA,EAAG,CACpDD,EAAIwnB,EAAIvnB,EACR,KACF,CACA,OAAS5P,EAAI9D,GAAyB,OAAjB0T,EAAIw0C,EAAMpkD,MACzB2P,EAAIC,IAAGD,EAAIC,GACXunB,EAAIvnB,IAAGunB,EAAIvnB,GAEnB,KAAO,CACL,OAAS5P,EAAI9D,MAA2C,OAAnC0T,EAAIyV,EAAElqB,KAAKipD,EAAOA,EAAMpkD,GAAIA,KAAe4P,GAAKA,EAAG,CACtED,EAAIwnB,EAAIvnB,EACR,KACF,CACA,OAAS5P,EAAI9D,GAA2C,OAAnC0T,EAAIyV,EAAElqB,KAAKipD,EAAOA,EAAMpkD,GAAIA,MAC3C2P,EAAIC,IAAGD,EAAIC,GACXunB,EAAIvnB,IAAGunB,EAAIvnB,GAEnB,CACA,MAAO,CAAED,EAAGwnB,EACd,EAOA74B,EAAGsnD,IAAM,SAASxB,EAAO/+B,GACvB,IAA6B1V,EAAzB1N,EAAI,EAAG/F,EAAIkoD,EAAM9nD,OAAW0D,GAAK,EACrC,GAAyB,IAArBuF,UAAUjJ,OACZ,OAAS0D,EAAI9D,GAAOkpD,EAAWz1C,GAAKy0C,EAAMpkD,MAAKiC,GAAK0N,QAEpD,OAAS3P,EAAI9D,GAAOkpD,EAAWz1C,GAAK0V,EAAElqB,KAAKipD,EAAOA,EAAMpkD,GAAIA,MAAKiC,GAAK0N,GAExE,OAAO1N,CACT,EACA3D,EAAGunD,KAAO,SAASzB,EAAO/+B,GACxB,IAA6B1V,EAAzB1N,EAAI,EAAG/F,EAAIkoD,EAAM9nD,OAAW0D,GAAK,EAAGyzB,EAAIv3B,EAC5C,GAAyB,IAArBqJ,UAAUjJ,OACZ,OAAS0D,EAAI9D,GAAOkpD,EAAWz1C,EAAIw1C,EAAUf,EAAMpkD,KAAMiC,GAAK0N,IAAU8jB,OAExE,OAASzzB,EAAI9D,GAAOkpD,EAAWz1C,EAAIw1C,EAAU9/B,EAAElqB,KAAKipD,EAAOA,EAAMpkD,GAAIA,KAAMiC,GAAK0N,IAAU8jB,EAE5F,GAAIA,EAAG,OAAOxxB,EAAIwxB,CACpB,EACAn1B,EAAGwnD,SAAW,SAAS52C,EAAQJ,GAC7B,IAAIi3C,GAAK72C,EAAO5S,OAAS,GAAKwS,EAAI,EAAG9N,EAAIjF,KAAKiqD,MAAMD,GAAIzqD,GAAK4T,EAAOlO,EAAI,GAAI8d,EAAIinC,EAAI/kD,EACpF,OAAO8d,EAAIxjB,EAAIwjB,GAAK5P,EAAOlO,GAAK1F,GAAKA,CACvC,EACAgD,EAAG2nD,OAAS,SAAS7B,EAAO/+B,GAC1B,IAAoC1V,EAAhCu2C,EAAU,GAAIhqD,EAAIkoD,EAAM9nD,OAAW0D,GAAK,EAC5C,GAAyB,IAArBuF,UAAUjJ,OACZ,OAAS0D,EAAI9D,GAAOkpD,EAAWz1C,EAAIw1C,EAAUf,EAAMpkD,MAAMkmD,EAAQ/lD,KAAKwP,QAEtE,OAAS3P,EAAI9D,GAAOkpD,EAAWz1C,EAAIw1C,EAAU9/B,EAAElqB,KAAKipD,EAAOA,EAAMpkD,GAAIA,MAAMkmD,EAAQ/lD,KAAKwP,GAE1F,GAAIu2C,EAAQ5pD,OAAQ,OAAOgC,EAAGwnD,SAASI,EAAQx2C,KAAKw1C,GAAe,GACrE,EACA5mD,EAAG6nD,SAAW,SAAS/B,EAAO/+B,GAC5B,IAA6B1V,EAAGvT,EAA5BF,EAAIkoD,EAAM9nD,OAAQ8pD,EAAI,EAASnkD,EAAI,EAAGjC,GAAK,EAAGyzB,EAAI,EACtD,GAAyB,IAArBluB,UAAUjJ,OACZ,OAAS0D,EAAI9D,GACPkpD,EAAWz1C,EAAIw1C,EAAUf,EAAMpkD,OAGjCiC,IAFA7F,EAAIuT,EAAIy2C,IAEEz2C,GADVy2C,GAAKhqD,IAAMq3B,UAKf,OAASzzB,EAAI9D,GACPkpD,EAAWz1C,EAAIw1C,EAAU9/B,EAAElqB,KAAKipD,EAAOA,EAAMpkD,GAAIA,OAGnDiC,IAFA7F,EAAIuT,EAAIy2C,IAEEz2C,GADVy2C,GAAKhqD,IAAMq3B,KAKjB,GAAIA,EAAI,EAAG,OAAOxxB,GAAKwxB,EAAI,EAC7B,EACAn1B,EAAG+nD,UAAY,WACb,IAAI/qD,EAAIgD,EAAG6nD,SAASjmD,MAAM7B,KAAMkH,WAChC,OAAOjK,EAAIS,KAAKogC,KAAK7gC,GAAKA,CAC5B,EAuBA,IAAIgrD,EAAYjB,EAAYH,GAuC5B,SAASqB,EAAmBnqD,GAC1B,OAAOA,EAAEE,MACX,CAxCAgC,EAAGkoD,WAAaF,EAAU3gD,KAC1BrH,EAAGmoD,OAASnoD,EAAGooD,YAAcJ,EAAU7gD,MACvCnH,EAAGqoD,SAAW,SAASthC,GACrB,OAAOggC,EAAyB,IAAbhgC,EAAE/oB,OAAe,SAASF,EAAGwB,GAC9C,OAAOsnD,EAAa7/B,EAAEjpB,GAAIwB,EAC5B,EAAIynB,EACN,EACA/mB,EAAGsoD,QAAU,SAASxC,EAAOyC,EAAIC,IAC1BV,EAAI7gD,UAAUjJ,QAAU,IAC3BwqD,EAAK1C,EAAM9nD,OACP8pD,EAAI,IAAGS,EAAK,IAGlB,IADA,IAAiB5lC,EAAGjhB,EAAhBomD,EAAIU,EAAKD,EACNT,GACLpmD,EAAIjE,KAAKy+C,SAAW4L,IAAM,EAC1BnlC,EAAImjC,EAAMgC,EAAIS,GAAKzC,EAAMgC,EAAIS,GAAMzC,EAAMpkD,EAAI6mD,GAAKzC,EAAMpkD,EAAI6mD,GAAM5lC,EAEpE,OAAOmjC,CACT,EACA9lD,EAAGyoD,QAAU,SAAS3C,EAAO4C,GAE3B,IADA,IAAIhnD,EAAIgnD,EAAQ1qD,OAAQ2qD,EAAW,IAAIvrD,MAAMsE,GACtCA,KAAKinD,EAASjnD,GAAKokD,EAAM4C,EAAQhnD,IACxC,OAAOinD,CACT,EACA3oD,EAAG4oD,MAAQ,SAAS9C,GAElB,IADA,IAAIpkD,EAAI,EAAG9D,EAAIkoD,EAAM9nD,OAAS,EAAO6qD,EAAK/C,EAAM,GAAI8C,EAAQ,IAAIxrD,MAAMQ,EAAI,EAAI,EAAIA,GAC3E8D,EAAI9D,GAAGgrD,EAAMlnD,GAAK,CAAOmnD,EAAIA,EAAK/C,IAAQpkD,IACjD,OAAOknD,CACT,EACA5oD,EAAG8oD,UAAY,SAASC,GACtB,KAAMnrD,EAAImrD,EAAO/qD,QAAS,MAAO,GACjC,IAAK,IAAI0D,GAAK,EAAGomD,EAAI9nD,EAAGR,IAAIupD,EAAQd,GAAqBa,EAAY,IAAI1rD,MAAM0qD,KAAMpmD,EAAIomD,GACvF,IAAK,IAAYlqD,EAARu3B,GAAK,EAAM6zB,EAAMF,EAAUpnD,GAAK,IAAItE,MAAMQ,KAAMu3B,EAAIv3B,GAC3DorD,EAAI7zB,GAAK4zB,EAAO5zB,GAAGzzB,GAGvB,OAAOonD,CACT,EAIA9oD,EAAGipD,IAAM,WACP,OAAOjpD,EAAG8oD,UAAU7hD,UACtB,EACAjH,EAAG/B,KAAO,SAASyF,GACjB,IAAIzF,EAAO,GACX,IAAK,IAAIK,KAAOoF,EAAKzF,EAAK4D,KAAKvD,GAC/B,OAAOL,CACT,EACA+B,EAAG4Q,OAAS,SAASlN,GACnB,IAAIkN,EAAS,GACb,IAAK,IAAItS,KAAOoF,EAAKkN,EAAO/O,KAAK6B,EAAIpF,IACrC,OAAOsS,CACT,EACA5Q,EAAGkpD,QAAU,SAASxlD,GACpB,IAAIwlD,EAAU,GACd,IAAK,IAAI5qD,KAAOoF,EAAKwlD,EAAQrnD,KAAK,CAChCvD,IAAKA,EACLjC,MAAOqH,EAAIpF,KAEb,OAAO4qD,CACT,EACAlpD,EAAG+4B,MAAQ,SAASowB,GAElB,IADA,IAAuBrB,EAAkBsB,EAAQtD,EAA7CloD,EAAIurD,EAAOnrD,OAAW0D,GAAK,EAAGyzB,EAAI,IAC7BzzB,EAAI9D,GAAGu3B,GAAKg0B,EAAOznD,GAAG1D,OAE/B,IADAorD,EAAS,IAAIhsD,MAAM+3B,KACVv3B,GAAK,GAGZ,IADAkqD,GADAhC,EAAQqD,EAAOvrD,IACLI,SACD8pD,GAAK,GACZsB,IAASj0B,GAAK2wB,EAAMgC,GAGxB,OAAOsB,CACT,EACA,IAAInrB,EAAMxgC,KAAKwgC,IAoBf,SAASorB,EAASC,EAAMC,GACtB,IAAK,IAAIjrD,KAAOirD,EACdptD,OAAOmuB,eAAeg/B,EAAK3tD,UAAW2C,EAAK,CACzCjC,MAAOktD,EAAWjrD,GAClBhC,YAAY,GAGlB,CAeA,SAASktD,IACPzpD,KAAK0pD,EAAIttD,OAAOC,OAAO,KACzB,CA3CA4D,EAAGG,MAAQ,SAASoB,EAAOC,EAAMm2C,GAQ/B,GAPI1wC,UAAUjJ,OAAS,IACrB25C,EAAO,EACH1wC,UAAUjJ,OAAS,IACrBwD,EAAOD,EACPA,EAAQ,KAGPC,EAAOD,GAASo2C,GAAS/vC,IAAU,MAAM,IAAI8L,MAAM,kBACxD,IAA8DyhB,EAA1Dh1B,EAAQ,GAAI6rC,EAKlB,SAA+B1sC,GAC7B,IAAI0sC,EAAI,EACR,KAAO1sC,EAAI0sC,EAAI,GAAGA,GAAK,GACvB,OAAOA,CACT,CATsB0d,CAAsBzrB,EAAI0Z,IAAQj2C,GAAK,EAE3D,GADAH,GAASyqC,EAAGxqC,GAAQwqC,GAAG2L,GAAQ3L,GACpB,EAAG,MAAQ7W,EAAI5zB,EAAQo2C,IAASj2C,GAAKF,GAAMrB,EAAM0B,KAAKszB,EAAI6W,QAAS,MAAQ7W,EAAI5zB,EAAQo2C,IAASj2C,GAAKF,GAAMrB,EAAM0B,KAAKszB,EAAI6W,GACrI,OAAO7rC,CACT,EAcAH,EAAG0D,IAAM,SAASooC,EAAQ/kB,GACxB,IAAIrjB,EAAM,IAAI8lD,EACd,GAAI1d,aAAkB0d,EACpB1d,EAAOntC,SAAQ,SAASL,EAAKjC,GAC3BqH,EAAI8mB,IAAIlsB,EAAKjC,EACf,SACK,GAAIe,MAAMD,QAAQ2uC,GAAS,CAChC,IAA+B5uC,EAA3BwE,GAAK,EAAG9D,EAAIkuC,EAAO9tC,OACvB,GAAyB,IAArBiJ,UAAUjJ,OAAc,OAAS0D,EAAI9D,GAAG8F,EAAI8mB,IAAI9oB,EAAGoqC,EAAOpqC,SAAU,OAASA,EAAI9D,GAAG8F,EAAI8mB,IAAIzD,EAAElqB,KAAKivC,EAAQ5uC,EAAI4uC,EAAOpqC,GAAIA,GAAIxE,EACpI,MACE,IAAK,IAAIoB,KAAOwtC,EAAQpoC,EAAI8mB,IAAIlsB,EAAKwtC,EAAOxtC,IAE9C,OAAOoF,CACT,EAkCA,SAASimD,EAAcrrD,GACrB,MA/BiB,cA+BTA,GAAO,KA/B6B,OA+BLA,EAAI,GA/BC,KA+BkCA,EAAMA,CACtF,CACA,SAASsrD,EAAgBtrD,GACvB,MAlC4C,QAkCpCA,GAAO,IAAI,GAAqBA,EAAIiG,MAAM,GAAKjG,CACzD,CACA,SAASurD,EAAWvrD,GAClB,OAAOqrD,EAAcrrD,KAAQyB,KAAK0pD,CACpC,CACA,SAASK,EAAcxrD,GACrB,OAAQA,EAAMqrD,EAAcrrD,MAASyB,KAAK0pD,UAAY1pD,KAAK0pD,EAAEnrD,EAC/D,CACA,SAASyrD,IACP,IAAI9rD,EAAO,GACX,IAAK,IAAIK,KAAOyB,KAAK0pD,EAAGxrD,EAAK4D,KAAK+nD,EAAgBtrD,IAClD,OAAOL,CACT,CACA,SAAS+rD,IACP,IAAIvnD,EAAO,EACX,IAAK,IAAInE,KAAOyB,KAAK0pD,IAAKhnD,EAC1B,OAAOA,CACT,CACA,SAASwnD,IACP,IAAK,IAAI3rD,KAAOyB,KAAK0pD,EAAG,OAAO,EAC/B,OAAO,CACT,CAqEA,SAASS,IACPnqD,KAAK0pD,EAAIttD,OAAOC,OAAO,KACzB,CAgBA,SAAS+tD,EAAYrsD,GACnB,OAAOA,CACT,CAMA,SAASssD,EAAU1zD,EAAQk8B,EAAQy3B,GACjC,OAAO,WACL,IAAIhuD,EAAQguD,EAAOzoD,MAAMgxB,EAAQ3rB,WACjC,OAAO5K,IAAUu2B,EAASl8B,EAAS2F,CACrC,CACF,CACA,SAASiuD,EAAgBxe,EAAQ2B,GAC/B,GAAIA,KAAQ3B,EAAQ,OAAO2B,EAC3BA,EAAOA,EAAKppC,OAAO,GAAGkmD,cAAgB9c,EAAKlpC,MAAM,GACjD,IAAK,IAAI7C,EAAI,EAAG9D,EAAI4sD,EAAkBxsD,OAAQ0D,EAAI9D,IAAK8D,EAAG,CACxD,IAAI+oD,EAAaD,EAAkB9oD,GAAK+rC,EACxC,GAAIgd,KAAc3e,EAAQ,OAAO2e,CACnC,CACF,CAlKApB,EAASG,EAAQ,CACfhF,IAAKqF,EACLt/B,IAAK,SAASjsB,GACZ,OAAOyB,KAAK0pD,EAAEE,EAAcrrD,GAC9B,EACAksB,IAAK,SAASlsB,EAAKjC,GACjB,OAAO0D,KAAK0pD,EAAEE,EAAcrrD,IAAQjC,CACtC,EACAmK,OAAQsjD,EACR7rD,KAAM8rD,EACNn5C,OAAQ,WACN,IAAIA,EAAS,GACb,IAAK,IAAItS,KAAOyB,KAAK0pD,EAAG74C,EAAO/O,KAAK9B,KAAK0pD,EAAEnrD,IAC3C,OAAOsS,CACT,EACAs4C,QAAS,WACP,IAAIA,EAAU,GACd,IAAK,IAAI5qD,KAAOyB,KAAK0pD,EAAGP,EAAQrnD,KAAK,CACnCvD,IAAKsrD,EAAgBtrD,GACrBjC,MAAO0D,KAAK0pD,EAAEnrD,KAEhB,OAAO4qD,CACT,EACAzmD,KAAMunD,EACN1wD,MAAO2wD,EACPtrD,QAAS,SAASooB,GAChB,IAAK,IAAIzoB,KAAOyB,KAAK0pD,EAAG1iC,EAAElqB,KAAKkD,KAAM6pD,EAAgBtrD,GAAMyB,KAAK0pD,EAAEnrD,GACpE,IA4BF0B,EAAG0qD,KAAO,WACR,IAAyCC,EAAYC,EAAjDF,EAAO,CAAC,EAAGzsD,EAAO,GAAI4sD,EAAW,GACrC,SAASnnD,EAAIonD,EAAShF,EAAOiF,GAC3B,GAAIA,GAAS9sD,EAAKD,OAAQ,OAAO4sD,EAASA,EAAO/tD,KAAK6tD,EAAM5E,GAAS6E,EAAa7E,EAAM10C,KAAKu5C,GAAc7E,EAE3G,IADA,IAAmDkF,EAAUlf,EAAQmf,EAAoCr6C,EAArGlP,GAAK,EAAG9D,EAAIkoD,EAAM9nD,OAAQM,EAAML,EAAK8sD,KAAoCG,EAAc,IAAI1B,IACtF9nD,EAAI9D,IACPgT,EAASs6C,EAAY3gC,IAAIygC,EAAW1sD,EAAIwtC,EAASga,EAAMpkD,MACzDkP,EAAO/O,KAAKiqC,GAEZof,EAAY1gC,IAAIwgC,EAAU,CAAElf,IAehC,OAZIgf,GACFhf,EAASgf,IACTG,EAAS,SAASD,EAAUp6C,GAC1Bk7B,EAAOthB,IAAIwgC,EAAUtnD,EAAIonD,EAASl6C,EAAQm6C,GAC5C,IAEAjf,EAAS,CAAC,EACVmf,EAAS,SAASD,EAAUp6C,GAC1Bk7B,EAAOkf,GAAYtnD,EAAIonD,EAASl6C,EAAQm6C,EAC1C,GAEFG,EAAYvsD,QAAQssD,GACbnf,CACT,CACA,SAASod,EAAQxlD,EAAKqnD,GACpB,GAAIA,GAAS9sD,EAAKD,OAAQ,OAAO0F,EACjC,IAAIoiD,EAAQ,GAAIqF,EAAUN,EAASE,KAOnC,OANArnD,EAAI/E,SAAQ,SAASL,EAAK8sD,GACxBtF,EAAMjkD,KAAK,CACTvD,IAAKA,EACLsS,OAAQs4C,EAAQkC,EAAQL,IAE5B,IACOI,EAAUrF,EAAM10C,MAAK,SAASC,EAAGC,GACtC,OAAO65C,EAAQ95C,EAAE/S,IAAKgT,EAAEhT,IAC1B,IAAKwnD,CACP,CAuBA,OAtBA4E,EAAKhnD,IAAM,SAASoiD,EAAOgF,GACzB,OAAOpnD,EAAIonD,EAAShF,EAAO,EAC7B,EACA4E,EAAKxB,QAAU,SAASpD,GACtB,OAAOoD,EAAQxlD,EAAI1D,EAAG0D,IAAKoiD,EAAO,GAAI,EACxC,EACA4E,EAAKpsD,IAAM,SAASR,GAElB,OADAG,EAAK4D,KAAK/D,GACH4sD,CACT,EACAA,EAAKG,SAAW,SAAS7b,GAEvB,OADA6b,EAAS5sD,EAAKD,OAAS,GAAKgxC,EACrB0b,CACT,EACAA,EAAKC,WAAa,SAAS3b,GAEzB,OADA2b,EAAa3b,EACN0b,CACT,EACAA,EAAKE,OAAS,SAAS7jC,GAErB,OADA6jC,EAAS7jC,EACF2jC,CACT,EACOA,CACT,EACA1qD,EAAGwqB,IAAM,SAASs7B,GAChB,IAAIt7B,EAAM,IAAI0/B,EACd,GAAIpE,EAAO,IAAK,IAAIpkD,EAAI,EAAG9D,EAAIkoD,EAAM9nD,OAAQ0D,EAAI9D,IAAK8D,EAAG8oB,EAAI5H,IAAIkjC,EAAMpkD,IACvE,OAAO8oB,CACT,EAIA6+B,EAASa,EAAQ,CACf1F,IAAKqF,EACLjnC,IAAK,SAAStkB,GAEZ,OADAyB,KAAK0pD,EAAEE,EAAcrrD,GAAO,MAAO,EAC5BA,CACT,EACAkI,OAAQsjD,EACRl5C,OAAQm5C,EACRtnD,KAAMunD,EACN1wD,MAAO2wD,EACPtrD,QAAS,SAASooB,GAChB,IAAK,IAAIzoB,KAAOyB,KAAK0pD,EAAG1iC,EAAElqB,KAAKkD,KAAM6pD,EAAgBtrD,GACvD,IAEF0B,EAAG+2C,SAAW,CAAC,EAIf/2C,EAAGqrD,OAAS,SAAS30D,EAAQk8B,GAE3B,IADA,IAAiCy3B,EAA7B3oD,EAAI,EAAG9D,EAAIqJ,UAAUjJ,SAChB0D,EAAI9D,GAAGlH,EAAO2zD,EAASpjD,UAAUvF,IAAM0oD,EAAU1zD,EAAQk8B,EAAQA,EAAOy3B,IACjF,OAAO3zD,CACT,EAeA,IAAI8zD,EAAoB,CAAE,SAAU,KAAM,MAAO,MAAO,IAAK,KAC7D,SAASc,IAAW,CAMpB,SAASC,IAAe,CAexB,SAASC,EAAkBC,GACzB,IAAIC,EAAY,GAAIC,EAAiB,IAAInC,EACzC,SAASrS,IAEP,IADA,IAAyCsB,EAArCwM,EAAIyG,EAAWhqD,GAAK,EAAG9D,EAAIqnD,EAAEjnD,SACxB0D,EAAI9D,IAAO66C,EAAIwM,EAAEvjD,GAAGuX,KAAIw/B,EAAE72C,MAAM7B,KAAMkH,WAC/C,OAAOwkD,CACT,CAcA,OAbAtU,EAAMl+B,GAAK,SAASw0B,EAAMme,GACxB,IAAkClqD,EAA9B+2C,EAAIkT,EAAephC,IAAIkjB,GAC3B,OAAIxmC,UAAUjJ,OAAS,EAAUy6C,GAAKA,EAAEx/B,IACpCw/B,IACFA,EAAEx/B,GAAK,KACPyyC,EAAYA,EAAUnnD,MAAM,EAAG7C,EAAIgqD,EAAUx+C,QAAQurC,IAAIl1C,OAAOmoD,EAAUnnD,MAAM7C,EAAI,IACpFiqD,EAAenlD,OAAOinC,IAEpBme,GAAUF,EAAU7pD,KAAK8pD,EAAenhC,IAAIijB,EAAM,CACpDx0B,GAAI2yC,KAECH,EACT,EACOtU,CACT,CAEA,SAAS0U,IACP7rD,EAAGm3C,MAAM2U,gBACX,CACA,SAASC,IAEP,IADA,IAAkBpoD,EAAd6c,EAAIxgB,EAAGm3C,MACJxzC,EAAI6c,EAAEokC,aAAapkC,EAAI7c,EAC9B,OAAO6c,CACT,CACA,SAASwrC,EAAiBt1D,GAExB,IADA,IAAI+0D,EAAW,IAAIF,EAAe7pD,EAAI,EAAG9D,EAAIqJ,UAAUjJ,SAC9C0D,EAAI9D,GAAG6tD,EAASxkD,UAAUvF,IAAM8pD,EAAkBC,GAa3D,OAZAA,EAASQ,GAAK,SAASC,EAAMC,GAC3B,OAAO,SAASC,GACd,IACE,IAAIC,EAAKD,EAAGxH,YAAc5kD,EAAGm3C,MAC7BiV,EAAG11D,OAASA,EACZsJ,EAAGm3C,MAAQiV,EACXX,EAASW,EAAGjxC,MAAMvZ,MAAMsqD,EAAMC,EAChC,CAAE,QACAnsD,EAAGm3C,MAAQkV,CACb,CACF,CACF,EACOZ,CACT,CAnEAzrD,EAAGyrD,SAAW,WAEZ,IADA,IAAIA,EAAW,IAAIF,EAAe7pD,GAAK,EAAG9D,EAAIqJ,UAAUjJ,SAC/C0D,EAAI9D,GAAG6tD,EAASxkD,UAAUvF,IAAM8pD,EAAkBC,GAC3D,OAAOA,CACT,EAEAF,EAAY5vD,UAAUsd,GAAK,SAASkC,EAAMywC,GACxC,IAAIlqD,EAAIyZ,EAAKjO,QAAQ,KAAMugC,EAAO,GAKlC,GAJI/rC,GAAK,IACP+rC,EAAOtyB,EAAK5W,MAAM7C,EAAI,GACtByZ,EAAOA,EAAK5W,MAAM,EAAG7C,IAEnByZ,EAAM,OAAOlU,UAAUjJ,OAAS,EAAI+B,KAAKob,GAAMlC,GAAGw0B,GAAQ1tC,KAAKob,GAAMlC,GAAGw0B,EAAMme,GAClF,GAAyB,IAArB3kD,UAAUjJ,OAAc,CAC1B,GAAgB,MAAZ4tD,EAAkB,IAAKzwC,KAAQpb,KAC7BA,KAAKusD,eAAenxC,IAAOpb,KAAKob,GAAMlC,GAAGw0B,EAAM,MAErD,OAAO1tC,IACT,CACF,EAuBAC,EAAGm3C,MAAQ,KA0BXn3C,EAAGusD,QAAU,SAAS5oD,GACpB,OAAOA,EAAE7E,QAAQ0tD,EAAe,OAClC,EACA,IAAIA,EAAgB,kCAChBC,EAAc,CAAC,EAAE/vD,UAAY,SAASovC,EAAQnwC,GAChDmwC,EAAOpvC,UAAYf,CACrB,EAAI,SAASmwC,EAAQnwC,GACnB,IAAK,IAAI4oD,KAAY5oD,EAAWmwC,EAAOyY,GAAY5oD,EAAU4oD,EAC/D,EACA,SAASmI,EAAa70B,GAEpB,OADA40B,EAAY50B,EAAQ80B,GACb90B,CACT,CACA,IAAI+0B,EAAY,SAASjpD,EAAG/F,GAC1B,OAAOA,EAAEivD,cAAclpD,EACzB,EAAGmpD,EAAe,SAASnpD,EAAG/F,GAC5B,OAAOA,EAAEmvD,iBAAiBppD,EAC5B,EAAGqpD,EAAmB,SAASpvD,EAAG+F,GAChC,IAAIspD,EAAmBrvD,EAAEsvD,SAAWtvD,EAAE0sD,EAAgB1sD,EAAG,oBAIzD,OAHAovD,EAAmB,SAASpvD,EAAG+F,GAC7B,OAAOspD,EAAiBpwD,KAAKe,EAAG+F,EAClC,EACOqpD,EAAiBpvD,EAAG+F,EAC7B,EACsB,mBAAXwpD,SACTP,EAAY,SAASjpD,EAAG/F,GACtB,OAAOuvD,OAAOxpD,EAAG/F,GAAG,IAAM,IAC5B,EACAkvD,EAAeK,OACfH,EAAmBG,OAAOC,iBAE5BptD,EAAGmB,UAAY,WACb,OAAOnB,EAAG4C,OAAO0iD,EAAYG,gBAC/B,EACA,IAAIkH,EAAwB3sD,EAAGmB,UAAUxF,UAAY,GAkBrD,SAAS0xD,EAAsBnW,GAC7B,MAA2B,mBAAbA,EAA0BA,EAAW,WACjD,OAAO0V,EAAU1V,EAAUn3C,KAC7B,CACF,CAcA,SAASutD,EAAyBpW,GAChC,MAA2B,mBAAbA,EAA0BA,EAAW,WACjD,OAAO4V,EAAa5V,EAAUn3C,KAChC,CACF,CAvCA4sD,EAAsB/pD,OAAS,SAASs0C,GACtC,IAAoBqW,EAAUC,EAASC,EAAO/lD,EAA1CgmD,EAAY,GAChBxW,EAAWmW,EAAsBnW,GACjC,IAAK,IAAI/hB,GAAK,EAAG2yB,EAAI/nD,KAAK/B,SAAUm3B,EAAI2yB,GAAK,CAC3C4F,EAAU7rD,KAAK0rD,EAAW,IAC1BA,EAASjoC,YAAcmoC,EAAQ1tD,KAAKo1B,IAAI7P,WACxC,IAAK,IAAI5jB,GAAK,EAAG9D,EAAI6vD,EAAMzvD,SAAU0D,EAAI9D,IACnC8J,EAAO+lD,EAAM/rD,KACf6rD,EAAS1rD,KAAK2rD,EAAUtW,EAASr6C,KAAK6K,EAAMA,EAAKuxB,SAAUv3B,EAAGyzB,IAC1Dq4B,GAAW,aAAc9lD,IAAM8lD,EAAQv0B,SAAWvxB,EAAKuxB,WAE3Ds0B,EAAS1rD,KAAK,KAGpB,CACA,OAAO6qD,EAAagB,EACtB,EAMAf,EAAsB3mD,UAAY,SAASkxC,GACzC,IAAoBqW,EAAU7lD,EAA1BgmD,EAAY,GAChBxW,EAAWoW,EAAyBpW,GACpC,IAAK,IAAI/hB,GAAK,EAAG2yB,EAAI/nD,KAAK/B,SAAUm3B,EAAI2yB,GACtC,IAAK,IAAI2F,EAAQ1tD,KAAKo1B,GAAIzzB,GAAK,EAAG9D,EAAI6vD,EAAMzvD,SAAU0D,EAAI9D,IACpD8J,EAAO+lD,EAAM/rD,MACfgsD,EAAU7rD,KAAK0rD,EAAWnI,EAASlO,EAASr6C,KAAK6K,EAAMA,EAAKuxB,SAAUv3B,EAAGyzB,KACzEo4B,EAASjoC,WAAa5d,GAI5B,OAAOglD,EAAagB,EACtB,EAMA,IAAIC,EAAa,+BACbC,EAAc,CAChBv+C,IAAK,6BACLw+C,MAAOF,EACPG,MAAO,+BACPC,IAAK,uCACLC,MAAO,iCAyBT,SAASC,GAAkBxgB,EAAMpxC,GAsB/B,OArBAoxC,EAAOztC,EAAGkuD,GAAGC,QAAQ1gB,GAqBL,MAATpxC,EAAgBoxC,EAAKiZ,MAjB5B,WACE3mD,KAAKquD,kBAAkB3gB,EAAKgZ,MAAOhZ,EAAKiZ,MAC1C,EALA,WACE3mD,KAAKsuD,gBAAgB5gB,EACvB,EAkB6E,mBAAVpxC,EAAuBoxC,EAAKiZ,MAJ/F,WACE,IAAIpnD,EAAIjD,EAAMuF,MAAM7B,KAAMkH,WACjB,MAAL3H,EAAWS,KAAKquD,kBAAkB3gB,EAAKgZ,MAAOhZ,EAAKiZ,OAAa3mD,KAAKsmD,eAAe5Y,EAAKgZ,MAAOhZ,EAAKiZ,MAAOpnD,EAClH,EAPA,WACE,IAAIA,EAAIjD,EAAMuF,MAAM7B,KAAMkH,WACjB,MAAL3H,EAAWS,KAAKsuD,gBAAgB5gB,GAAY1tC,KAAKkuB,aAAawf,EAAMnuC,EAC1E,EAKuImuC,EAAKiZ,MAX5I,WACE3mD,KAAKsmD,eAAe5Y,EAAKgZ,MAAOhZ,EAAKiZ,MAAOrqD,EAC9C,EALA,WACE0D,KAAKkuB,aAAawf,EAAMpxC,EAC1B,CAaF,CACA,SAASiyD,GAAY3qD,GACnB,OAAOA,EAAE4qD,OAAOzvD,QAAQ,OAAQ,IAClC,CAkBA,SAAS0vD,GAAuB/gB,GAC9B,OAAO,IAAIghB,OAAO,aAAezuD,EAAGusD,QAAQ9e,GAAQ,aAAc,IACpE,CACA,SAASihB,GAAqBjhB,GAC5B,OAAQA,EAAO,IAAI8gB,OAAOnqD,MAAM,QAClC,CACA,SAASuqD,GAAqBlhB,EAAMpxC,GAElC,IAAIuB,GADJ6vC,EAAOihB,GAAqBjhB,GAAM/pC,IAAIkrD,KACzB5wD,OASb,MAAwB,mBAAV3B,EAJd,WAEE,IADA,IAAIqF,GAAK,EAAGpC,EAAIjD,EAAMuF,MAAM7B,KAAMkH,aACzBvF,EAAI9D,GAAG6vC,EAAK/rC,GAAG3B,KAAMT,EAChC,EAPA,WAEE,IADA,IAAIoC,GAAK,IACAA,EAAI9D,GAAG6vC,EAAK/rC,GAAG3B,KAAM1D,EAChC,CAMF,CACA,SAASuyD,GAAyBnhB,GAChC,IAAIohB,EAAKL,GAAuB/gB,GAChC,OAAO,SAAS/lC,EAAMrL,GACpB,GAAIw8B,EAAInxB,EAAKonD,UAAW,OAAOzyD,EAAQw8B,EAAEjW,IAAI6qB,GAAQ5U,EAAEryB,OAAOinC,GAC9D,IAAI5U,EAAInxB,EAAKwmB,aAAa,UAAY,GAClC7xB,GACFwyD,EAAGE,UAAY,EACVF,EAAGG,KAAKn2B,IAAInxB,EAAKumB,aAAa,QAASqgC,GAAYz1B,EAAI,IAAM4U,KAElE/lC,EAAKumB,aAAa,QAASqgC,GAAYz1B,EAAE/5B,QAAQ+vD,EAAI,MAEzD,CACF,CAiBA,SAASI,GAAmBxhB,EAAMpxC,EAAOsqD,GAWvC,OAAgB,MAATtqD,EAVP,WACE0D,KAAKsG,MAAM6oD,eAAezhB,EAC5B,EAQoD,mBAAVpxC,EAJ1C,WACE,IAAIiD,EAAIjD,EAAMuF,MAAM7B,KAAMkH,WACjB,MAAL3H,EAAWS,KAAKsG,MAAM6oD,eAAezhB,GAAY1tC,KAAKsG,MAAM2/C,YAAYvY,EAAMnuC,EAAGqnD,EACvF,EANA,WACE5mD,KAAKsG,MAAM2/C,YAAYvY,EAAMpxC,EAAOsqD,EACtC,CAMF,CASA,SAASwI,GAAsB1hB,EAAMpxC,GAWnC,OAAgB,MAATA,EAVP,kBACS0D,KAAK0tC,EACd,EAQuD,mBAAVpxC,EAJ7C,WACE,IAAIiD,EAAIjD,EAAMuF,MAAM7B,KAAMkH,WACjB,MAAL3H,SAAkBS,KAAK0tC,GAAY1tC,KAAK0tC,GAAQnuC,CACtD,EANA,WACES,KAAK0tC,GAAQpxC,CACf,CAMF,CA2BA,SAAS+yD,GAAqB3hB,GAQ5B,MAAuB,mBAATA,EAAsBA,GAAQA,EAAOztC,EAAGkuD,GAAGC,QAAQ1gB,IAAOiZ,MAHxE,WACE,OAAO3mD,KAAKylD,cAAcx3B,gBAAgByf,EAAKgZ,MAAOhZ,EAAKiZ,MAC7D,EANA,WACE,IAAI/uC,EAAW5X,KAAKylD,cAAe6J,EAAYtvD,KAAKuvD,aACpD,OAAOD,IAAc1B,GAAch2C,EAAS8tC,gBAAgB6J,eAAiB3B,EAAah2C,EAASC,cAAc61B,GAAQ91B,EAASqW,gBAAgBqhC,EAAW5hB,EAC/J,CAKF,CAWA,SAAS8hB,KACP,IAAInrB,EAASrkC,KAAKulB,WACd8e,GAAQA,EAAOorB,YAAYzvD,KACjC,CAkFA,SAAS0vD,GAAsBxpD,GAC7B,MAAO,CACLgzB,SAAUhzB,EAEd,CAkBA,SAASypD,GAAoBxY,GAC3B,OAAO,WACL,OAAO8V,EAAiBjtD,KAAMm3C,EAChC,CACF,CAiBA,SAASyY,GAA4BC,GAEnC,OADK3oD,UAAUjJ,SAAQ4xD,EAAahJ,GAC7B,SAASv1C,EAAGC,GACjB,OAAOD,GAAKC,EAAIs+C,EAAWv+C,EAAE4nB,SAAU3nB,EAAE2nB,WAAa5nB,GAAKC,CAC7D,CACF,CAMA,SAASu+C,GAAkBh4B,EAAQ3Q,GACjC,IAAK,IAAIiO,EAAI,EAAG2yB,EAAIjwB,EAAO75B,OAAQm3B,EAAI2yB,EAAG3yB,IACxC,IAAK,IAAgDztB,EAA5C+lD,EAAQ51B,EAAO1C,GAAIzzB,EAAI,EAAG9D,EAAI6vD,EAAMzvD,OAAc0D,EAAI9D,EAAG8D,KAC5DgG,EAAO+lD,EAAM/rD,KAAIwlB,EAASxf,EAAMhG,EAAGyzB,GAG3C,OAAO0C,CACT,CAyBA,SAASi4B,GAAmB3uD,GAE1B,OADAsrD,EAAYtrD,EAAW4uD,IAChB5uD,CACT,CAjXAnB,EAAGkuD,GAAK,CACN3rB,OAAQqrB,EACRO,QAAS,SAAS1gB,GAChB,IAAI/rC,EAAI+rC,EAAKvgC,QAAQ,KAAMq1B,EAASkL,EAEpC,OADI/rC,GAAK,GAAqC,WAA/B6gC,EAASkL,EAAKlpC,MAAM,EAAG7C,MAAiB+rC,EAAOA,EAAKlpC,MAAM7C,EAAI,IACtEksD,EAAYtB,eAAe/pB,GAAU,CAC1CkkB,MAAOmH,EAAYrrB,GACnBmkB,MAAOjZ,GACLA,CACN,GAEFkf,EAAsBvrD,KAAO,SAASqsC,EAAMpxC,GAC1C,GAAI4K,UAAUjJ,OAAS,EAAG,CACxB,GAAoB,iBAATyvC,EAAmB,CAC5B,IAAI/lC,EAAO3H,KAAK2H,OAEhB,OADA+lC,EAAOztC,EAAGkuD,GAAGC,QAAQ1gB,IACTiZ,MAAQh/C,EAAKsoD,eAAeviB,EAAKgZ,MAAOhZ,EAAKiZ,OAASh/C,EAAKwmB,aAAauf,EACtF,CACA,IAAKpxC,KAASoxC,EAAM1tC,KAAK8C,KAAKorD,GAAkB5xD,EAAOoxC,EAAKpxC,KAC5D,OAAO0D,IACT,CACA,OAAOA,KAAK8C,KAAKorD,GAAkBxgB,EAAMpxC,GAC3C,EA4BAswD,EAAsBz8C,QAAU,SAASu9B,EAAMpxC,GAC7C,GAAI4K,UAAUjJ,OAAS,EAAG,CACxB,GAAoB,iBAATyvC,EAAmB,CAC5B,IAAI/lC,EAAO3H,KAAK2H,OAAQ9J,GAAK6vC,EAAOihB,GAAqBjhB,IAAOzvC,OAAQ0D,GAAK,EAC7E,GAAIrF,EAAQqL,EAAKonD,WACf,OAASptD,EAAI9D,OAAQvB,EAAM4zD,SAASxiB,EAAK/rC,IAAK,OAAO,OAGrD,IADArF,EAAQqL,EAAKwmB,aAAa,WACjBxsB,EAAI9D,OAAQ4wD,GAAuB/gB,EAAK/rC,IAAIstD,KAAK3yD,GAAQ,OAAO,EAE3E,OAAO,CACT,CACA,IAAKA,KAASoxC,EAAM1tC,KAAK8C,KAAK8rD,GAAqBtyD,EAAOoxC,EAAKpxC,KAC/D,OAAO0D,IACT,CACA,OAAOA,KAAK8C,KAAK8rD,GAAqBlhB,EAAMpxC,GAC9C,EAiCAswD,EAAsBtmD,MAAQ,SAASonC,EAAMpxC,EAAOsqD,GAClD,IAAI/oD,EAAIqJ,UAAUjJ,OAClB,GAAIJ,EAAI,EAAG,CACT,GAAoB,iBAAT6vC,EAAmB,CAE5B,IAAKkZ,KADD/oD,EAAI,IAAGvB,EAAQ,IACFoxC,EAAM1tC,KAAK8C,KAAKosD,GAAmBtI,EAAUlZ,EAAKkZ,GAAWtqD,IAC9E,OAAO0D,IACT,CACA,GAAInC,EAAI,EAAG,CACT,IAAI8J,EAAO3H,KAAK2H,OAChB,OAAOg+C,EAAUh+C,GAAMwoD,iBAAiBxoD,EAAM,MAAMyoD,iBAAiB1iB,EACvE,CACAkZ,EAAW,EACb,CACA,OAAO5mD,KAAK8C,KAAKosD,GAAmBxhB,EAAMpxC,EAAOsqD,GACnD,EAcAgG,EAAsBpI,SAAW,SAAS9W,EAAMpxC,GAC9C,GAAI4K,UAAUjJ,OAAS,EAAG,CACxB,GAAoB,iBAATyvC,EAAmB,OAAO1tC,KAAK2H,OAAO+lC,GACjD,IAAKpxC,KAASoxC,EAAM1tC,KAAK8C,KAAKssD,GAAsB9yD,EAAOoxC,EAAKpxC,KAChE,OAAO0D,IACT,CACA,OAAOA,KAAK8C,KAAKssD,GAAsB1hB,EAAMpxC,GAC/C,EAcAswD,EAAsBpzD,KAAO,SAAS8C,GACpC,OAAO4K,UAAUjJ,OAAS+B,KAAK8C,KAAsB,mBAAVxG,EAAuB,WAChE,IAAIW,EAAIX,EAAMuF,MAAM7B,KAAMkH,WAC1BlH,KAAK25C,YAAmB,MAAL18C,EAAY,GAAKA,CACtC,EAAa,MAATX,EAAgB,WAClB0D,KAAK25C,YAAc,EACrB,EAAI,WACF35C,KAAK25C,YAAcr9C,CACrB,GAAK0D,KAAK2H,OAAOgyC,WACnB,EACAiT,EAAsB70C,KAAO,SAASzb,GACpC,OAAO4K,UAAUjJ,OAAS+B,KAAK8C,KAAsB,mBAAVxG,EAAuB,WAChE,IAAIW,EAAIX,EAAMuF,MAAM7B,KAAMkH,WAC1BlH,KAAKqwD,UAAiB,MAALpzD,EAAY,GAAKA,CACpC,EAAa,MAATX,EAAgB,WAClB0D,KAAKqwD,UAAY,EACnB,EAAI,WACFrwD,KAAKqwD,UAAY/zD,CACnB,GAAK0D,KAAK2H,OAAO0oD,SACnB,EACAzD,EAAsBjmD,OAAS,SAAS+mC,GAEtC,OADAA,EAAO2hB,GAAqB3hB,GACrB1tC,KAAK6C,QAAO,WACjB,OAAO7C,KAAKswD,YAAY5iB,EAAK7rC,MAAM7B,KAAMkH,WAC3C,GACF,EAWA0lD,EAAsBvmD,OAAS,SAASqnC,EAAM6iB,GAG5C,OAFA7iB,EAAO2hB,GAAqB3hB,GAC5B6iB,EAASjD,EAAsBiD,GACxBvwD,KAAK6C,QAAO,WACjB,OAAO7C,KAAKwwD,aAAa9iB,EAAK7rC,MAAM7B,KAAMkH,WAAYqpD,EAAO1uD,MAAM7B,KAAMkH,YAAc,KACzF,GACF,EACA0lD,EAAsBnmD,OAAS,WAC7B,OAAOzG,KAAK8C,KAAK0sD,GACnB,EAKA5C,EAAsB1mD,KAAO,SAAS5J,EAAOiC,GAC3C,IAA6BmvD,EAAO/lD,EAAhChG,GAAK,EAAG9D,EAAImC,KAAK/B,OACrB,IAAKiJ,UAAUjJ,OAAQ,CAErB,IADA3B,EAAQ,IAAIe,MAAMQ,GAAK6vD,EAAQ1tD,KAAK,IAAI/B,UAC/B0D,EAAI9D,IACP8J,EAAO+lD,EAAM/rD,MACfrF,EAAMqF,GAAKgG,EAAKuxB,UAGpB,OAAO58B,CACT,CACA,SAAS2M,EAAKykD,EAAO+C,GACnB,IAAI9uD,EAAiJgG,EAAM+oD,EAApJ7yD,EAAI6vD,EAAMzvD,OAAQ8pD,EAAI0I,EAAUxyD,OAAQ0yD,EAAKjzD,KAAK+B,IAAI5B,EAAGkqD,GAAI6I,EAAc,IAAIvzD,MAAM0qD,GAAI8I,EAAa,IAAIxzD,MAAM0qD,GAAI+I,EAAY,IAAIzzD,MAAMQ,GACjJ,GAAIU,EAAK,CACP,IAA6D0sD,EAAzD8F,EAAiB,IAAItH,EAAUuH,EAAY,IAAI3zD,MAAMQ,GACzD,IAAK8D,GAAK,IAAKA,EAAI9D,IACb8J,EAAO+lD,EAAM/rD,MACXovD,EAAetM,IAAIwG,EAAW1sD,EAAIzB,KAAK6K,EAAMA,EAAKuxB,SAAUv3B,IAC9DmvD,EAAUnvD,GAAKgG,EAEfopD,EAAetmC,IAAIwgC,EAAUtjD,GAE/BqpD,EAAUrvD,GAAKspD,GAGnB,IAAKtpD,GAAK,IAAKA,EAAIomD,IACXpgD,EAAOopD,EAAevmC,IAAIygC,EAAW1sD,EAAIzB,KAAK2zD,EAAWC,EAAWD,EAAU9uD,GAAIA,MAEpE,IAATgG,IACTipD,EAAYjvD,GAAKgG,EACjBA,EAAKuxB,SAAWw3B,GAHhBG,EAAWlvD,GAAK+tD,GAAsBgB,GAKxCK,EAAetmC,IAAIwgC,GAAU,GAE/B,IAAKtpD,GAAK,IAAKA,EAAI9D,GACb8D,KAAKqvD,IAAkD,IAArCD,EAAevmC,IAAIwmC,EAAUrvD,MACjDmvD,EAAUnvD,GAAK+rD,EAAM/rD,GAG3B,KAAO,CACL,IAAKA,GAAK,IAAKA,EAAIgvD,GACjBhpD,EAAO+lD,EAAM/rD,GACb+uD,EAAWD,EAAU9uD,GACjBgG,GACFA,EAAKuxB,SAAWw3B,EAChBE,EAAYjvD,GAAKgG,GAEjBkpD,EAAWlvD,GAAK+tD,GAAsBgB,GAG1C,KAAM/uD,EAAIomD,IAAKpmD,EACbkvD,EAAWlvD,GAAK+tD,GAAsBe,EAAU9uD,IAElD,KAAMA,EAAI9D,IAAK8D,EACbmvD,EAAUnvD,GAAK+rD,EAAM/rD,EAEzB,CACAkvD,EAAWprC,OAASmrC,EACpBC,EAAWtrC,WAAaqrC,EAAYrrC,WAAaurC,EAAUvrC,WAAamoC,EAAMnoC,WAC9Enf,EAAMtE,KAAK+uD,GACXprC,EAAO3jB,KAAK8uD,GACZpqD,EAAK1E,KAAKgvD,EACZ,CACA,IAAI1qD,EAAQ2pD,GAAmB,IAAKtqC,EAASknC,EAAa,IAAKnmD,EAAOmmD,EAAa,IACnF,GAAqB,mBAAVrwD,EACT,OAASqF,EAAI9D,GACXoL,EAAKykD,EAAQ1tD,KAAK2B,GAAIrF,EAAMQ,KAAK4wD,EAAOA,EAAMnoC,WAAW2T,SAAUv3B,SAGrE,OAASA,EAAI9D,GACXoL,EAAKykD,EAAQ1tD,KAAK2B,GAAIrF,GAS1B,OANAmpB,EAAOrf,MAAQ,WACb,OAAOA,CACT,EACAqf,EAAOjf,KAAO,WACZ,OAAOA,CACT,EACOif,CACT,EAMAmnC,EAAsB3W,MAAQ,SAAS35C,GACrC,OAAO4K,UAAUjJ,OAAS+B,KAAKwkD,SAAS,WAAYloD,GAAS0D,KAAKwkD,SAAS,WAC7E,EACAoI,EAAsBz0C,OAAS,SAASA,GACtC,IAAoBq1C,EAAUE,EAAO/lD,EAAjCgmD,EAAY,GACM,mBAAXx1C,IAAuBA,EAASw3C,GAAoBx3C,IAC/D,IAAK,IAAIid,EAAI,EAAG2yB,EAAI/nD,KAAK/B,OAAQm3B,EAAI2yB,EAAG3yB,IAAK,CAC3Cu4B,EAAU7rD,KAAK0rD,EAAW,IAC1BA,EAASjoC,YAAcmoC,EAAQ1tD,KAAKo1B,IAAI7P,WACxC,IAAK,IAAI5jB,EAAI,EAAG9D,EAAI6vD,EAAMzvD,OAAQ0D,EAAI9D,EAAG8D,KAClCgG,EAAO+lD,EAAM/rD,KAAOwW,EAAOrb,KAAK6K,EAAMA,EAAKuxB,SAAUv3B,EAAGyzB,IAC3Do4B,EAAS1rD,KAAK6F,EAGpB,CACA,OAAOglD,EAAagB,EACtB,EAMAf,EAAsB3d,MAAQ,WAC5B,IAAK,IAAI7Z,GAAK,EAAG2yB,EAAI/nD,KAAK/B,SAAUm3B,EAAI2yB,GACtC,IAAK,IAA4DpgD,EAAxD+lD,EAAQ1tD,KAAKo1B,GAAIzzB,EAAI+rD,EAAMzvD,OAAS,EAAGgzD,EAAOvD,EAAM/rD,KAAYA,GAAK,IACxEgG,EAAO+lD,EAAM/rD,MACXsvD,GAAQA,IAAStpD,EAAKupD,aAAaD,EAAK1rC,WAAWirC,aAAa7oD,EAAMspD,GAC1EA,EAAOtpD,GAIb,OAAO3H,IACT,EACA4sD,EAAsBv7C,KAAO,SAASw+C,GACpCA,EAAaD,GAA4B/tD,MAAM7B,KAAMkH,WACrD,IAAK,IAAIkuB,GAAK,EAAG2yB,EAAI/nD,KAAK/B,SAAUm3B,EAAI2yB,GAAK/nD,KAAKo1B,GAAG/jB,KAAKw+C,GAC1D,OAAO7vD,KAAKivC,OACd,EAOA2d,EAAsB9pD,KAAO,SAASqkB,GACpC,OAAO2oC,GAAkB9vD,MAAM,SAAS2H,EAAMhG,EAAGyzB,GAC/CjO,EAASrqB,KAAK6K,EAAMA,EAAKuxB,SAAUv3B,EAAGyzB,EACxC,GACF,EASAw3B,EAAsB9vD,KAAO,SAASqqB,GACpC,IAAIqN,EAAO6wB,EAASn+C,WAEpB,OADAigB,EAAStlB,MAAM2yB,EAAK,GAAKx0B,KAAMw0B,GACxBx0B,IACT,EACA4sD,EAAsBrzD,MAAQ,WAC5B,OAAQyG,KAAK2H,MACf,EACAilD,EAAsBjlD,KAAO,WAC3B,IAAK,IAAIytB,EAAI,EAAG2yB,EAAI/nD,KAAK/B,OAAQm3B,EAAI2yB,EAAG3yB,IACtC,IAAK,IAAIs4B,EAAQ1tD,KAAKo1B,GAAIzzB,EAAI,EAAG9D,EAAI6vD,EAAMzvD,OAAQ0D,EAAI9D,EAAG8D,IAAK,CAC7D,IAAIgG,EAAO+lD,EAAM/rD,GACjB,GAAIgG,EAAM,OAAOA,CACnB,CAEF,OAAO,IACT,EACAilD,EAAsBlqD,KAAO,WAC3B,IAAI7E,EAAI,EAIR,OAHAiyD,GAAkB9vD,MAAM,aACpBnC,CACJ,IACOA,CACT,EAKA,IAAImyD,GAA8B,GA0ElC,SAASmB,GAAgB/1C,EAAMywC,EAAUuF,GACvC,IAAI1jB,EAAO,OAAStyB,EAAMzZ,EAAIyZ,EAAKjO,QAAQ,KAAMkkD,EAAOC,GACpD3vD,EAAI,IAAGyZ,EAAOA,EAAK5W,MAAM,EAAG7C,IAChC,IAAIwW,EAASo5C,GAAuB/mC,IAAIpP,GAExC,SAASo2C,IACP,IAAI9Y,EAAI14C,KAAK0tC,GACTgL,IACF14C,KAAKg0B,oBAAoB5Y,EAAMs9B,EAAGA,EAAE+Y,UAC7BzxD,KAAK0tC,GAEhB,CAiBA,OAxBIv1B,IAAQiD,EAAOjD,EAAQk5C,EAAOK,IAwB3B/vD,EAAIkqD,EAhBX,WACE,IAAInT,EAAI2Y,EAAKxF,EAAUxG,EAASn+C,YAChCsqD,EAAS10D,KAAKkD,MACdA,KAAK4mB,iBAAiBxL,EAAMpb,KAAK0tC,GAAQgL,EAAGA,EAAE+Y,EAAIL,GAClD1Y,EAAEgR,EAAImC,CACR,EAW8B2F,EAAW3F,EAAWN,EAVpD,WACE,IAA8DoG,EAA1D7C,EAAK,IAAIJ,OAAO,eAAiBzuD,EAAGusD,QAAQpxC,GAAQ,KACxD,IAAK,IAAIsyB,KAAQ1tC,KACf,GAAI2xD,EAAQjkB,EAAKikB,MAAM7C,GAAK,CAC1B,IAAIpW,EAAI14C,KAAK0tC,GACb1tC,KAAKg0B,oBAAoB29B,EAAM,GAAIjZ,EAAGA,EAAE+Y,UACjCzxD,KAAK0tC,EACd,CAEJ,CAEF,CAtGAztC,EAAGmB,UAAUgF,MAAQ2pD,GACrB9vD,EAAGmB,UAAUgF,MAAMxK,UAAYo0D,GAC/BA,GAA4BrpD,OAASimD,EAAsBjmD,OAC3DqpD,GAA4Bz2D,MAAQqzD,EAAsBrzD,MAC1Dy2D,GAA4BroD,KAAOilD,EAAsBjlD,KACzDqoD,GAA4BlzD,KAAO8vD,EAAsB9vD,KACzDkzD,GAA4BttD,KAAOkqD,EAAsBlqD,KACzDstD,GAA4BntD,OAAS,SAASs0C,GAE5C,IADA,IAAoBqW,EAAUC,EAASmE,EAASlE,EAAO/lD,EAAnDgmD,EAAY,GACPv4B,GAAK,EAAG2yB,EAAI/nD,KAAK/B,SAAUm3B,EAAI2yB,GAAK,CAC3C6J,GAAWlE,EAAQ1tD,KAAKo1B,IAAI3P,OAC5BkoC,EAAU7rD,KAAK0rD,EAAW,IAC1BA,EAASjoC,WAAamoC,EAAMnoC,WAC5B,IAAK,IAAI5jB,GAAK,EAAG9D,EAAI6vD,EAAMzvD,SAAU0D,EAAI9D,IACnC8J,EAAO+lD,EAAM/rD,KACf6rD,EAAS1rD,KAAK8vD,EAAQjwD,GAAK8rD,EAAUtW,EAASr6C,KAAK4wD,EAAMnoC,WAAY5d,EAAKuxB,SAAUv3B,EAAGyzB,IACvFq4B,EAAQv0B,SAAWvxB,EAAKuxB,UAExBs0B,EAAS1rD,KAAK,KAGpB,CACA,OAAO6qD,EAAagB,EACtB,EACAqC,GAA4B3pD,OAAS,SAASqnC,EAAM6iB,GAIpD,IAAwCnqD,EAClCoiD,EAAIqJ,EAHR,OADI3qD,UAAUjJ,OAAS,IAGemI,EAH4BpG,KAAxCuwD,EAKnB,SAASxyD,EAAG4D,EAAGyzB,GACpB,IAA+CztB,EAA3C+lD,EAAQtnD,EAAMgvB,GAAG3P,OAAQ5nB,EAAI6vD,EAAMzvD,OAGvC,IAFIm3B,GAAKy8B,IAAIA,EAAKz8B,EAAGozB,EAAK,GACtB7mD,GAAK6mD,IAAIA,EAAK7mD,EAAI,KACbgG,EAAO+lD,EAAMlF,OAAUA,EAAK3qD,IACrC,OAAO8J,CACT,GAVOilD,EAAsBvmD,OAAOvJ,KAAKkD,KAAM0tC,EAAM6iB,EACvD,EAWAtwD,EAAG4C,OAAS,SAAS8E,GACnB,IAAI+lD,EAQJ,MAPoB,iBAAT/lD,GACT+lD,EAAQ,CAAEb,EAAUllD,EAAM49C,KACpBhgC,WAAaggC,EAAYG,iBAE/BgI,EAAQ,CAAE/lD,IACJ4d,WAAaigC,EAAmB79C,GAEjCglD,EAAa,CAAEe,GACxB,EACAztD,EAAGgG,UAAY,SAAS6rD,GACtB,IAAIpE,EAQJ,MAPqB,iBAAVoE,GACTpE,EAAQrI,EAAS0H,EAAa+E,EAAOvM,KAC/BhgC,WAAaggC,EAAYG,iBAE/BgI,EAAQrI,EAASyM,IACXvsC,WAAa,KAEdonC,EAAa,CAAEe,GACxB,EACAd,EAAsB1zC,GAAK,SAASkC,EAAMywC,EAAUuF,GAClD,IAAIvzD,EAAIqJ,UAAUjJ,OAClB,GAAIJ,EAAI,EAAG,CACT,GAAoB,iBAATud,EAAmB,CAE5B,IAAKg2C,KADDvzD,EAAI,IAAGguD,GAAW,GACNzwC,EAAMpb,KAAK8C,KAAKquD,GAAgBC,EAASh2C,EAAKg2C,GAAUvF,IACxE,OAAO7rD,IACT,CACA,GAAInC,EAAI,EAAG,OAAQA,EAAImC,KAAK2H,OAAO,OAASyT,KAAUvd,EAAE6rD,EACxD0H,GAAU,CACZ,CACA,OAAOpxD,KAAK8C,KAAKquD,GAAgB/1C,EAAMywC,EAAUuF,GACnD,EA+BA,IAAIG,GAAyBtxD,EAAG0D,IAAI,CAClCouD,WAAY,YACZC,WAAY,aAOd,SAASV,GAAwBzF,EAAUO,GACzC,OAAO,SAAS3rC,GACd,IAAItjB,EAAI8C,EAAGm3C,MACXn3C,EAAGm3C,MAAQ32B,EACX2rC,EAAU,GAAKpsD,KAAKk5B,SACpB,IACE2yB,EAAShqD,MAAM7B,KAAMosD,EACvB,CAAE,QACAnsD,EAAGm3C,MAAQj6C,CACb,CACF,CACF,CACA,SAASu0D,GAAsB7F,EAAUO,GACvC,IAAI1T,EAAI4Y,GAAwBzF,EAAUO,GAC1C,OAAO,SAAS3rC,GACd,IAAI9pB,EAASqJ,KAAMiyD,EAAUxxC,EAAEyxC,cAC1BD,IAAWA,IAAYt7D,GAAsD,EAA1Cs7D,EAAQE,wBAAwBx7D,KACtE+hD,EAAE57C,KAAKnG,EAAQ8pB,EAEnB,CACF,CAzBI8kC,GACFgM,GAAuB3yD,SAAQ,SAASqtC,GAClC,KAAOA,KAAKsZ,GAAagM,GAAuB9qD,OAAOwlC,EAC7D,IAuBF,IAAImmB,GAAqBC,GAAkB,EAC3C,SAASC,GAAsB3qD,GAC7B,IAAI+lC,EAAO,oBAAqB2kB,GAAiBE,EAAQ,QAAU7kB,EAAM9qC,EAAI3C,EAAG4C,OAAO8iD,EAAUh+C,IAAOuR,GAAG,YAAcw0B,EAAMoe,GAAwB5yC,GAAG,YAAcw0B,EAAMoe,GAAwB5yC,GAAG,cAAgBw0B,EAAMoe,GAI/N,GAH2B,MAAvBsG,KACFA,KAAsB,kBAAmBzqD,IAAe4iD,EAAgB5iD,EAAKrB,MAAO,eAElF8rD,GAAqB,CACvB,IAAI9rD,EAAQk/C,EAAmB79C,GAAMrB,MAAOzD,EAASyD,EAAM8rD,IAC3D9rD,EAAM8rD,IAAuB,MAC/B,CACA,OAAO,SAASI,GAGd,GAFA5vD,EAAEsW,GAAGw0B,EAAM,MACP0kB,KAAqB9rD,EAAM8rD,IAAuBvvD,GAClD2vD,EAAe,CACjB,IAAIC,EAAM,WACR7vD,EAAEsW,GAAGq5C,EAAO,KACd,EACA3vD,EAAEsW,GAAGq5C,GAAO,WACVzG,IACA2G,GACF,IAAG,GACHnsC,WAAWmsC,EAAK,EAClB,CACF,CACF,CACAxyD,EAAG+5B,MAAQ,SAAS04B,GAClB,OAAOC,GAAcD,EAAW1G,IAClC,EACA,IAAI4G,GAAoB5yD,KAAKikC,WAAa,SAASgrB,KAAKjvD,KAAKikC,UAAU0gB,YAAc,EAAI,EACzF,SAASgO,GAAcD,EAAWjyC,GAC5BA,EAAEoyC,iBAAgBpyC,EAAIA,EAAEoyC,eAAe,IAC3C,IAAIvjD,EAAMojD,EAAUI,iBAAmBJ,EACvC,GAAIpjD,EAAIyjD,eAAgB,CACtB,IAAIC,EAAQ1jD,EAAIyjD,iBAChB,GAAIH,GAAoB,EAAG,CACzB,IAAIjgD,EAASgzC,EAAU+M,GACvB,GAAI//C,EAAOsgD,SAAWtgD,EAAOugD,QAAS,CASpC,IAAIC,GARJ7jD,EAAMrP,EAAG4C,OAAO,QAAQ8D,OAAO,OAAOL,MAAM,CAC1C2G,SAAU,WACV9F,IAAK,EACLG,KAAM,EACNmV,OAAQ,EACRlM,QAAS,EACT6iD,OAAQ,QACP,cACW,GAAG,GAAGC,eACpBT,KAAsBO,EAAInsC,GAAKmsC,EAAI1yC,GACnCnR,EAAI7I,QACN,CACF,CAIA,OAHImsD,IAAmBI,EAAMzzD,EAAIkhB,EAAE6yC,MAAON,EAAMxzD,EAAIihB,EAAE8yC,QAAYP,EAAMzzD,EAAIkhB,EAAEskC,QAC9EiO,EAAMxzD,EAAIihB,EAAEukC,SAEL,EADPgO,EAAQA,EAAMQ,gBAAgBd,EAAUW,eAAeI,YACxCl0D,EAAGyzD,EAAMxzD,EAC1B,CACA,IAAIkjD,EAAOgQ,EAAUvzD,wBACrB,MAAO,CAAEshB,EAAEskC,QAAUrC,EAAKp7C,KAAOorD,EAAUgB,WAAYjzC,EAAEukC,QAAUtC,EAAKv7C,IAAMurD,EAAUiB,UAC1F,CA0DA,SAASC,KACP,OAAO3zD,EAAGm3C,MAAMyb,eAAe,GAAGgB,UACpC,CA3DA5zD,EAAG6zD,MAAQ,SAASpB,EAAWqB,EAASF,GAEtC,GADI3sD,UAAUjJ,OAAS,IAAG41D,EAAaE,EAASA,EAAU/H,IAAiB6G,gBACvEkB,EAAS,IAAK,IAA+BD,EAA3BnyD,EAAI,EAAG9D,EAAIk2D,EAAQ91D,OAAe0D,EAAI9D,IAAK8D,EAC/D,IAAKmyD,EAAQC,EAAQpyD,IAAIkyD,aAAeA,EACtC,OAAOlB,GAAcD,EAAWoB,EAGtC,EACA7zD,EAAG+2C,SAASjE,KAAO,WACjB,IAAIqE,EAAQ6U,EAAiBlZ,EAAM,OAAQ,YAAa,WAAYkE,EAAS,KAAM+c,EAAYjgB,EAAUwX,EAAStrD,EAAG+5B,MAAO2rB,EAAW,YAAa,WAAYsO,EAAalgB,EAAU6f,GAAyB3zD,EAAG6zD,MAAO1J,EAAa,YAAa,YACpP,SAASrX,IACP/yC,KAAKkZ,GAAG,iBAAkB86C,GAAW96C,GAAG,kBAAmB+6C,EAC7D,CACA,SAASlgB,EAAU1oC,EAAI4B,EAAUinD,EAASC,EAAMljD,GAC9C,OAAO,WACL,IAA0OmjD,EAAtOr6B,EAAO/5B,KAAMrJ,EAASsJ,EAAGm3C,MAAMzgD,OAAO09D,sBAAwBp0D,EAAGm3C,MAAMzgD,OAAQ0tC,EAAStK,EAAKxU,WAAYmmC,EAAWtU,EAAM8U,GAAGnyB,EAAM7yB,WAAYotD,EAAU,EAAGC,EAASlpD,IAAMmpD,EAAW,SAAqB,MAAVD,EAAiB,GAAK,IAAMA,GAAqBE,EAAcx0D,EAAG4C,OAAOqxD,EAAQv9D,IAASuiB,GAAGi7C,EAAOK,GAUzS,WACE,IAA0CvtD,EAAIxB,EAA1CivD,EAAYznD,EAASo3B,EAAQkwB,GACjC,IAAKG,EAAW,OAChBztD,EAAKytD,EAAU,GAAKC,EAAU,GAC9BlvD,EAAKivD,EAAU,GAAKC,EAAU,GAC9BL,GAAWrtD,EAAKxB,EAChBkvD,EAAYD,EACZhJ,EAAS,CACPtwC,KAAM,OACN7b,EAAGm1D,EAAU,GAAKN,EAAW,GAC7B50D,EAAGk1D,EAAU,GAAKN,EAAW,GAC7BntD,GAAIA,EACJxB,GAAIA,GAER,IAxB0TyT,GAAGjI,EAAMujD,GAyBnU,WACE,IAAKvnD,EAASo3B,EAAQkwB,GAAS,OAC/BE,EAAYv7C,GAAGi7C,EAAOK,EAAU,MAAMt7C,GAAGjI,EAAMujD,EAAU,MACzDI,EAAYN,GACZ5I,EAAS,CACPtwC,KAAM,WAEV,IAhCqVw5C,EAActC,GAAsB37D,GAASg+D,EAAY1nD,EAASo3B,EAAQkwB,GAG7ZH,EAFEnd,EAEW,EADbmd,EAAand,EAAOp1C,MAAMk4B,EAAM7yB,YACN3H,EAAIo1D,EAAU,GAAIP,EAAW50D,EAAIm1D,EAAU,IAExD,CAAE,EAAG,GAEpBjJ,EAAS,CACPtwC,KAAM,aAyBV,CACF,CAMA,OALA23B,EAAKkE,OAAS,SAAS13C,GACrB,OAAK2H,UAAUjJ,QACfg5C,EAAS13C,EACFwzC,GAFuBkE,CAGhC,EACOh3C,EAAGqrD,OAAOvY,EAAMqE,EAAO,KAChC,EAIAn3C,EAAG8zD,QAAU,SAASrB,EAAWqB,GAE/B,OADI7sD,UAAUjJ,OAAS,IAAG81D,EAAU/H,IAAiB+H,SAC9CA,EAAU1O,EAAS0O,GAASpwD,KAAI,SAASmwD,GAC9C,IAAId,EAAQL,GAAcD,EAAWoB,GAErC,OADAd,EAAMa,WAAaC,EAAMD,WAClBb,CACT,IAAK,EACP,EACA,IAAI,GAAI,KAAM,GAAK,GAAI,GAAG,GAAIt1D,KAAK6H,GAAI,GAAI,EAAI,GAAG,GAAK,GAAI,GAAG,GAAQ,GAAI,EAAGsvD,GAAa,GAAI,IAAKC,GAAa,IAAM,GACtH,SAASC,GAAOx1D,GACd,OAAOA,EAAI,EAAI,EAAIA,EAAI,GAAK,EAAI,CAClC,CACA,SAASy1D,GAAW1jD,EAAGC,EAAGunB,GACxB,OAAQvnB,EAAE,GAAKD,EAAE,KAAOwnB,EAAE,GAAKxnB,EAAE,KAAOC,EAAE,GAAKD,EAAE,KAAOwnB,EAAE,GAAKxnB,EAAE,GACnE,CACA,SAAS2jD,GAAQ11D,GACf,OAAOA,EAAI,EAAI,EAAIA,GAAK,EAAI,GAAI7B,KAAKw3D,KAAK31D,EAC5C,CACA,SAAS41D,GAAQ51D,GACf,OAAOA,EAAI,EAAI,GAAQA,GAAK,GAAK,GAAQ7B,KAAK03D,KAAK71D,EACrD,CAIA,SAAS81D,GAAQ91D,GACf,QAASA,EAAI7B,KAAK43D,IAAI/1D,IAAM,EAAIA,GAAK,CACvC,CAIA,SAASg2D,GAAYh2D,GACnB,OAAQA,EAAI7B,KAAK4H,IAAI/F,EAAI,IAAMA,CACjC,CACA,IAAI,GAAI7B,KAAK83D,MACbv1D,EAAGw1D,gBAAkB,SAASC,EAAI5M,GAChC,IAAwInnD,EAAGg0D,EAAvIC,EAAMF,EAAG,GAAIG,EAAMH,EAAG,GAAII,EAAKJ,EAAG,GAAIK,EAAMjN,EAAG,GAAIkN,EAAMlN,EAAG,GAAImN,EAAKnN,EAAG,GAAI7hD,EAAK8uD,EAAMH,EAAKnwD,EAAKuwD,EAAMH,EAAKK,EAAKjvD,EAAKA,EAAKxB,EAAKA,EACpI,GAAIywD,EAAK,GACPP,EAAIj4D,KAAKy4D,IAAIF,EAAKH,GAAM,GACxBn0D,EAAI,SAASihB,GACX,MAAO,CAAEgzC,EAAMhzC,EAAI3b,EAAI4uD,EAAMjzC,EAAInd,EAAIqwD,EAAKp4D,KAAK43D,IAAI,GAAI1yC,EAAI+yC,GAC7D,MACK,CACL,IAAIzzB,EAAKxkC,KAAKogC,KAAKo4B,GAAKE,GAAMH,EAAKA,EAAKH,EAAKA,EAThB,EAS0BI,IAAO,EAAIJ,EAT7C,EASuD5zB,GAAKm0B,GAAMJ,EAAKA,EAAKH,EAAKA,EATzE,EASmFI,IAAO,EAAID,EATtG,EASgH/zB,GAAKo0B,EAAK54D,KAAKy4D,IAAIz4D,KAAKogC,KAAKs4B,EAAKA,EAAK,GAAKA,GAAK9qC,EAAK5tB,KAAKy4D,IAAIz4D,KAAKogC,KAAKu4B,EAAKA,EAAK,GAAKA,GAC7NV,GAAKrqC,EAAKgrC,GAAM,GAChB30D,EAAI,SAASihB,GACX,IAlBWrjB,EAkBPqE,EAAIgf,EAAI+yC,EAAGY,EAASlB,GAAQiB,GAAKE,EAAIV,GAZtB,EAYiC5zB,IAAOq0B,GAlBhDh3D,EAkBiE,GAAIqE,EAAI0yD,IAjB/E/2D,EAAI7B,KAAK43D,IAAI,EAAI/1D,IAAM,IAAMA,EAAI,IAP5C,SAAiBA,GACf,QAASA,EAAI7B,KAAK43D,IAAI/1D,IAAM,EAAIA,GAAK,CACvC,CAsBgGk3D,CAAQH,IAClG,MAAO,CAAEV,EAAMY,EAAIvvD,EAAI4uD,EAAMW,EAAI/wD,EAAIqwD,EAAKS,EAASlB,GAAQ,GAAIzxD,EAAI0yD,GACrE,CACF,CAEA,OADA30D,EAAE8P,SAAe,IAAJkkD,EACNh0D,CACT,EACA1B,EAAG+2C,SAAS/9B,KAAO,WACjB,IAIGy9C,EAAYC,EAAS/kB,EAAwLglB,EAAiDC,EAA2ElY,EAAItjC,EAAIgiC,EAAI9hC,EAJpVu7C,EAAO,CACTv3D,EAAG,EACHC,EAAG,EACHysC,EAAG,GAC2BvpC,EAAO,CAAE,IAAK,KAAOpB,EAAcy1D,GAA0BtlD,EAAW,IAAKulD,EAAU,EAAGhD,EAAY,iBAAkBiD,EAAY,iBAAkBC,EAAU,eAAiCjD,EAAa,kBAA8B7c,EAAQ6U,EAAiBhzC,EAAM,YAAa,OAAQ,WAUhU,SAASA,EAAKvT,GACZA,EAAEwT,GAAG86C,EAAWmD,GAAaj+C,GAAGk+C,GAAwB,QAASC,GAAcn+C,GAAG,gBAAiBo+C,GAAYp+C,GAAG+6C,EAAYsD,EAChI,CAmGA,SAASC,EAAS/mD,GAChB,MAAO,EAAGA,EAAE,GAAKqmD,EAAKv3D,GAAKu3D,EAAK7qB,GAAIx7B,EAAE,GAAKqmD,EAAKt3D,GAAKs3D,EAAK7qB,EAC5D,CAIA,SAASwrB,EAAQ7zD,GACfkzD,EAAK7qB,EAAIvuC,KAAK+G,IAAInD,EAAY,GAAI5D,KAAK+B,IAAI6B,EAAY,GAAIsC,GAC7D,CACA,SAAS8zD,EAAYjnD,EAAGioC,GACtBA,EAPF,SAAeA,GACb,MAAO,CAAEA,EAAE,GAAKoe,EAAK7qB,EAAI6qB,EAAKv3D,EAAGm5C,EAAE,GAAKoe,EAAK7qB,EAAI6qB,EAAKt3D,EACxD,CAKMwzD,CAAMta,GACVoe,EAAKv3D,GAAKkR,EAAE,GAAKioC,EAAE,GACnBoe,EAAKt3D,GAAKiR,EAAE,GAAKioC,EAAE,EACrB,CACA,SAASif,EAAO59B,EAAMtpB,EAAGioC,EAAGzM,GAC1BlS,EAAKh0B,UAAY,CACfxG,EAAGu3D,EAAKv3D,EACRC,EAAGs3D,EAAKt3D,EACRysC,EAAG6qB,EAAK7qB,GAEVwrB,EAAQ/5D,KAAKy0B,IAAI,EAAG8Z,IACpByrB,EAAYf,EAAUlmD,EAAGioC,GACzB3e,EAAO95B,EAAG4C,OAAOk3B,GACbtoB,EAAW,IAAGsoB,EAAOA,EAAK72B,aAAauO,SAASA,IACpDsoB,EAAKj9B,KAAKmc,EAAKm+B,MACjB,CACA,SAASwgB,IACHv8C,GAAIA,EAAG9Z,OAAOo9C,EAAGv+C,QAAQuD,KAAI,SAASpE,GACxC,OAAQA,EAAIu3D,EAAKv3D,GAAKu3D,EAAK7qB,CAC7B,IAAGtoC,IAAIg7C,EAAGkZ,SACNt8C,GAAIA,EAAGha,OAAO87C,EAAGj9C,QAAQuD,KAAI,SAASnE,GACxC,OAAQA,EAAIs3D,EAAKt3D,GAAKs3D,EAAK7qB,CAC7B,IAAGtoC,IAAI05C,EAAGwa,QACZ,CACA,SAASC,EAAYpM,GACdsL,KAAWtL,EAAS,CACvBtwC,KAAM,aAEV,CACA,SAAS28C,EAAOrM,GACdkM,IACAlM,EAAS,CACPtwC,KAAM,OACNlb,MAAO42D,EAAK7qB,EACZrO,UAAW,CAAEk5B,EAAKv3D,EAAGu3D,EAAKt3D,IAE9B,CACA,SAASw4D,EAAUtM,KACVsL,IAAStL,EAAS,CACvBtwC,KAAM,YACJu7C,EAAU,KAChB,CACA,SAASQ,IACP,IAAIp9B,EAAO/5B,KAAM0rD,EAAWtU,EAAM8U,GAAGnyB,EAAM7yB,WAAYotD,EAAU,EAAGJ,EAAUj0D,EAAG4C,OAAO8iD,EAAU5rB,IAAO7gB,GAAG+9C,GAG5G,WACE3C,EAAU,EACVoD,EAAYz3D,EAAG+5B,MAAMD,GAAOk+B,GAC5BF,EAAOrM,EACT,IAP8HxyC,GAAGg+C,GAQjI,WACEhD,EAAQh7C,GAAG+9C,EAAW,MAAM/9C,GAAGg+C,EAAS,MACxCtC,EAAYN,GACZ0D,EAAUtM,EACZ,IAZkJuM,EAAYT,EAASv3D,EAAG+5B,MAAMD,IAAQ66B,EAActC,GAAsBv4B,GAC5Nm+B,GAAuBp7D,KAAKi9B,GAC5B+9B,EAAYpM,EAWd,CACA,SAAS6L,IACP,IAAuFzxD,EAAnFi0B,EAAO/5B,KAAM0rD,EAAWtU,EAAM8U,GAAGnyB,EAAM7yB,WAAYixD,EAAa,CAAC,EAAGC,EAAY,EAAWC,EAAW,SAAWp4D,EAAGm3C,MAAMyb,eAAe,GAAGgB,WAAYyE,EAAY,YAAcD,EAAUE,EAAW,WAAaF,EAAU9tD,EAAU,GAAI2pD,EAAUj0D,EAAG4C,OAAOk3B,GAAO66B,EAActC,GAAsBv4B,GAI/S,SAASy+B,IACP,IAAIzE,EAAU9zD,EAAG8zD,QAAQh6B,GAKzB,OAJAj0B,EAASgxD,EAAK7qB,EACd8nB,EAAQn1D,SAAQ,SAASgkB,GACnBA,EAAEixC,cAAcsE,IAAYA,EAAWv1C,EAAEixC,YAAc2D,EAAS50C,GACtE,IACOmxC,CACT,CACA,SAAS0E,IACP,IAAI9hE,EAASsJ,EAAGm3C,MAAMzgD,OACtBsJ,EAAG4C,OAAOlM,GAAQuiB,GAAGo/C,EAAWI,GAAOx/C,GAAGq/C,EAAUI,GACpDpuD,EAAQzI,KAAKnL,GAEb,IADA,IAAIiiE,EAAU34D,EAAGm3C,MAAMyb,eACdlxD,EAAI,EAAG9D,EAAI+6D,EAAQ36D,OAAQ0D,EAAI9D,IAAK8D,EAC3Cw2D,EAAWS,EAAQj3D,GAAGkyD,YAAc,KAEtC,IAAIE,EAAUyE,IAAYxS,EAAM50C,KAAK40C,MACrC,GAAuB,IAAnB+N,EAAQ91D,OAAc,CACxB,GAAI+nD,EAAM6Q,EAAY,IAAK,CACzB,IAAIpmD,EAAIsjD,EAAQ,GAChB4D,EAAO59B,EAAMtpB,EAAG0nD,EAAW1nD,EAAEojD,YAAan2D,KAAKiqD,MAAMjqD,KAAKy4D,IAAIW,EAAK7qB,GAAKvuC,KAAKm7D,KAAO,GACpF/M,GACF,CACA+K,EAAY7Q,CACd,MAAO,GAAI+N,EAAQ91D,OAAS,EAAG,CACzBwS,EAAIsjD,EAAQ,GAAhB,IAAoB+E,EAAI/E,EAAQ,GAAI9sD,EAAKwJ,EAAE,GAAKqoD,EAAE,GAAIrzD,EAAKgL,EAAE,GAAKqoD,EAAE,GACpEV,EAAYnxD,EAAKA,EAAKxB,EAAKA,CAC7B,CACF,CACA,SAASizD,IACP,IAAgChD,EAAIqD,EAAIjQ,EAAIkQ,EAAxCjF,EAAU9zD,EAAG8zD,QAAQh6B,GACzBm+B,GAAuBp7D,KAAKi9B,GAC5B,IAAK,IAAIp4B,EAAI,EAAG9D,EAAIk2D,EAAQ91D,OAAQ0D,EAAI9D,IAAK8D,EAAGq3D,EAAK,KAEnD,GADAlQ,EAAKiL,EAAQpyD,GACTq3D,EAAKb,EAAWrP,EAAG+K,YAAa,CAClC,GAAIkF,EAAI,MACRrD,EAAK5M,EAAIiQ,EAAKC,CAChB,CAEF,GAAIA,EAAI,CACN,IAAIC,GAAaA,EAAYnQ,EAAG,GAAK4M,EAAG,IAAMuD,GAAaA,EAAYnQ,EAAG,GAAK4M,EAAG,IAAMuD,EAAWjzD,EAASoyD,GAAa16D,KAAKogC,KAAKm7B,EAAYb,GAC/I1C,EAAK,EAAGA,EAAG,GAAK5M,EAAG,IAAM,GAAI4M,EAAG,GAAK5M,EAAG,IAAM,GAC9CiQ,EAAK,EAAGA,EAAG,GAAKC,EAAG,IAAM,GAAID,EAAG,GAAKC,EAAG,IAAM,GAC9CvB,EAAQzxD,EAASF,EACnB,CACA+wD,EAAY,KACZa,EAAYhC,EAAIqD,GAChBhB,EAAOrM,EACT,CACA,SAASiN,IACP,GAAI14D,EAAGm3C,MAAM2c,QAAQ91D,OAAQ,CAE3B,IADA,IAAI26D,EAAU34D,EAAGm3C,MAAMyb,eACdlxD,EAAI,EAAG9D,EAAI+6D,EAAQ36D,OAAQ0D,EAAI9D,IAAK8D,SACpCw2D,EAAWS,EAAQj3D,GAAGkyD,YAE/B,IAAK,IAAIA,KAAcsE,EACrB,YAAYK,GAEhB,CACAv4D,EAAGgG,UAAUsE,GAAS2O,GAAGm/C,EAAU,MACnCnE,EAAQh7C,GAAG86C,EAAWmD,GAAaj+C,GAAG+6C,EAAYsD,GAClD3C,IACAoD,EAAUtM,EACZ,CAlEA+M,IACAX,EAAYpM,GACZwI,EAAQh7C,GAAG86C,EAAW,MAAM96C,GAAG+6C,EAAYwE,EAiE7C,CACA,SAASpB,IACP,IAAI3L,EAAWtU,EAAM8U,GAAGlsD,KAAMkH,WAC1B0vD,EAAiBvwC,aAAauwC,IAAuBsB,GAAuBp7D,KAAKkD,MACrF02D,EAAac,EAASb,EAAU/kB,GAAU3xC,EAAG+5B,MAAMh6B,OAAQ83D,EAAYpM,IACvEkL,EAAkBtwC,YAAW,WAC3BswC,EAAkB,KAClBoB,EAAUtM,EACZ,GAAG,IACHI,IACA2L,EAAQ/5D,KAAKy0B,IAAI,EAA6B,KAA1B+mC,MAAkCpC,EAAK7qB,GAC3DyrB,EAAYf,EAASD,GACrBqB,EAAOrM,EACT,CACA,SAAS4L,IACP,IAAI7mD,EAAIxQ,EAAG+5B,MAAMh6B,MAAOisC,EAAIvuC,KAAKy4D,IAAIW,EAAK7qB,GAAKvuC,KAAKm7D,IACpDlB,EAAO33D,KAAMyQ,EAAG+mD,EAAS/mD,GAAIxQ,EAAGm3C,MAAM+hB,SAAWz7D,KAAKC,KAAKsuC,GAAK,EAAIvuC,KAAKiqD,MAAM1b,GAAK,EACtF,CACA,OAxQKmrB,KACHA,GAAwB,YAAa7R,GAAe2T,GAAwB,WAC1E,OAAQj5D,EAAGm3C,MAAMgiB,QAAUn5D,EAAGm3C,MAAMiiB,UAAY,IAAM,EACxD,EAAG,SAAW,iBAAkB9T,GAAe2T,GAAwB,WACrE,OAAOj5D,EAAGm3C,MAAMkiB,UAClB,EAAG,eAAiBJ,GAAwB,WAC1C,OAAQj5D,EAAGm3C,MAAMmiB,MACnB,EAAG,wBAKLtgD,EAAKm+B,MAAQ,SAAS1xC,GACpBA,EAAE5C,MAAK,WACL,IAAI4oD,EAAWtU,EAAM8U,GAAGlsD,KAAMkH,WAAYsyD,EAAQ1C,EAC9C2C,GACFx5D,EAAG4C,OAAO7C,MAAMkD,aAAaJ,KAAK,cAAc,WAC9Cg0D,EAAO92D,KAAK+F,WAAa,CACvBxG,EAAG,EACHC,EAAG,EACHysC,EAAG,GAEL6rB,EAAYpM,EACd,IAAGgO,MAAM,aAAa,WACpB,IAAIzyD,EAAKvE,EAAK,GAAI+C,EAAK/C,EAAK,GAAI4c,EAAKq3C,EAAUA,EAAQ,GAAK1vD,EAAK,EAAGsY,EAAKo3C,EAAUA,EAAQ,GAAKlxD,EAAK,EAAG9D,EAAI1B,EAAGw1D,gBAAgB,EAAGn2C,EAAKw3C,EAAKv3D,GAAKu3D,EAAK7qB,GAAI1sB,EAAKu3C,EAAKt3D,GAAKs3D,EAAK7qB,EAAGhlC,EAAK6vD,EAAK7qB,GAAK,EAAG3sB,EAAKk6C,EAAMj6D,GAAKi6D,EAAMvtB,GAAI1sB,EAAKi6C,EAAMh6D,GAAKg6D,EAAMvtB,EAAGhlC,EAAKuyD,EAAMvtB,IACjQ,OAAO,SAASrpB,GACd,IAAI81B,EAAI/2C,EAAEihB,GAAIqpB,EAAIhlC,EAAKyxC,EAAE,GACzB14C,KAAK+F,UAAY+wD,EAAO,CACtBv3D,EAAG+f,EAAKo5B,EAAE,GAAKzM,EACfzsC,EAAG+f,EAAKm5B,EAAE,GAAKzM,EACfA,EAAGA,GAEL8rB,EAAOrM,EACT,CACF,IAAG5oD,KAAK,kBAAkB,WACxBk1D,EAAUtM,EACZ,IAAG5oD,KAAK,YAAY,WAClBk1D,EAAUtM,EACZ,KAEA1rD,KAAK+F,UAAY+wD,EACjBgB,EAAYpM,GACZqM,EAAOrM,GACPsM,EAAUtM,GAEd,GACF,EACAzyC,EAAK2kB,UAAY,SAAS8rB,GACxB,OAAKxiD,UAAUjJ,QACf64D,EAAO,CACLv3D,GAAImqD,EAAE,GACNlqD,GAAIkqD,EAAE,GACNzd,EAAG6qB,EAAK7qB,GAEV2rB,IACO3+C,GAPuB,CAAE69C,EAAKv3D,EAAGu3D,EAAKt3D,EAQ/C,EACAyZ,EAAK/Y,MAAQ,SAASwpD,GACpB,OAAKxiD,UAAUjJ,QACf64D,EAAO,CACLv3D,EAAGu3D,EAAKv3D,EACRC,EAAGs3D,EAAKt3D,EACRysC,EAAG,MAELwrB,GAAS/N,GACTkO,IACO3+C,GARuB69C,EAAK7qB,CASrC,EACAhzB,EAAK3X,YAAc,SAASooD,GAC1B,OAAKxiD,UAAUjJ,QACfqD,EAAmB,MAALooD,EAAYqN,GAA2B,EAAGrN,EAAE,IAAKA,EAAE,IAC1DzwC,GAFuB3X,CAGhC,EACA2X,EAAK24B,OAAS,SAAS8X,GACrB,OAAKxiD,UAAUjJ,QACf2zC,EAAS8X,GAAK,EAAGA,EAAE,IAAKA,EAAE,IACnBzwC,GAFuB24B,CAGhC,EACA34B,EAAKvW,KAAO,SAASgnD,GACnB,OAAKxiD,UAAUjJ,QACfyE,EAAOgnD,GAAK,EAAGA,EAAE,IAAKA,EAAE,IACjBzwC,GAFuBvW,CAGhC,EACAuW,EAAKxH,SAAW,SAASi4C,GACvB,OAAKxiD,UAAUjJ,QACfwT,GAAYi4C,EACLzwC,GAFuBxH,CAGhC,EACAwH,EAAK1Z,EAAI,SAAS2lD,GAChB,OAAKh+C,UAAUjJ,QACfod,EAAK6pC,EACLvG,EAAKuG,EAAEhjD,OACP40D,EAAO,CACLv3D,EAAG,EACHC,EAAG,EACHysC,EAAG,GAEEhzB,GARuBoC,CAShC,EACApC,EAAKzZ,EAAI,SAAS0lD,GAChB,OAAKh+C,UAAUjJ,QACfsd,EAAK2pC,EACL7H,EAAK6H,EAAEhjD,OACP40D,EAAO,CACLv3D,EAAG,EACHC,EAAG,EACHysC,EAAG,GAEEhzB,GARuBsC,CAShC,EA2JOtb,EAAGqrD,OAAOryC,EAAMm+B,EAAO,KAChC,EACA,IAAgD8hB,GAAuB9B,GAAnEL,GAA2B,CAAE,EAAGlvD,KAEpC,SAAS8xD,KAAY,CAKrB,SAASC,GAAOj3D,EAAGiB,EAAG80C,GACpB,OAAO14C,gBAAgB45D,IAAe55D,KAAK2C,GAAKA,EAAG3C,KAAK4D,GAAKA,OAAG5D,KAAK04C,GAAKA,IAAKxxC,UAAUjJ,OAAS,EAAI0E,aAAai3D,GAAS,IAAIA,GAAOj3D,EAAEA,EAAGA,EAAEiB,EAAGjB,EAAE+1C,GAAKmhB,GAAa,GAAKl3D,EAAGm3D,GAAYF,IAAU,IAAIA,GAAOj3D,EAAGiB,EAAG80C,EACtN,CARAz4C,EAAG2U,MAAQ+kD,GAEXA,GAAS/9D,UAAUwI,SAAW,WAC5B,OAAOpE,KAAK87C,MAAQ,EACtB,EACA77C,EAAG85D,IAAMH,GAIT,IAAII,GAAkBJ,GAAOh+D,UAAY,IAAI+9D,GAY7C,SAASM,GAAWt3D,EAAGiB,EAAG80C,GACxB,IAAIwhB,EAAIC,EAaR,SAASC,EAAGz3D,GACV,OAAOjF,KAAKukC,MAAa,IAR3B,SAAWt/B,GAET,OADIA,EAAI,IAAKA,GAAK,IAAcA,EAAI,IAAGA,GAAK,KACxCA,EAAI,GAAWu3D,GAAMC,EAAKD,GAAMv3D,EAAI,GACpCA,EAAI,IAAYw3D,EAChBx3D,EAAI,IAAYu3D,GAAMC,EAAKD,IAAO,IAAMv3D,GAAK,GAC1Cu3D,CACT,CAEoBj9D,CAAE0F,GACtB,CACA,OAfAA,EAAI8kB,MAAM9kB,GAAK,GAAKA,GAAK,KAAO,EAAIA,EAAI,IAAMA,EAC9CiB,EAAI6jB,MAAM7jB,IAASA,EAAI,EAAR,EAAgBA,EAAI,EAAI,EAAIA,EAG3Cs2D,EAAK,GAFLxhB,EAAIA,EAAI,EAAI,EAAIA,EAAI,EAAI,EAAIA,IAC5ByhB,EAAKzhB,GAAK,GAAKA,GAAK,EAAI90C,GAAK80C,EAAI90C,EAAI80C,EAAI90C,GAYlC,IAAIy2D,GAAOD,EAAGz3D,EAAI,KAAMy3D,EAAGz3D,GAAIy3D,EAAGz3D,EAAI,KAC/C,CAEA,SAAS23D,GAAO33D,EAAGm2B,EAAG4f,GACpB,OAAO14C,gBAAgBs6D,IAAet6D,KAAK2C,GAAKA,EAAG3C,KAAK84B,GAAKA,OAAG94B,KAAK04C,GAAKA,IAAKxxC,UAAUjJ,OAAS,EAAI0E,aAAa23D,GAAS,IAAIA,GAAO33D,EAAEA,EAAGA,EAAEm2B,EAAGn2B,EAAE+1C,GAA2B6hB,GAAtB53D,aAAa63D,GAAoB73D,EAAE+1C,GAA2B/1C,EAAI83D,IAAY93D,EAAI1C,EAAG67C,IAAIn5C,IAAI+4C,EAAG/4C,EAAE+C,EAAG/C,EAAE4O,IAAImnC,EAArE/1C,EAAE2O,EAAG3O,EAAE4O,GAA6E,IAAI+oD,GAAO33D,EAAGm2B,EAAG4f,EACrS,CAjCAshB,GAAgBje,SAAW,SAAS9P,GAElC,OADAA,EAAIvuC,KAAKy0B,IAAI,GAAIjrB,UAAUjJ,OAASguC,EAAI,GACjC,IAAI2tB,GAAO55D,KAAK2C,EAAG3C,KAAK4D,EAAG5D,KAAK04C,EAAIzM,EAC7C,EACA+tB,GAAgBU,OAAS,SAASzuB,GAEhC,OADAA,EAAIvuC,KAAKy0B,IAAI,GAAIjrB,UAAUjJ,OAASguC,EAAI,GACjC,IAAI2tB,GAAO55D,KAAK2C,EAAG3C,KAAK4D,EAAGqoC,EAAIjsC,KAAK04C,EAC7C,EACAshB,GAAgBle,IAAM,WACpB,OAAOme,GAAWj6D,KAAK2C,EAAG3C,KAAK4D,EAAG5D,KAAK04C,EACzC,EAoBAz4C,EAAG06D,IAAML,GAIT,IAAIM,GAAkBN,GAAO1+D,UAAY,IAAI+9D,GAU7C,SAASkB,GAAWl4D,EAAGm2B,EAAG4f,GAGxB,OAFIjxB,MAAM9kB,KAAIA,EAAI,GACd8kB,MAAMqR,KAAIA,EAAI,GACX,IAAI0hC,GAAO9hB,EAAGh7C,KAAKugC,IAAIt7B,GAAKkyD,IAAc/7B,EAAGp7B,KAAK4H,IAAI3C,GAAKm2B,EACpE,CAEA,SAAS0hC,GAAO9hB,EAAGpnC,EAAGC,GACpB,OAAOvR,gBAAgBw6D,IAAex6D,KAAK04C,GAAKA,EAAG14C,KAAKsR,GAAKA,OAAGtR,KAAKuR,GAAKA,IAAKrK,UAAUjJ,OAAS,EAAIy6C,aAAa8hB,GAAS,IAAIA,GAAO9hB,EAAEA,EAAGA,EAAEpnC,EAAGonC,EAAEnnC,GAAKmnC,aAAa4hB,GAASO,GAAWniB,EAAE/1C,EAAG+1C,EAAE5f,EAAG4f,EAAEA,GAAK+hB,IAAY/hB,EAAI2hB,GAAO3hB,IAAIgD,EAAGhD,EAAEhzC,EAAGgzC,EAAEnnC,GAAK,IAAIipD,GAAO9hB,EAAGpnC,EAAGC,EACvQ,CAjBAqpD,GAAgB7e,SAAW,SAAS9P,GAClC,OAAO,IAAIquB,GAAOt6D,KAAK2C,EAAG3C,KAAK84B,EAAGp7B,KAAK+B,IAAI,IAAKO,KAAK04C,EAAIoiB,IAAY5zD,UAAUjJ,OAASguC,EAAI,IAC9F,EACA2uB,GAAgBF,OAAS,SAASzuB,GAChC,OAAO,IAAIquB,GAAOt6D,KAAK2C,EAAG3C,KAAK84B,EAAGp7B,KAAK+G,IAAI,EAAGzE,KAAK04C,EAAIoiB,IAAY5zD,UAAUjJ,OAASguC,EAAI,IAC5F,EACA2uB,GAAgB9e,IAAM,WACpB,OAAO+e,GAAW76D,KAAK2C,EAAG3C,KAAK84B,EAAG94B,KAAK04C,GAAGoD,KAC5C,EAMA77C,EAAG86D,IAAMP,GAIT,IAAIM,GAAW,GACXE,GAAW,OAAQC,GAAW,EAAGC,GAAW,QAC5CC,GAAkBX,GAAO5+D,UAAY,IAAI+9D,GAU7C,SAASyB,GAAW1iB,EAAGpnC,EAAGC,GACxB,IAAI/R,GAAKk5C,EAAI,IAAM,IAAKn5C,EAAIC,EAAI8R,EAAI,IAAK4zC,EAAI1lD,EAAI+R,EAAI,IAIrD,OAAO,IAAI8oD,GAAOgB,GAAW,WAH7B97D,EAAI+7D,GAAW/7D,GAAKy7D,IAGyB,WAF7Cx7D,EAAI87D,GAAW97D,GAAKy7D,IAEyC,UAD7D/V,EAAIoW,GAAWpW,GAAKgW,KACwDG,IAAY,QAAU97D,EAAI,UAAYC,EAAI,QAAU0lD,GAAImW,GAAW,SAAW97D,EAAI,SAAWC,EAAI,UAAY0lD,GAC3L,CACA,SAASqV,GAAW7hB,EAAGpnC,EAAGC,GACxB,OAAOmnC,EAAI,EAAI,IAAI4hB,GAAO58D,KAAK69D,MAAMhqD,EAAGD,GAAKwjD,GAAYp3D,KAAKogC,KAAKxsB,EAAIA,EAAIC,EAAIA,GAAImnC,GAAK,IAAI4hB,GAAOv9C,IAAKA,IAAK27B,EAC/G,CACA,SAAS4iB,GAAW/7D,GAClB,OAAOA,EAAI,WAAaA,EAAIA,EAAIA,GAAKA,EAAI,EAAI,IAAM,QACrD,CACA,SAASi8D,GAAWj8D,GAClB,OAAOA,EAAI,QAAU7B,KAAKy0B,IAAI5yB,EAAG,EAAI,GAAK,SAAWA,EAAI,EAAI,EAC/D,CACA,SAAS87D,GAAW3f,GAClB,OAAOh+C,KAAKukC,MAAM,KAAOyZ,GAAK,OAAS,MAAQA,EAAI,MAAQh+C,KAAKy0B,IAAIupB,EAAG,EAAI,KAAO,MACpF,CAEA,SAAS2e,GAAO3e,EAAGh2C,EAAG6L,GACpB,OAAOvR,gBAAgBq6D,IAAer6D,KAAK07C,IAAMA,EAAG17C,KAAK0F,IAAMA,OAAG1F,KAAKuR,IAAMA,IAAKrK,UAAUjJ,OAAS,EAAIy9C,aAAa2e,GAAS,IAAIA,GAAO3e,EAAEA,EAAGA,EAAEh2C,EAAGg2C,EAAEnqC,GAAKsoD,GAAa,GAAKne,EAAG2e,GAAQJ,IAAc,IAAII,GAAO3e,EAAGh2C,EAAG6L,EACzN,CACA,SAASkqD,GAAan/D,GACpB,OAAO,IAAI+9D,GAAO/9D,GAAS,GAAIA,GAAS,EAAI,IAAa,IAARA,EACnD,CACA,SAASo/D,GAAap/D,GACpB,OAAOm/D,GAAan/D,GAAS,EAC/B,CArCA6+D,GAAgBpf,SAAW,SAAS9P,GAClC,OAAO,IAAIuuB,GAAO98D,KAAK+B,IAAI,IAAKO,KAAK04C,EAAIoiB,IAAY5zD,UAAUjJ,OAASguC,EAAI,IAAKjsC,KAAKsR,EAAGtR,KAAKuR,EAChG,EACA4pD,GAAgBT,OAAS,SAASzuB,GAChC,OAAO,IAAIuuB,GAAO98D,KAAK+G,IAAI,EAAGzE,KAAK04C,EAAIoiB,IAAY5zD,UAAUjJ,OAASguC,EAAI,IAAKjsC,KAAKsR,EAAGtR,KAAKuR,EAC9F,EACA4pD,GAAgBrf,IAAM,WACpB,OAAOsf,GAAWp7D,KAAK04C,EAAG14C,KAAKsR,EAAGtR,KAAKuR,EACzC,EAoBAtR,EAAG67C,IAAMue,GAUT,IAAIsB,GAAkBtB,GAAOz+D,UAAY,IAAI+9D,GAoB7C,SAASiC,GAAW3+D,GAClB,OAAOA,EAAI,GAAK,IAAMS,KAAK+G,IAAI,EAAGxH,GAAGmH,SAAS,IAAM1G,KAAK+B,IAAI,IAAKxC,GAAGmH,SAAS,GAChF,CACA,SAASy1D,GAAatyD,EAAQu0C,EAAKie,GACjC,IAAyBG,EAAIC,EAAIvlD,EAA7B8mC,EAAI,EAAGh2C,EAAI,EAAG6L,EAAI,EAEtB,GADA2oD,EAAK,mBAAmB2B,KAAKt0D,EAASA,EAAO48B,eAG3C,OADAg2B,EAAKD,EAAG,GAAG71D,MAAM,KACT61D,EAAG,IACV,IAAK,MAEF,OAAOH,EAAI+B,WAAW3B,EAAG,IAAK2B,WAAW3B,EAAG,IAAM,IAAK2B,WAAW3B,EAAG,IAAM,KAG9E,IAAK,MAEF,OAAOre,EAAIigB,GAAmB5B,EAAG,IAAK4B,GAAmB5B,EAAG,IAAK4B,GAAmB5B,EAAG,KAI7F,OAAIvlD,EAAQonD,GAAaxxC,IAAIjjB,IACpBu0C,EAAIlnC,EAAM8mC,EAAG9mC,EAAMlP,EAAGkP,EAAMrD,IAEvB,MAAVhK,GAAuC,MAArBA,EAAOjD,OAAO,IAAemjB,MAAM7S,EAAQqnD,SAAS10D,EAAO/C,MAAM,GAAI,OACnE,IAAlB+C,EAAOtJ,QACTy9C,GAAa,KAAR9mC,IAAiB,EACtB8mC,GAAIA,GAAK,EACTh2C,EAAY,IAARkP,EACJlP,GAAIA,GAAK,EACT6L,EAAY,GAARqD,EACJrD,GAAIA,GAAK,GACkB,IAAlBhK,EAAOtJ,SAChBy9C,GAAa,SAAR9mC,IAAqB,GAC1BlP,GAAa,MAARkP,IAAkB,EACvBrD,EAAY,IAARqD,IAGDknC,EAAIJ,EAAGh2C,EAAG6L,GACnB,CACA,SAASuoD,GAAWpe,EAAGh2C,EAAG6L,GACxB,IAA0F5O,EAAGiB,EAAzFnE,EAAM/B,KAAK+B,IAAIi8C,GAAK,IAAKh2C,GAAK,IAAK6L,GAAK,KAAM9M,EAAM/G,KAAK+G,IAAIi3C,EAAGh2C,EAAG6L,GAAIxT,EAAI0G,EAAMhF,EAAWi5C,GAAKj0C,EAAMhF,GAAO,EASlH,OARI1B,GACF6F,EAAI80C,EAAI,GAAK36C,GAAK0G,EAAMhF,GAAO1B,GAAK,EAAI0G,EAAMhF,GAChCkD,EAAV+4C,GAAKj3C,GAAUiB,EAAI6L,GAAKxT,GAAK2H,EAAI6L,EAAI,EAAI,GAAa7L,GAAKjB,GAAU8M,EAAImqC,GAAK39C,EAAI,GAAa29C,EAAIh2C,GAAK3H,EAAI,EAChH4E,GAAK,KAELA,EAAIoa,IACJnZ,EAAI80C,EAAI,GAAKA,EAAI,EAAI,EAAI/1C,GAEpB,IAAIi3D,GAAOj3D,EAAGiB,EAAG80C,EAC1B,CACA,SAAS+hB,GAAW/e,EAAGh2C,EAAG6L,GAIxB,IAAIhS,EAAIi8D,IAAY,UAHpB9f,EAAIwgB,GAAWxgB,IAGoB,UAFnCh2C,EAAIw2D,GAAWx2D,IAEmC,UADlD6L,EAAI2qD,GAAW3qD,KACmDypD,IAAWx7D,EAAIg8D,IAAY,SAAW9f,EAAI,SAAWh2C,EAAI,QAAU6L,GAAK0pD,IAC1I,OAAOT,GAAO,IAAMh7D,EAAI,GAAI,KAAOD,EAAIC,GAAI,KAAOA,EADuGg8D,IAAY,SAAW9f,EAAI,QAAUh2C,EAAI,SAAW6L,GAAK2pD,KAEpN,CACA,SAASgB,GAAWxgB,GAClB,OAAQA,GAAK,MAAQ,OAASA,EAAI,MAAQh+C,KAAKy0B,KAAKupB,EAAI,MAAQ,MAAO,IACzE,CACA,SAASqgB,GAAmBjjC,GAC1B,IAAI9R,EAAI80C,WAAWhjC,GACnB,MAAkC,MAA3BA,EAAEx0B,OAAOw0B,EAAE76B,OAAS,GAAaP,KAAKukC,MAAU,KAAJjb,GAAYA,CACjE,CAnFA20C,GAAgB5f,SAAW,SAAS9P,GAClCA,EAAIvuC,KAAKy0B,IAAI,GAAIjrB,UAAUjJ,OAASguC,EAAI,GACxC,IAAIyP,EAAI17C,KAAK07C,EAAGh2C,EAAI1F,KAAK0F,EAAG6L,EAAIvR,KAAKuR,EAAG5P,EAAI,GAC5C,OAAK+5C,GAAMh2C,GAAM6L,GACbmqC,GAAKA,EAAI/5C,IAAG+5C,EAAI/5C,GAChB+D,GAAKA,EAAI/D,IAAG+D,EAAI/D,GAChB4P,GAAKA,EAAI5P,IAAG4P,EAAI5P,GACb,IAAI04D,GAAO38D,KAAK+B,IAAI,IAAKi8C,EAAIzP,GAAIvuC,KAAK+B,IAAI,IAAKiG,EAAIumC,GAAIvuC,KAAK+B,IAAI,IAAK8R,EAAI06B,KAJrD,IAAIouB,GAAO14D,EAAGA,EAAGA,EAK9C,EACAg6D,GAAgBjB,OAAS,SAASzuB,GAEhC,OAAO,IAAIouB,IADXpuB,EAAIvuC,KAAKy0B,IAAI,GAAIjrB,UAAUjJ,OAASguC,EAAI,IAClBjsC,KAAK07C,EAAGzP,EAAIjsC,KAAK0F,EAAGumC,EAAIjsC,KAAKuR,EACrD,EACAoqD,GAAgB5B,IAAM,WACpB,OAAOD,GAAW95D,KAAK07C,EAAG17C,KAAK0F,EAAG1F,KAAKuR,EACzC,EACAoqD,GAAgBv3D,SAAW,WACzB,MAAO,IAAMw3D,GAAW57D,KAAK07C,GAAKkgB,GAAW57D,KAAK0F,GAAKk2D,GAAW57D,KAAKuR,EACzE,EAkEA,IAAIyqD,GAAe/7D,EAAG0D,IAAI,CACxBw4D,UAAW,SACXC,aAAc,SACdC,KAAM,MACNC,WAAY,QACZC,MAAO,SACPC,MAAO,SACPC,OAAQ,SACRC,MAAO,EACPC,eAAgB,SAChBC,KAAM,IACNC,WAAY,QACZC,MAAO,SACPC,UAAW,SACXC,UAAW,QACXC,WAAY,QACZC,UAAW,SACXC,MAAO,SACPC,eAAgB,QAChBC,SAAU,SACVC,QAAS,SACTC,KAAM,MACNC,SAAU,IACVC,SAAU,MACVC,cAAe,SACfC,SAAU,SACVC,UAAW,MACXC,SAAU,SACVC,UAAW,SACXC,YAAa,QACbC,eAAgB,QAChBC,WAAY,SACZC,WAAY,SACZC,QAAS,QACTC,WAAY,SACZC,aAAc,QACdC,cAAe,QACfC,cAAe,QACfC,cAAe,QACfC,cAAe,MACfC,WAAY,QACZC,SAAU,SACVC,YAAa,MACbC,QAAS,QACTC,QAAS,QACTC,WAAY,QACZC,UAAW,SACXC,YAAa,SACbC,YAAa,QACbC,QAAS,SACTC,UAAW,SACXC,WAAY,SACZC,KAAM,SACNC,UAAW,SACXC,KAAM,QACNC,MAAO,MACPC,YAAa,SACbC,KAAM,QACNC,SAAU,SACVC,QAAS,SACTC,UAAW,SACXC,OAAQ,QACRC,MAAO,SACPC,MAAO,SACPC,SAAU,SACVC,cAAe,SACfC,UAAW,QACXC,aAAc,SACdC,UAAW,SACXC,WAAY,SACZC,UAAW,SACXC,qBAAsB,SACtBC,UAAW,SACXC,WAAY,QACZC,UAAW,SACXC,UAAW,SACXC,YAAa,SACbC,cAAe,QACfC,aAAc,QACdC,eAAgB,QAChBC,eAAgB,QAChBC,eAAgB,SAChBC,YAAa,SACbC,KAAM,MACNC,UAAW,QACXC,MAAO,SACPC,QAAS,SACTC,OAAQ,QACRC,iBAAkB,QAClBC,WAAY,IACZC,aAAc,SACdC,aAAc,QACdC,eAAgB,QAChBC,gBAAiB,QACjBC,kBAAmB,MACnBC,gBAAiB,QACjBC,gBAAiB,SACjBC,aAAc,QACdC,UAAW,SACXC,UAAW,SACXC,SAAU,SACVC,YAAa,SACbC,KAAM,IACNC,QAAS,SACTC,MAAO,QACPC,UAAW,QACXC,OAAQ,SACRC,UAAW,SACXC,OAAQ,SACRC,cAAe,SACfC,UAAW,SACXC,cAAe,SACfC,cAAe,SACfC,WAAY,SACZC,UAAW,SACXC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,WAAY,SACZC,OAAQ,QACRC,cAAe,QACfC,IAAK,SACLC,UAAW,SACXC,UAAW,QACXC,YAAa,QACbC,OAAQ,SACRC,WAAY,SACZC,SAAU,QACVC,SAAU,SACVC,OAAQ,SACRC,OAAQ,SACRC,QAAS,QACTC,UAAW,QACXC,UAAW,QACXC,UAAW,QACXC,KAAM,SACNC,YAAa,MACbC,UAAW,QACXC,IAAK,SACLC,KAAM,MACNC,QAAS,SACTC,OAAQ,SACRC,UAAW,QACXC,OAAQ,SACRC,MAAO,SACPC,MAAO,SACPC,WAAY,SACZC,OAAQ,SACRC,YAAa,WAKf,SAASC,GAAWtoE,GAClB,MAAoB,mBAANA,EAAmBA,EAAI,WACnC,OAAOA,CACT,CACF,CAGA,SAASuoE,GAAW36B,GAClB,OAAO,SAASP,EAAKC,EAAUpjB,GAG7B,OAFyB,IAArBjgB,UAAUjJ,QAAoC,mBAAbssC,IAAyBpjB,EAAWojB,EACzEA,EAAW,MACJk7B,GAAOn7B,EAAKC,EAAUM,EAAU1jB,EACzC,CACF,CACA,SAASs+C,GAAOn7B,EAAKC,EAAUM,EAAU1jB,GACvC,IAAIujB,EAAM,CAAC,EAAGghB,EAAWzrD,EAAGyrD,SAAS,aAAc,WAAY,OAAQ,SAAUlhB,EAAU,CAAC,EAAGk7B,EAAU,IAAIC,eAAkBC,EAAe,KAK9I,SAASC,IACP,IAA6BC,EAAzB96B,EAAS06B,EAAQ16B,OACrB,IAAKA,GAwET,SAA2B06B,GACzB,IAAItqD,EAAOsqD,EAAQE,aACnB,OAAOxqD,GAAiB,SAATA,EAAkBsqD,EAAQ76B,SAAW66B,EAAQ56B,YAC9D,CA3EmBi7B,CAAkBL,IAAY16B,GAAU,KAAOA,EAAS,KAAkB,MAAXA,EAAgB,CAC5F,IACE86B,EAASj7B,EAAS/tC,KAAK4tC,EAAKg7B,EAC9B,CAAE,MAAOjlD,GAEP,YADAirC,EAAS3lC,MAAMjpB,KAAK4tC,EAAKjqB,EAE3B,CACAirC,EAASvzB,KAAKr7B,KAAK4tC,EAAKo7B,EAC1B,MACEpa,EAAS3lC,MAAMjpB,KAAK4tC,EAAKg7B,EAE7B,CAsDA,OAvEI1lE,KAAKgmE,kBAAoB,oBAAqBN,IAAY,oBAAoBzW,KAAK3kB,KAAMo7B,EAAU,IAAIM,gBAC3G,WAAYN,EAAUA,EAAQO,OAASP,EAAQQ,QAAUL,EAAUH,EAAQS,mBAAqB,WAC9FT,EAAQU,WAAa,GAAKP,GAC5B,EAeAH,EAAQW,WAAa,SAASjvB,GAC5B,IAAIj6C,EAAI8C,EAAGm3C,MACXn3C,EAAGm3C,MAAQA,EACX,IACEsU,EAAS4a,SAASxpE,KAAK4tC,EAAKg7B,EAC9B,CAAE,QACAzlE,EAAGm3C,MAAQj6C,CACb,CACF,EACAutC,EAAIC,OAAS,SAAS+C,EAAMpxC,GAE1B,OADAoxC,GAAQA,EAAO,IAAIvJ,cACfj9B,UAAUjJ,OAAS,EAAUusC,EAAQkD,IAC5B,MAATpxC,SAAsBkuC,EAAQkD,GAAYlD,EAAQkD,GAAQpxC,EAAQ,GAC/DouC,EACT,EACAA,EAAIH,SAAW,SAASjuC,GACtB,OAAK4K,UAAUjJ,QACfssC,EAAoB,MAATjuC,EAAgB,KAAOA,EAAQ,GACnCouC,GAFuBH,CAGhC,EACAG,EAAIk7B,aAAe,SAAStpE,GAC1B,OAAK4K,UAAUjJ,QACf2nE,EAAetpE,EACRouC,GAFuBk7B,CAGhC,EACAl7B,EAAIG,SAAW,SAASvuC,GAEtB,OADAuuC,EAAWvuC,EACJouC,CACT,EACA,CAAE,MAAO,QAAS9rC,SAAQ,SAAS0rD,GACjC5f,EAAI4f,GAAU,WACZ,OAAO5f,EAAI67B,KAAK1kE,MAAM6oC,EAAK,CAAE4f,GAAS9mD,OAAO6hD,EAASn+C,YACxD,CACF,IACAwjC,EAAI67B,KAAO,SAASjc,EAAQpkD,EAAMihB,GAIhC,GAHyB,IAArBjgB,UAAUjJ,QAAgC,mBAATiI,IAAqBihB,EAAWjhB,EAAMA,EAAO,MAClFw/D,EAAQc,KAAKlc,EAAQhgB,GAAK,GACV,MAAZC,GAAsB,WAAYC,IAAUA,EAAgB,OAAID,EAAW,QAC3Em7B,EAAQe,iBAAkB,IAAK,IAAI/4B,KAAQlD,EAASk7B,EAAQe,iBAAiB/4B,EAAMlD,EAAQkD,IAQ/F,OAPgB,MAAZnD,GAAoBm7B,EAAQgB,kBAAkBhB,EAAQgB,iBAAiBn8B,GACvD,MAAhBq7B,IAAsBF,EAAQE,aAAeA,GACjC,MAAZz+C,GAAkBujB,EAAIxxB,GAAG,QAASiO,GAAUjO,GAAG,QAAQ,SAASwsD,GAClEv+C,EAAS,KAAMu+C,EACjB,IACAha,EAASib,WAAW7pE,KAAK4tC,EAAKg7B,GAC9BA,EAAQa,KAAa,MAARrgE,EAAe,KAAOA,GAC5BwkC,CACT,EACAA,EAAIk8B,MAAQ,WAEV,OADAlB,EAAQkB,QACDl8B,CACT,EACAzqC,EAAGqrD,OAAO5gB,EAAKghB,EAAU,MACN,MAAZvkC,EAAmBujB,EAAMA,EAAIlgB,IAEtC,SAA4BrD,GAC1B,OAA2B,IAApBA,EAASlpB,OAAe,SAAS8nB,EAAO2/C,GAC7Cv+C,EAAkB,MAATpB,EAAgB2/C,EAAU,KACrC,EAAIv+C,CACN,CAN0C0/C,CAAmB1/C,GAC7D,CA3FA60C,GAAap9D,SAAQ,SAASL,EAAKjC,GACjC0/D,GAAavxC,IAAIlsB,EAAKk9D,GAAan/D,GACrC,IAMA2D,EAAG6mE,QAAUvB,GACbtlE,EAAGyqC,IAAM86B,GAAWpb,GA4FpBnqD,EAAG8mE,IAAM,SAASC,EAAWz8B,GAC3B,IAAI08B,EAAW,IAAIvY,OAAO,KAAOsY,EAAY,OAAQE,EAAgBF,EAAUG,WAAW,GAC1F,SAASJ,EAAIz8B,EAAK2e,EAAK9hC,GACjBjgB,UAAUjJ,OAAS,IAAGkpB,EAAW8hC,EAAKA,EAAM,MAChD,IAAIve,EAAM+6B,GAAOn7B,EAAKC,EAAiB,MAAP0e,EAAcpe,EAAWu8B,EAAcne,GAAM9hC,GAI7E,OAHAujB,EAAIue,IAAM,SAASS,GACjB,OAAOxiD,UAAUjJ,OAASysC,EAAIG,SAAsB,OAAZoe,EAAMS,GAAa7e,EAAWu8B,EAAc1d,IAAMT,CAC5F,EACOve,CACT,CACA,SAASG,EAAS66B,GAChB,OAAOqB,EAAIv/C,MAAMk+C,EAAQ56B,aAC3B,CACA,SAASs8B,EAAcpgD,GACrB,OAAO,SAAS0+C,GACd,OAAOqB,EAAIv/C,MAAMk+C,EAAQ56B,aAAc9jB,EACzC,CACF,CA6EA,SAASqgD,EAAUpe,GACjB,OAAOA,EAAItlD,IAAI2jE,GAAaC,KAAKP,EACnC,CACA,SAASM,EAAY9tE,GACnB,OAAOytE,EAAShY,KAAKz1D,GAAQ,IAAMA,EAAKuF,QAAQ,MAAO,MAAQ,IAAMvF,CACvE,CACA,OAlFAutE,EAAIv/C,MAAQ,SAAShuB,EAAMwtB,GACzB,IAAI7pB,EACJ,OAAO4pE,EAAIv7B,UAAUhyC,GAAM,SAASyvD,EAAKtnD,GACvC,GAAIxE,EAAG,OAAOA,EAAE8rD,EAAKtnD,EAAI,GACzB,IAAI2P,EAAI,IAAIwW,SAAS,IAAK,WAAamhC,EAAItlD,KAAI,SAAS+pC,EAAM/rC,GAC5D,OAAOupC,KAAKs8B,UAAU95B,GAAQ,OAAS/rC,EAAI,GAC7C,IAAG4lE,KAAK,KAAO,KACfpqE,EAAI6pB,EAAI,SAASiiC,EAAKtnD,GACpB,OAAOqlB,EAAE1V,EAAE23C,GAAMtnD,EACnB,EAAI2P,CACN,GACF,EACAy1D,EAAIv7B,UAAY,SAAShyC,EAAMwtB,GAC7B,IAAkEpE,EAAG6kD,EAAjEC,EAAM,CAAC,EAAGC,EAAM,CAAC,EAAGzyC,EAAO,GAAI0yC,EAAIpuE,EAAKyE,OAAQ4pE,EAAI,EAAGhqE,EAAI,EAC/D,SAASiqE,IACP,GAAID,GAAKD,EAAG,OAAOD,EACnB,GAAIF,EAAK,OAAOA,GAAM,EAAOC,EAC7B,IAAItyC,EAAIyyC,EACR,GAA2B,KAAvBruE,EAAK2tE,WAAW/xC,GAAW,CAE7B,IADA,IAAIzzB,EAAIyzB,EACDzzB,IAAMimE,GACX,GAA2B,KAAvBpuE,EAAK2tE,WAAWxlE,GAAW,CAC7B,GAA+B,KAA3BnI,EAAK2tE,WAAWxlE,EAAI,GAAW,QACjCA,CACJ,CAUF,OARAkmE,EAAIlmE,EAAI,EAEE,MADNm3B,EAAIt/B,EAAK2tE,WAAWxlE,EAAI,KAE1B8lE,GAAM,EACyB,KAA3BjuE,EAAK2tE,WAAWxlE,EAAI,MAAakmE,GACtB,KAAN/uC,IACT2uC,GAAM,GAEDjuE,EAAKgL,MAAM4wB,EAAI,EAAGzzB,GAAG5C,QAAQ,MAAO,IAC7C,CACA,KAAO8oE,EAAID,GAAG,CACZ,IAAI9uC,EAA0BmT,EAAI,EAClC,GAAU,MADNnT,EAAIt/B,EAAK2tE,WAAWU,MACVJ,GAAM,OAAW,GAAU,KAAN3uC,EACjC2uC,GAAM,EACqB,KAAvBjuE,EAAK2tE,WAAWU,OAAaA,IAAK57B,QACjC,GAAInT,IAAMouC,EAAe,SAChC,OAAO1tE,EAAKgL,MAAM4wB,EAAGyyC,EAAI57B,EAC3B,CACA,OAAOzyC,EAAKgL,MAAM4wB,EACpB,CACA,MAAQxS,EAAIklD,OAAaH,GAAK,CAE5B,IADA,IAAIr2D,EAAI,GACDsR,IAAM8kD,GAAO9kD,IAAM+kD,GACxBr2D,EAAExP,KAAK8gB,GACPA,EAAIklD,IAEF9gD,GAAwB,OAAlB1V,EAAI0V,EAAE1V,EAAGzT,OACnBq3B,EAAKpzB,KAAKwP,EACZ,CACA,OAAO4jB,CACT,EACA6xC,EAAIx/D,OAAS,SAAS2tB,GACpB,GAAI73B,MAAMD,QAAQ83B,EAAK,IAAK,OAAO6xC,EAAIgB,WAAW7yC,GAClD,IAAI8yC,EAAW,IAAI7d,EAAU8d,EAAS,GAQtC,OAPA/yC,EAAKt2B,SAAQ,SAASqqD,GACpB,IAAK,IAAIif,KAASjf,EACX+e,EAASvjB,IAAIyjB,IAChBD,EAAOnmE,KAAKkmE,EAASnlD,IAAIqlD,GAG/B,IACO,CAAED,EAAOtkE,IAAI2jE,GAAaC,KAAKP,IAAaxjE,OAAO0xB,EAAKvxB,KAAI,SAASslD,GAC1E,OAAOgf,EAAOtkE,KAAI,SAASukE,GACzB,OAAOZ,EAAYre,EAAIif,GACzB,IAAGX,KAAKP,EACV,KAAIO,KAAK,KACX,EACAR,EAAIgB,WAAa,SAAS7yC,GACxB,OAAOA,EAAKvxB,IAAI0jE,GAAWE,KAAK,KAClC,EAOOR,CACT,EACA9mE,EAAGwrC,IAAMxrC,EAAG8mE,IAAI,IAAK,YACrB9mE,EAAGyrC,IAAMzrC,EAAG8mE,IAAI,KAAK,6BACrB,IAAIoB,GAAoBC,GAAoBC,GAAmBC,GAAkBC,GAAiBvoE,KAAKuqD,EAAgBvqD,KAAM,2BAA6B,SAASmnB,GACjKb,WAAWa,EAAU,GACvB,EAIA,SAASqhD,GAASrhD,EAAUshD,EAAOC,GACjC,IAAI7qE,EAAIqJ,UAAUjJ,OACdJ,EAAI,IAAG4qE,EAAQ,GACf5qE,EAAI,IAAG6qE,EAAOt3D,KAAK40C,OACvB,IAAyB5+B,EAAQ,CAC/B0R,EAAG3R,EACHvE,EAFS8lD,EAAOD,EAGhB5qE,EAAG,MASL,OAPIuqE,GAAoBA,GAAmBvqE,EAAIupB,EAAY+gD,GAAqB/gD,EAChFghD,GAAqBhhD,EAChBihD,KACHC,GAAmBjiD,aAAaiiD,IAChCD,GAAoB,EACpBE,GAAeI,KAEVvhD,CACT,CACA,SAASuhD,KACP,IAAI3iB,EAAM4iB,KAAiBH,EAAQI,KAAmB7iB,EAClDyiB,EAAQ,IACN16C,SAAS06C,KACXpiD,aAAaiiD,IACbA,GAAmBhiD,WAAWqiD,GAAeF,IAE/CJ,GAAoB,IAEpBA,GAAoB,EACpBE,GAAeI,IAEnB,CAKA,SAASC,KAEP,IADA,IAAI5iB,EAAM50C,KAAK40C,MAAO5+B,EAAQ+gD,GACvB/gD,GACD4+B,GAAO5+B,EAAMxE,GAAKwE,EAAM0R,EAAEktB,EAAM5+B,EAAMxE,KAAIwE,EAAM0R,EAAI,MACxD1R,EAAQA,EAAMvpB,EAEhB,OAAOmoD,CACT,CACA,SAAS6iB,KAEP,IADA,IAAIC,EAAIl6B,EAAKu5B,GAAoBl9D,EAAOpD,IACjC+mC,GACDA,EAAG9V,GACD8V,EAAGhsB,EAAI3X,IAAMA,EAAO2jC,EAAGhsB,GAC3BgsB,GAAMk6B,EAAKl6B,GAAI/wC,GAEf+wC,EAAKk6B,EAAKA,EAAGjrE,EAAI+wC,EAAG/wC,EAAIsqE,GAAqBv5B,EAAG/wC,EAIpD,OADAuqE,GAAqBU,EACd79D,CACT,CACA,SAAS89D,GAAoBxpE,EAAGkR,GAC9B,OAAOA,GAAKlR,EAAI7B,KAAKC,KAAKD,KAAKy4D,IAAI52D,GAAK7B,KAAKsrE,MAAQ,EACvD,CA7DA/oE,EAAGmnB,MAAQ,WACTohD,GAAS3mE,MAAM7B,KAAMkH,UACvB,EAgCAjH,EAAGmnB,MAAMb,MAAQ,WACfqiD,KACAC,IACF,EAyBA5oE,EAAGgiC,MAAQ,SAAS1iC,EAAG1B,GACrB,OAAOA,EAAIH,KAAKukC,MAAM1iC,GAAK1B,EAAIH,KAAKy0B,IAAI,GAAIt0B,KAAOA,EAAIH,KAAKukC,MAAM1iC,EACpE,EACA,IAAI0pE,GAAoB,CAAE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAMtlE,KAW/G,SAAyB5F,EAAG4D,GAC1B,IAAIsqC,EAAIvuC,KAAKy0B,IAAI,GAAiB,EAAb+L,EAAI,EAAIv8B,IAC7B,MAAO,CACLzB,MAAOyB,EAAI,EAAI,SAAS5D,GACtB,OAAOA,EAAIkuC,CACb,EAAI,SAASluC,GACX,OAAOA,EAAIkuC,CACb,EACAi9B,OAAQnrE,EAEZ,IACA,SAASorE,GAAuBC,GAC9B,IAAIC,EAAiBD,EAAOz3C,QAAS23C,EAAmBF,EAAOG,UAAWC,EAAkBJ,EAAOK,SAAUC,EAAkBN,EAAOO,SAAUC,EAAcJ,GAAmBF,EAAmB,SAAShtE,EAAOoD,GAElN,IADA,IAAIiC,EAAIrF,EAAM2B,OAAQ2kB,EAAI,GAAIwS,EAAI,EAAG1vB,EAAI8jE,EAAgB,GAAIvrE,EAAS,EAC/D0D,EAAI,GAAK+D,EAAI,IACdzH,EAASyH,EAAI,EAAIhG,IAAOgG,EAAIhI,KAAK+G,IAAI,EAAG/E,EAAQzB,IACpD2kB,EAAE9gB,KAAKxF,EAAMutE,UAAUloE,GAAK+D,EAAG/D,EAAI+D,OAC9BzH,GAAUyH,EAAI,GAAKhG,KACxBgG,EAAI8jE,EAAgBp0C,GAAKA,EAAI,GAAKo0C,EAAgBvrE,QAEpD,OAAO2kB,EAAEwsB,UAAUm4B,KAAK+B,EAC1B,EAAIlf,EACJ,OAAO,SAAS0f,GACd,IAAInY,EAAQoY,GAAalO,KAAKiO,GAAYE,EAAOrY,EAAM,IAAM,IAAKsY,EAAQtY,EAAM,IAAM,IAAK//B,EAAO+/B,EAAM,IAAM,IAAKuX,EAASvX,EAAM,IAAM,GAAIuY,EAAQvY,EAAM,GAAIjyD,GAASiyD,EAAM,GAAIwY,EAAQxY,EAAM,GAAIyY,EAAYzY,EAAM,GAAIv2C,EAAOu2C,EAAM,GAAIzxD,EAAQ,EAAGsiC,EAAS,GAAI6nC,EAAS,GAAI54C,GAAU,EAAOD,GAAW,EAM3S,OALI44C,IAAWA,GAAaA,EAAUP,UAAU,KAC5CK,GAAkB,MAATF,GAA0B,MAAVC,KAC3BC,EAAQF,EAAO,IACfC,EAAQ,KAEF7uD,GACP,IAAK,IACJ+uD,GAAQ,EACR/uD,EAAO,IACP,MAED,IAAK,IACJlb,EAAQ,IACRmqE,EAAS,IACTjvD,EAAO,IACP,MAED,IAAK,IACJlb,EAAQ,IACRmqE,EAAS,IACTjvD,EAAO,IACP,MAED,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACW,MAAX8tD,IAAgB1mC,EAAS,IAAMpnB,EAAK+oB,eAEzC,IAAK,IACJ3S,GAAW,EAEZ,IAAK,IACJC,GAAU,EACV24C,EAAY,EACZ,MAED,IAAK,IACJlqE,GAAS,EACTkb,EAAO,IAGM,MAAX8tD,IAAgB1mC,EAASknC,EAAgB,GAAIW,EAASX,EAAgB,IAC9D,KAARtuD,GAAgBgvD,IAAWhvD,EAAO,KACrB,MAAbgvD,IACU,KAARhvD,EAAagvD,EAAY1sE,KAAK+G,IAAI,EAAG/G,KAAK+B,IAAI,GAAI2qE,IAA8B,KAARhvD,GAAuB,KAARA,IAAagvD,EAAY1sE,KAAK+G,IAAI,EAAG/G,KAAK+B,IAAI,GAAI2qE,MAE/IhvD,EAAOkvD,GAAgB9/C,IAAIpP,IAASmvD,GACpC,IAAIC,EAASN,GAASC,EACtB,OAAO,SAAS7tE,GACd,IAAImuE,EAAaJ,EACjB,GAAI54C,GAAWn1B,EAAQ,EAAG,MAAO,GACjC,IAAIouE,EAAWpuE,EAAQ,GAAe,IAAVA,GAAe,EAAIA,EAAQ,GAAKA,GAASA,EAAO,KAAgB,MAATs1B,EAAe,GAAKA,EACvG,GAAI1xB,EAAQ,EAAG,CACb,IAAIwQ,EAAOzQ,EAAG0qE,aAAaruE,EAAO8tE,GAClC9tE,EAAQoU,EAAKxQ,MAAM5D,GACnBmuE,EAAa/5D,EAAKw4D,OAASmB,CAC7B,MACE/tE,GAAS4D,EAGX,IAAgCqwD,EAAQqa,EAApCjpE,GADJrF,EAAQ8e,EAAK9e,EAAO8tE,IACNS,YAAY,KAC1B,GAAIlpE,EAAI,EAAG,CACT,IAAIyzB,EAAI5D,EAAWl1B,EAAMuuE,YAAY,MAAQ,EACzCz1C,EAAI,GAAGm7B,EAASj0D,EAAOsuE,EAAQ,KAASra,EAASj0D,EAAMutE,UAAU,EAAGz0C,GAAIw1C,EAAQtuE,EAAMutE,UAAUz0C,GACtG,MACEm7B,EAASj0D,EAAMutE,UAAU,EAAGloE,GAC5BipE,EAAQvB,EAAiB/sE,EAAMutE,UAAUloE,EAAI,IAE1CuoE,GAASC,IAAO5Z,EAASqZ,EAAYrZ,EAAQ1oD,MAClD,IAAI5J,EAASukC,EAAOvkC,OAASsyD,EAAOtyD,OAAS2sE,EAAM3sE,QAAUusE,EAAS,EAAIE,EAASzsE,QAASsS,EAAUtS,EAASyB,EAAQ,IAAIrC,MAAMY,EAASyB,EAAQzB,EAAS,GAAGspE,KAAKyC,GAAQ,GAI3K,OAHIQ,IAAQja,EAASqZ,EAAYr5D,EAAUggD,EAAQhgD,EAAQtS,OAASyB,EAAQkrE,EAAM3sE,OAAS4J,MAC3F6iE,GAAYloC,EACZlmC,EAAQi0D,EAASqa,GACC,MAAVX,EAAgBS,EAAWpuE,EAAQiU,EAAoB,MAAV05D,EAAgB15D,EAAUm6D,EAAWpuE,EAAkB,MAAV2tE,EAAgB15D,EAAQs5D,UAAU,EAAG5rE,IAAW,GAAKysE,EAAWpuE,EAAQiU,EAAQs5D,UAAU5rE,GAAUysE,GAAYF,EAASluE,EAAQiU,EAAUjU,IAAUmuE,CACzP,CACF,CACF,CA/GAxqE,EAAG0qE,aAAe,SAASruE,EAAO8tE,GAChC,IAAIzoE,EAAI,EAOR,OANIrF,GAASA,KACPA,EAAQ,IAAGA,IAAU,GACrB8tE,IAAW9tE,EAAQ2D,EAAGgiC,MAAM3lC,EAAOysE,GAAoBzsE,EAAO8tE,KAClEzoE,EAAI,EAAIjE,KAAKiqD,MAAM,MAAQjqD,KAAKy4D,IAAI75D,GAASoB,KAAKsrE,MAClDrnE,EAAIjE,KAAK+G,KAAK,GAAI/G,KAAK+B,IAAI,GAA8B,EAA1B/B,KAAKiqD,OAAOhmD,EAAI,GAAK,MAE/CsnE,GAAkB,EAAItnE,EAAI,EACnC,EAuGA,IAAIooE,GAAe,yEACfO,GAAkBrqE,EAAG0D,IAAI,CAC3B4N,EAAG,SAAShS,GACV,OAAOA,EAAE6E,SAAS,EACpB,EACA00B,EAAG,SAASv5B,GACV,OAAOuzB,OAAOg4C,aAAavrE,EAC7B,EACApC,EAAG,SAASoC,GACV,OAAOA,EAAE6E,SAAS,EACpB,EACA7E,EAAG,SAASA,GACV,OAAOA,EAAE6E,SAAS,GACpB,EACA2mE,EAAG,SAASxrE,GACV,OAAOA,EAAE6E,SAAS,IAAIomD,aACxB,EACA9kD,EAAG,SAASnG,EAAGkR,GACb,OAAOlR,EAAEyrE,YAAYv6D,EACvB,EACAgQ,EAAG,SAASlhB,EAAGkR,GACb,OAAOlR,EAAE0rE,cAAcx6D,EACzB,EACAuW,EAAG,SAASznB,EAAGkR,GACb,OAAOlR,EAAEmM,QAAQ+E,EACnB,EACAirC,EAAG,SAASn8C,EAAGkR,GACb,OAAQlR,EAAIU,EAAGgiC,MAAM1iC,EAAGwpE,GAAoBxpE,EAAGkR,KAAK/E,QAAQhO,KAAK+G,IAAI,EAAG/G,KAAK+B,IAAI,GAAIspE,GAAoBxpE,GAAK,EAAI,OAAQkR,KAC5H,IAEF,SAAS85D,GAAsBhrE,GAC7B,OAAOA,EAAI,EACb,CACA,IAAI2rE,GAAUjrE,EAAGgL,KAAO,CAAC,EAAGkgE,GAAU/5D,KACtC,SAASg6D,KACPprE,KAAK0pD,EAAI,IAAIt4C,KAAKlK,UAAUjJ,OAAS,EAAImT,KAAKi6D,IAAIxpE,MAAM7B,KAAMkH,WAAaA,UAAU,GACvF,CACAkkE,GAAYxvE,UAAY,CACtB8Z,QAAS,WACP,OAAO1V,KAAK0pD,EAAE4hB,YAChB,EACA71D,OAAQ,WACN,OAAOzV,KAAK0pD,EAAE6hB,WAChB,EACAh2B,YAAa,WACX,OAAOv1C,KAAK0pD,EAAE8hB,gBAChB,EACAh2D,SAAU,WACR,OAAOxV,KAAK0pD,EAAE+hB,aAChB,EACAp2D,gBAAiB,WACf,OAAOrV,KAAK0pD,EAAEgiB,oBAChB,EACAn2D,WAAY,WACV,OAAOvV,KAAK0pD,EAAEiiB,eAChB,EACAh2D,SAAU,WACR,OAAO3V,KAAK0pD,EAAEkiB,aAChB,EACAt2D,WAAY,WACV,OAAOtV,KAAK0pD,EAAEmiB,eAChB,EACAp5B,QAAS,WACP,OAAOzyC,KAAK0pD,EAAEjX,SAChB,EACAq5B,kBAAmB,WACjB,OAAO,CACT,EACAroB,QAAS,WACP,OAAOzjD,KAAK0pD,EAAEjG,SAChB,EACAsoB,QAAS,WACPC,GAAkBC,WAAWpqE,MAAM7B,KAAK0pD,EAAGxiD,UAC7C,EACAglE,OAAQ,WACNF,GAAkBG,UAAUtqE,MAAM7B,KAAK0pD,EAAGxiD,UAC5C,EACAklE,YAAa,WACXJ,GAAkBK,eAAexqE,MAAM7B,KAAK0pD,EAAGxiD,UACjD,EACAolE,SAAU,WACRN,GAAkBO,YAAY1qE,MAAM7B,KAAK0pD,EAAGxiD,UAC9C,EACAslE,gBAAiB,WACfR,GAAkBS,mBAAmB5qE,MAAM7B,KAAK0pD,EAAGxiD,UACrD,EACAwlE,WAAY,WACVV,GAAkBW,cAAc9qE,MAAM7B,KAAK0pD,EAAGxiD,UAChD,EACA0lE,SAAU,WACRZ,GAAkBa,YAAYhrE,MAAM7B,KAAK0pD,EAAGxiD,UAC9C,EACA4lE,WAAY,WACVd,GAAkBe,cAAclrE,MAAM7B,KAAK0pD,EAAGxiD,UAChD,EACA8lE,QAAS,WACPhB,GAAkBgB,QAAQnrE,MAAM7B,KAAK0pD,EAAGxiD,UAC1C,GAEF,IAAI8kE,GAAoB56D,KAAKxV,UAC7B,SAASqxE,GAAiBtmB,EAAO/O,EAAM1lB,GACrC,SAAS+P,EAAMr2B,GACb,IAAI2zC,EAAKoH,EAAM/6C,GAAOs2B,EAAK2Y,EAAO0E,EAAI,GACtC,OAAO3zC,EAAO2zC,EAAKrd,EAAKt2B,EAAO2zC,EAAKrd,CACtC,CACA,SAASvkC,EAAKiO,GAEZ,OADAgsC,EAAKhsC,EAAO+6C,EAAM,IAAIwkB,GAAQv/D,EAAO,IAAK,GACnCA,CACT,CACA,SAASivC,EAAOjvC,EAAMqgC,GAEpB,OADA2L,EAAKhsC,EAAO,IAAIu/D,IAASv/D,GAAOqgC,GACzBrgC,CACT,CACA,SAASxL,EAAM0oE,EAAIl6B,EAAIs+B,GACrB,IAAIjiE,EAAOtN,EAAKmrE,GAAKqE,EAAQ,GAC7B,GAAID,EAAK,EACP,KAAOjiE,EAAO2jC,GACN1c,EAAOjnB,GAAQiiE,GAAKC,EAAMrrE,KAAK,IAAIsP,MAAMnG,IAC/C2sC,EAAK3sC,EAAM,QAGb,KAAOA,EAAO2jC,GAAIu+B,EAAMrrE,KAAK,IAAIsP,MAAMnG,IAAQ2sC,EAAK3sC,EAAM,GAE5D,OAAOkiE,CACT,CAWAxmB,EAAMgB,MAAQhB,EACdA,EAAM1kB,MAAQA,EACd0kB,EAAMhpD,KAAOA,EACbgpD,EAAM9L,OAASA,EACf8L,EAAMvmD,MAAQA,EACd,IAAI8U,EAAMyxC,EAAMzxC,IAAMk4D,GAAqBzmB,GAM3C,OALAzxC,EAAIyyC,MAAQzyC,EACZA,EAAI+sB,MAAQmrC,GAAqBnrC,GACjC/sB,EAAIvX,KAAOyvE,GAAqBzvE,GAChCuX,EAAI2lC,OAASuyB,GAAqBvyB,GAClC3lC,EAAI9U,MApBJ,SAAmB0oE,EAAIl6B,EAAIs+B,GACzB,IACE/B,GAAUC,GACV,IAAIl2D,EAAM,IAAIk2D,GAEd,OADAl2D,EAAIw0C,EAAIof,EACD1oE,EAAM8U,EAAK05B,EAAIs+B,EACxB,CAAE,QACA/B,GAAU/5D,IACZ,CACF,EAYOu1C,CACT,CACA,SAASymB,GAAqB9iB,GAC5B,OAAO,SAAS1+C,EAAMqgC,GACpB,IACEk/B,GAAUC,GACV,IAAIl2D,EAAM,IAAIk2D,GAEd,OADAl2D,EAAIw0C,EAAI99C,EACD0+C,EAAOp1C,EAAK+2B,GAAGyd,CACxB,CAAE,QACAyhB,GAAU/5D,IACZ,CACF,CACF,CAiDA,SAASi8D,GAAqBjE,GAC5B,IAAIkE,EAAkBlE,EAAOmE,SAAUC,EAAcpE,EAAOx9D,KAAM6hE,EAAcrE,EAAOn+D,KAAMyiE,EAAiBtE,EAAOuE,QAASC,EAAcxE,EAAOyE,KAAMC,EAAmB1E,EAAO2E,UAAWC,EAAgB5E,EAAO6E,OAAQC,EAAqB9E,EAAO+E,YACzP,SAASC,EAAeC,GACtB,IAAIxwE,EAAIwwE,EAASpwE,OACjB,SAASsJ,EAAOqE,GAEd,IADA,IAAgCktB,EAAGroB,EAAGuW,EAAlCkJ,EAAS,GAAIvuB,GAAK,EAAGyzB,EAAI,IACpBzzB,EAAI9D,GACoB,KAA3BwwE,EAASlH,WAAWxlE,KACtBuuB,EAAOpuB,KAAKusE,EAAS7pE,MAAM4wB,EAAGzzB,IAC4B,OAArD8O,EAAI69D,GAAmBx1C,EAAIu1C,EAAS/pE,SAAS3C,OAAcm3B,EAAIu1C,EAAS/pE,SAAS3C,KAClFqlB,EAAIunD,EAAgBz1C,MAAIA,EAAI9R,EAAEpb,EAAW,MAAL6E,EAAkB,MAANqoB,EAAY,IAAM,IAAMroB,IAC5Eyf,EAAOpuB,KAAKg3B,GACZ1D,EAAIzzB,EAAI,GAIZ,OADAuuB,EAAOpuB,KAAKusE,EAAS7pE,MAAM4wB,EAAGzzB,IACvBuuB,EAAOq3C,KAAK,GACrB,CA0BA,OAzBAhgE,EAAOigB,MAAQ,SAAS0I,GACtB,IAAInyB,EAAI,CACNyB,EAAG,KACHuoD,EAAG,EACHhqD,EAAG,EACH2pD,EAAG,EACH8mB,EAAG,EACH7Y,EAAG,EACH8Y,EAAG,EACHC,EAAG,MAEL,GADOC,EAAc5wE,EAAGswE,EAAUn+C,EAAQ,IACjCA,EAAOjyB,OAAQ,OAAO,KAC3B,MAAOF,IAAGA,EAAE2pD,EAAI3pD,EAAE2pD,EAAI,GAAW,GAAN3pD,EAAE0S,GACjC,IAAIm+D,EAAgB,MAAP7wE,EAAE2wE,GAAavD,KAAYC,GAAax/D,EAAO,IAAKgjE,EAASxD,GAAcD,IAOxF,MANI,MAAOptE,EAAG6N,EAAKwgE,YAAYruE,EAAEyB,EAAG,EAAGzB,EAAEq3B,GAAa,MAAOr3B,GAAK,MAAOA,GACjE,MAAOA,IAAIA,EAAE6E,EAAI,MAAO7E,EAAI,EAAI,GACtC6N,EAAKwgE,YAAYruE,EAAEyB,EAAG,EAAG,GACzBoM,EAAKwgE,YAAYruE,EAAEyB,EAAG,EAAG,MAAOzB,GAAKA,EAAE6E,EAAI,GAAK,EAAU,EAAN7E,EAAE8wE,GAASjjE,EAAK6J,SAAW,GAAK,EAAI1X,EAAE6E,EAAU,EAAN7E,EAAE+wE,GAASljE,EAAK6J,SAAW,GAAK,IACzH7J,EAAKwgE,YAAYruE,EAAEyB,EAAGzB,EAAEgqD,EAAGhqD,EAAEA,GACpC6N,EAAK0gE,SAASvuE,EAAE2pD,GAAK3pD,EAAE2wE,EAAI,IAAM,GAAI3wE,EAAEywE,EAAIzwE,EAAE2wE,EAAI,IAAK3wE,EAAE43D,EAAG53D,EAAE0wE,GACtDG,EAAShjE,EAAK89C,EAAI99C,CAC3B,EACArE,EAAOnD,SAAW,WAChB,OAAOiqE,CACT,EACO9mE,CACT,CACA,SAASonE,EAAc/iE,EAAMyiE,EAAUn+C,EAAQkF,GAE7C,IADA,IAAI0D,EAAGroB,EAAGmS,EAAGjhB,EAAI,EAAG9D,EAAIwwE,EAASpwE,OAAQ8pD,EAAI73B,EAAOjyB,OAC7C0D,EAAI9D,GAAG,CACZ,GAAIu3B,GAAK2yB,EAAG,OAAQ,EAEpB,GAAU,MADVjvB,EAAIu1C,EAASlH,WAAWxlE,OAItB,GAFAihB,EAAIyrD,EAAS/pE,OAAO3C,OACpB8O,EAAIs+D,EAAgBnsD,KAAK0rD,GAAqBD,EAAS/pE,OAAO3C,KAAOihB,MAC1DwS,EAAI3kB,EAAE7E,EAAMskB,EAAQkF,IAAM,EAAG,OAAQ,OAC3C,GAAI0D,GAAK5I,EAAOi3C,WAAW/xC,KAChC,OAAQ,CAEZ,CACA,OAAOA,CACT,CACAg5C,EAAel5D,IAAM,SAASm5D,GAC5B,IAAI1nB,EAAQynB,EAAeC,GAC3B,SAAS9mE,EAAOqE,GACd,IAEE,IAAIsJ,EAAM,IADVi2D,GAAUC,IAGV,OADAl2D,EAAIw0C,EAAI99C,EACD+6C,EAAMzxC,EACf,CAAE,QACAi2D,GAAU/5D,IACZ,CACF,CAWA,OAVA7J,EAAOigB,MAAQ,SAAS0I,GACtB,IACEi7C,GAAUC,GACV,IAAIx/D,EAAO+6C,EAAMn/B,MAAM0I,GACvB,OAAOtkB,GAAQA,EAAK89C,CACtB,CAAE,QACAyhB,GAAU/5D,IACZ,CACF,EACA7J,EAAOnD,SAAWuiD,EAAMviD,SACjBmD,CACT,EACA6mE,EAAeh5D,MAAQg5D,EAAel5D,IAAIE,MAAQ45D,GAClD,IAAIC,EAAuBhvE,EAAG0D,MAAOurE,EAAgBC,GAAiBvB,GAAcwB,EAAoBC,GAAqBzB,GAAc0B,EAAsBH,GAAiBrB,GAAmByB,EAA0BF,GAAqBvB,GAAmB0B,EAAkBL,GAAiBnB,GAAgByB,EAAsBJ,GAAqBrB,GAAgB0B,EAAwBP,GAAiBjB,GAAqByB,EAA4BN,GAAqBnB,GACpeR,EAAe9uE,SAAQ,SAAS6R,EAAG9O,GACjCstE,EAAqBxkD,IAAIha,EAAE0zB,cAAexiC,EAC5C,IACA,IAAI4sE,EAAkB,CACpBj9D,EAAG,SAASvT,GACV,OAAO+vE,EAAiB/vE,EAAE0X,SAC5B,EACAm6D,EAAG,SAAS7xE,GACV,OAAO6vE,EAAY7vE,EAAE0X,SACvB,EACAlE,EAAG,SAASxT,GACV,OAAOmwE,EAAmBnwE,EAAE4X,WAC9B,EACAk6D,EAAG,SAAS9xE,GACV,OAAOiwE,EAAcjwE,EAAE4X,WACzB,EACAmjB,EAAGs1C,EAAed,GAClBvvE,EAAG,SAASA,EAAG0S,GACb,OAAOq/D,GAAkB/xE,EAAE2X,UAAWjF,EAAG,EAC3C,EACAgQ,EAAG,SAAS1iB,EAAG0S,GACb,OAAOq/D,GAAkB/xE,EAAE2X,UAAWjF,EAAG,EAC3C,EACAi3C,EAAG,SAAS3pD,EAAG0S,GACb,OAAOq/D,GAAkB/xE,EAAEyX,WAAY/E,EAAG,EAC5C,EACAo3D,EAAG,SAAS9pE,EAAG0S,GACb,OAAOq/D,GAAkB/xE,EAAEyX,WAAa,IAAM,GAAI/E,EAAG,EACvD,EACA2kB,EAAG,SAASr3B,EAAG0S,GACb,OAAOq/D,GAAkB,EAAI5E,GAAQ6E,UAAUhyE,GAAI0S,EAAG,EACxD,EACAg+D,EAAG,SAAS1wE,EAAG0S,GACb,OAAOq/D,GAAkB/xE,EAAEsX,kBAAmB5E,EAAG,EACnD,EACAs3C,EAAG,SAAShqD,EAAG0S,GACb,OAAOq/D,GAAkB/xE,EAAE4X,WAAa,EAAGlF,EAAG,EAChD,EACA+9D,EAAG,SAASzwE,EAAG0S,GACb,OAAOq/D,GAAkB/xE,EAAEwX,aAAc9E,EAAG,EAC9C,EACAA,EAAG,SAAS1S,GACV,OAAO2vE,IAAiB3vE,EAAEyX,YAAc,IAC1C,EACAmgD,EAAG,SAAS53D,EAAG0S,GACb,OAAOq/D,GAAkB/xE,EAAEuX,aAAc7E,EAAG,EAC9C,EACAq+D,EAAG,SAAS/wE,EAAG0S,GACb,OAAOq/D,GAAkB5E,GAAQ8E,aAAajyE,GAAI0S,EAAG,EACvD,EACA7N,EAAG,SAAS7E,GACV,OAAOA,EAAE0X,QACX,EACAo5D,EAAG,SAAS9wE,EAAG0S,GACb,OAAOq/D,GAAkB5E,GAAQ+E,aAAalyE,GAAI0S,EAAG,EACvD,EACAlR,EAAG6uE,EAAeZ,GAClBzC,EAAGqD,EAAeX,GAClBjuE,EAAG,SAASzB,EAAG0S,GACb,OAAOq/D,GAAkB/xE,EAAEw3C,cAAgB,IAAK9kC,EAAG,EACrD,EACAy/D,EAAG,SAASnyE,EAAG0S,GACb,OAAOq/D,GAAkB/xE,EAAEw3C,cAAgB,IAAK9kC,EAAG,EACrD,EACAi+D,EAAGyB,GACH,IAAK,WACH,MAAO,GACT,GAEEpB,EAAkB,CACpBz9D,EAyBF,SAAoC1F,EAAMskB,EAAQvuB,GAChD2tE,EAAoBtgB,UAAY,EAChC,IAAInxD,EAAIyxE,EAAoBzT,KAAK3rC,EAAO1rB,MAAM7C,IAC9C,OAAO9D,GAAK+N,EAAKhJ,EAAI2sE,EAAwB/kD,IAAI3sB,EAAE,GAAGsmC,eAAgBxiC,EAAI9D,EAAE,GAAGI,SAAW,CAC5F,EA5BE2xE,EA6BF,SAA8BhkE,EAAMskB,EAAQvuB,GAC1CutE,EAAclgB,UAAY,EAC1B,IAAInxD,EAAIqxE,EAAcrT,KAAK3rC,EAAO1rB,MAAM7C,IACxC,OAAO9D,GAAK+N,EAAKhJ,EAAIwsE,EAAkB5kD,IAAI3sB,EAAE,GAAGsmC,eAAgBxiC,EAAI9D,EAAE,GAAGI,SAAW,CACtF,EAhCEsT,EAiCF,SAAkC3F,EAAMskB,EAAQvuB,GAC9C+tE,EAAsB1gB,UAAY,EAClC,IAAInxD,EAAI6xE,EAAsB7T,KAAK3rC,EAAO1rB,MAAM7C,IAChD,OAAO9D,GAAK+N,EAAKm8C,EAAI4nB,EAA0BnlD,IAAI3sB,EAAE,GAAGsmC,eAAgBxiC,EAAI9D,EAAE,GAAGI,SAAW,CAC9F,EApCE4xE,EAqCF,SAA4BjkE,EAAMskB,EAAQvuB,GACxC6tE,EAAgBxgB,UAAY,EAC5B,IAAInxD,EAAI2xE,EAAgB3T,KAAK3rC,EAAO1rB,MAAM7C,IAC1C,OAAO9D,GAAK+N,EAAKm8C,EAAI0nB,EAAoBjlD,IAAI3sB,EAAE,GAAGsmC,eAAgBxiC,EAAI9D,EAAE,GAAGI,SAAW,CACxF,EAxCE66B,EAyCF,SAAiCltB,EAAMskB,EAAQvuB,GAC7C,OAAOgtE,EAAc/iE,EAAM2iE,EAAgBz1C,EAAE10B,WAAY8rB,EAAQvuB,EACnE,EA1CE5D,EAAGqyE,GACH3vD,EAAG2vD,GACH1oB,EAAG2oB,GACHxI,EAAGwI,GACHj7C,EAAGk7C,GACH7B,EAAG8B,GACHxoB,EAAGyoB,GACHhC,EAAGiC,GACHhgE,EAyCF,SAA2B7E,EAAMskB,EAAQvuB,GACvC,IAAI9D,EAAIoxE,EAAqBzkD,IAAI0F,EAAO1rB,MAAM7C,EAAGA,GAAK,GAAGwiC,eACzD,OAAY,MAALtmC,GAAa,GAAK+N,EAAK6E,EAAI5S,EAAG8D,EACvC,EA3CEg0D,EAAG+a,GACH5B,EAAG6B,GACH/tE,EAAGguE,GACH/B,EAAGgC,GACHtxE,EA8BF,SAAiCqM,EAAMskB,EAAQvuB,GAC7C,OAAOgtE,EAAc/iE,EAAM2iE,EAAgBhvE,EAAE6E,WAAY8rB,EAAQvuB,EACnE,EA/BEopE,EAgCF,SAAiCn/D,EAAMskB,EAAQvuB,GAC7C,OAAOgtE,EAAc/iE,EAAM2iE,EAAgBxD,EAAE3mE,WAAY8rB,EAAQvuB,EACnE,EAjCEnC,EAAGsxE,GACHZ,EAAGa,GACHrC,EAAGsC,GACH,IAAKC,IAmCP,OAAO7C,CACT,CAvQAlD,GAAQgG,KAAOjE,IAAiB,SAASrhE,GAGvC,OAFAA,EAAOs/D,GAAQiG,IAAIvlE,IACdghE,SAAS,EAAG,GACVhhE,CACT,IAAG,SAASA,EAAMivC,GAChBjvC,EAAKwgE,YAAYxgE,EAAK2pC,cAAgBsF,EACxC,IAAG,SAASjvC,GACV,OAAOA,EAAK2pC,aACd,IACA21B,GAAQkG,MAAQlG,GAAQgG,KAAK9wE,MAC7B8qE,GAAQkG,MAAMl8D,IAAMg2D,GAAQgG,KAAKh8D,IAAI9U,MACrC8qE,GAAQiG,IAAMlE,IAAiB,SAASrhE,GACtC,IAAIulE,EAAM,IAAIhG,GAAQ,IAAK,GAE3B,OADAgG,EAAI/E,YAAYxgE,EAAK2pC,cAAe3pC,EAAK+J,WAAY/J,EAAK8J,WACnDy7D,CACT,IAAG,SAASvlE,EAAMivC,GAChBjvC,EAAKmgE,QAAQngE,EAAK8J,UAAYmlC,EAChC,IAAG,SAASjvC,GACV,OAAOA,EAAK8J,UAAY,CAC1B,IACAw1D,GAAQ2C,KAAO3C,GAAQiG,IAAI/wE,MAC3B8qE,GAAQ2C,KAAK34D,IAAMg2D,GAAQiG,IAAIj8D,IAAI9U,MACnC8qE,GAAQ6E,UAAY,SAASnkE,GAC3B,IAAIslE,EAAOhG,GAAQgG,KAAKtlE,GACxB,OAAOlO,KAAKiqD,OAAO/7C,EAAOslE,EAA+D,KAAvDtlE,EAAKkgE,oBAAsBoF,EAAKpF,sBAA8B,MAClG,EACA,CAAE,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAAaltE,SAAQ,SAASuyE,EAAKxvE,GACrGA,EAAI,EAAIA,EACR,IAAI+F,EAAWwjE,GAAQiG,GAAOlE,IAAiB,SAASrhE,GAEtD,OADCA,EAAOs/D,GAAQiG,IAAIvlE,IAAOmgE,QAAQngE,EAAK8J,WAAa9J,EAAK6J,SAAW9T,GAAK,GACnEiK,CACT,IAAG,SAASA,EAAMivC,GAChBjvC,EAAKmgE,QAAQngE,EAAK8J,UAAiC,EAArBhY,KAAKiqD,MAAM9M,GAC3C,IAAG,SAASjvC,GACV,IAAIulE,EAAMjG,GAAQgG,KAAKtlE,GAAM6J,SAC7B,OAAO/X,KAAKiqD,OAAOujB,GAAQ6E,UAAUnkE,IAASulE,EAAMxvE,GAAK,GAAK,IAAMwvE,IAAQxvE,EAC9E,IACAupE,GAAQiG,EAAM,KAAOzpE,EAAStH,MAC9B8qE,GAAQiG,EAAM,KAAKj8D,IAAMxN,EAASwN,IAAI9U,MACtC8qE,GAAQiG,EAAM,UAAY,SAASvlE,GACjC,IAAIulE,EAAMjG,GAAQgG,KAAKtlE,GAAM6J,SAC7B,OAAO/X,KAAKiqD,OAAOujB,GAAQ6E,UAAUnkE,IAASulE,EAAMxvE,GAAK,GAAK,EAChE,CACF,IACAupE,GAAQmG,KAAOnG,GAAQoG,OACvBpG,GAAQqG,MAAQrG,GAAQoG,OAAOlxE,MAC/B8qE,GAAQqG,MAAMr8D,IAAMg2D,GAAQoG,OAAOp8D,IAAI9U,MACvC8qE,GAAQsG,WAAatG,GAAQ8E,aAyN7B,IAAI1B,GAAqB,CACvB,IAAK,GACL5kB,EAAG,IACH,EAAK,KACJ+nB,GAAmB,UAAWC,GAAoB,KACrD,SAAS5B,GAAkBxzE,EAAO0tE,EAAMtqE,GACtC,IAAIkyB,EAAOt1B,EAAQ,EAAI,IAAM,GAAI4zB,GAAU0B,GAAQt1B,EAAQA,GAAS,GAAI2B,EAASiyB,EAAOjyB,OACxF,OAAO2zB,GAAQ3zB,EAASyB,EAAQ,IAAIrC,MAAMqC,EAAQzB,EAAS,GAAGspE,KAAKyC,GAAQ95C,EAASA,EACtF,CACA,SAASi/C,GAAiB/6C,GACxB,OAAO,IAAIs6B,OAAO,OAASt6B,EAAMzwB,IAAI1D,EAAGusD,SAAS+a,KAAK,KAAO,IAAK,IACpE,CACA,SAAS8H,GAAqBj7C,GAE5B,IADA,IAAIzwB,EAAM,IAAI8lD,EAAU9nD,GAAK,EAAG9D,EAAIu2B,EAAMn2B,SACjC0D,EAAI9D,GAAG8F,EAAI8mB,IAAI2J,EAAMzyB,GAAGwiC,cAAexiC,GAChD,OAAOgC,CACT,CACA,SAASitE,GAA2BhlE,EAAMskB,EAAQvuB,GAChD8vE,GAAiBziB,UAAY,EAC7B,IAAInxD,EAAI4zE,GAAiB5V,KAAK3rC,EAAO1rB,MAAM7C,EAAGA,EAAI,IAClD,OAAO9D,GAAK+N,EAAKhJ,GAAK/E,EAAE,GAAI8D,EAAI9D,EAAE,GAAGI,SAAW,CAClD,CACA,SAAS0yE,GAA8B/kE,EAAMskB,EAAQvuB,GACnD8vE,GAAiBziB,UAAY,EAC7B,IAAInxD,EAAI4zE,GAAiB5V,KAAK3rC,EAAO1rB,MAAM7C,IAC3C,OAAO9D,GAAK+N,EAAKkjE,GAAKjxE,EAAE,GAAI8D,EAAI9D,EAAE,GAAGI,SAAW,CAClD,CACA,SAAS4yE,GAA8BjlE,EAAMskB,EAAQvuB,GACnD8vE,GAAiBziB,UAAY,EAC7B,IAAInxD,EAAI4zE,GAAiB5V,KAAK3rC,EAAO1rB,MAAM7C,IAC3C,OAAO9D,GAAK+N,EAAKijE,GAAKhxE,EAAE,GAAI8D,EAAI9D,EAAE,GAAGI,SAAW,CAClD,CACA,SAAS8yE,GAAsBnlE,EAAMskB,EAAQvuB,GAC3C8vE,GAAiBziB,UAAY,EAC7B,IAAInxD,EAAI4zE,GAAiB5V,KAAK3rC,EAAO1rB,MAAM7C,EAAGA,EAAI,IAClD,OAAO9D,GAAK+N,EAAKpM,GAAK3B,EAAE,GAAI8D,EAAI9D,EAAE,GAAGI,SAAW,CAClD,CACA,SAAS6yE,GAAkBllE,EAAMskB,EAAQvuB,GACvC8vE,GAAiBziB,UAAY,EAC7B,IAO0BjxD,EAPtBF,EAAI4zE,GAAiB5V,KAAK3rC,EAAO1rB,MAAM7C,EAAGA,EAAI,IAClD,OAAO9D,GAAK+N,EAAKpM,GAMSzB,GANeF,EAAE,KAO/BE,EAAI,GAAK,KAAO,KAPoB4D,EAAI9D,EAAE,GAAGI,SAAW,CACtE,CACA,SAAS+yE,GAAkBplE,EAAMskB,EAAQvuB,GACvC,MAAO,cAAcstD,KAAK/+B,EAASA,EAAO1rB,MAAM7C,EAAGA,EAAI,KAAOiK,EAAK8iE,GAAKx+C,EACxEvuB,EAAI,IAAM,CACZ,CAIA,SAAS6uE,GAAyB5kE,EAAMskB,EAAQvuB,GAC9C8vE,GAAiBziB,UAAY,EAC7B,IAAInxD,EAAI4zE,GAAiB5V,KAAK3rC,EAAO1rB,MAAM7C,EAAGA,EAAI,IAClD,OAAO9D,GAAK+N,EAAKm8C,EAAIlqD,EAAE,GAAK,EAAG8D,EAAI9D,EAAE,GAAGI,SAAW,CACrD,CACA,SAASmyE,GAAiBxkE,EAAMskB,EAAQvuB,GACtC8vE,GAAiBziB,UAAY,EAC7B,IAAInxD,EAAI4zE,GAAiB5V,KAAK3rC,EAAO1rB,MAAM7C,EAAGA,EAAI,IAClD,OAAO9D,GAAK+N,EAAK7N,GAAKF,EAAE,GAAI8D,EAAI9D,EAAE,GAAGI,SAAW,CAClD,CACA,SAASqyE,GAAuB1kE,EAAMskB,EAAQvuB,GAC5C8vE,GAAiBziB,UAAY,EAC7B,IAAInxD,EAAI4zE,GAAiB5V,KAAK3rC,EAAO1rB,MAAM7C,EAAGA,EAAI,IAClD,OAAO9D,GAAK+N,EAAKwpB,GAAKv3B,EAAE,GAAI8D,EAAI9D,EAAE,GAAGI,SAAW,CAClD,CACA,SAASoyE,GAAoBzkE,EAAMskB,EAAQvuB,GACzC8vE,GAAiBziB,UAAY,EAC7B,IAAInxD,EAAI4zE,GAAiB5V,KAAK3rC,EAAO1rB,MAAM7C,EAAGA,EAAI,IAClD,OAAO9D,GAAK+N,EAAK87C,GAAK7pD,EAAE,GAAI8D,EAAI9D,EAAE,GAAGI,SAAW,CAClD,CACA,SAASwyE,GAAqB7kE,EAAMskB,EAAQvuB,GAC1C8vE,GAAiBziB,UAAY,EAC7B,IAAInxD,EAAI4zE,GAAiB5V,KAAK3rC,EAAO1rB,MAAM7C,EAAGA,EAAI,IAClD,OAAO9D,GAAK+N,EAAK4iE,GAAK3wE,EAAE,GAAI8D,EAAI9D,EAAE,GAAGI,SAAW,CAClD,CACA,SAASyyE,GAAqB9kE,EAAMskB,EAAQvuB,GAC1C8vE,GAAiBziB,UAAY,EAC7B,IAAInxD,EAAI4zE,GAAiB5V,KAAK3rC,EAAO1rB,MAAM7C,EAAGA,EAAI,IAClD,OAAO9D,GAAK+N,EAAK+pD,GAAK93D,EAAE,GAAI8D,EAAI9D,EAAE,GAAGI,SAAW,CAClD,CACA,SAASsyE,GAA0B3kE,EAAMskB,EAAQvuB,GAC/C8vE,GAAiBziB,UAAY,EAC7B,IAAInxD,EAAI4zE,GAAiB5V,KAAK3rC,EAAO1rB,MAAM7C,EAAGA,EAAI,IAClD,OAAO9D,GAAK+N,EAAK6iE,GAAK5wE,EAAE,GAAI8D,EAAI9D,EAAE,GAAGI,SAAW,CAClD,CACA,SAASkyE,GAAapyE,GACpB,IAAImnD,EAAInnD,EAAE+tE,oBAAqB6F,EAAKzsB,EAAI,EAAI,IAAM,IAAK0sB,EAAK1zC,EAAIgnB,GAAK,GAAK,EAAG2sB,EAAK3zC,EAAIgnB,GAAK,GAC3F,OAAOysB,EAAK7B,GAAkB8B,EAAI,IAAK,GAAK9B,GAAkB+B,EAAI,IAAK,EACzE,CACA,SAASZ,GAA4BrlE,EAAMskB,EAAQvuB,GACjD+vE,GAAkB1iB,UAAY,EAC9B,IAAInxD,EAAI6zE,GAAkB7V,KAAK3rC,EAAO1rB,MAAM7C,EAAGA,EAAI,IACnD,OAAO9D,EAAI8D,EAAI9D,EAAE,GAAGI,QAAU,CAChC,CACA,SAAS+wE,GAAoB8C,GAE3B,IADA,IAAIj0E,EAAIi0E,EAAQ7zE,OAAQ0D,GAAK,IACpBA,EAAI9D,GAAGi0E,EAAQnwE,GAAG,GAAK3B,KAAK8xE,EAAQnwE,GAAG,IAChD,OAAO,SAASiK,GAEd,IADA,IAAIjK,EAAI,EAAGqlB,EAAI8qD,EAAQnwE,IACfqlB,EAAE,GAAGpb,IAAOob,EAAI8qD,IAAUnwE,GAClC,OAAOqlB,EAAE,GAAGpb,EACd,CACF,CACA3L,EAAGmpE,OAAS,SAASA,GACnB,MAAO,CACL2I,aAAc5I,GAAuBC,GACrC4I,WAAY3E,GAAqBjE,GAErC,EACA,IAAI6I,GAAiBhyE,EAAGmpE,OAAO,CAC7Bz3C,QAAS,IACT43C,UAAW,IACXE,SAAU,CAAE,GACZE,SAAU,CAAE,IAAK,IACjB4D,SAAU,iBACV3hE,KAAM,WACNX,KAAM,WACN0iE,QAAS,CAAE,KAAM,MACjBE,KAAM,CAAE,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAC1EE,UAAW,CAAE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACvDE,OAAQ,CAAE,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACxHE,YAAa,CAAE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,SAI9F,SAAS+D,KAAY,CAFrBjyE,EAAGsH,OAAS0qE,GAAeF,aAC3B9xE,EAAGkyE,IAAM,CAAC,EAEVD,GAASt2E,UAAY,CACnBgI,EAAG,EACHgf,EAAG,EACHC,IAAK,SAASrjB,GACZ4yE,GAAY5yE,EAAGQ,KAAK4iB,EAAGyvD,IACvBD,GAAYC,GAAazuE,EAAG5D,KAAK4D,EAAG5D,MAChCA,KAAK4D,EAAG5D,KAAK4iB,GAAKyvD,GAAazvD,EAAQ5iB,KAAK4D,EAAIyuE,GAAazvD,CACnE,EACAk3B,MAAO,WACL95C,KAAK4D,EAAI5D,KAAK4iB,EAAI,CACpB,EACA6gC,QAAS,WACP,OAAOzjD,KAAK4D,CACd,GAEF,IAAIyuE,GAAe,IAAIH,GACvB,SAASE,GAAY9gE,EAAGC,EAAGpU,GACzB,IAAIoC,EAAIpC,EAAEyG,EAAI0N,EAAIC,EAAG+gE,EAAK/yE,EAAI+R,EAAGihE,EAAKhzE,EAAI+yE,EAC1Cn1E,EAAEylB,EAAItR,EAAIihE,GAAMhhE,EAAI+gE,EACtB,CAQA,SAASE,GAAsBC,EAAU5mB,GACnC4mB,GAAYC,GAA0BnmB,eAAekmB,EAASr3D,OAChEs3D,GAA0BD,EAASr3D,MAAMq3D,EAAU5mB,EAEvD,CAXA5rD,EAAGkyE,IAAIQ,OAAS,SAAS5mC,EAAQ8f,GAC3B9f,GAAU6mC,GAAwBrmB,eAAexgB,EAAO3wB,MAC1Dw3D,GAAwB7mC,EAAO3wB,MAAM2wB,EAAQ8f,GAE7C2mB,GAAsBzmC,EAAQ8f,EAElC,EAMA,IAAI+mB,GAA0B,CAC5BC,QAAS,SAASC,EAASjnB,GACzB2mB,GAAsBM,EAAQL,SAAU5mB,EAC1C,EACAknB,kBAAmB,SAAShnC,EAAQ8f,GAElC,IADA,IAAImnB,EAAWjnC,EAAOinC,SAAUrxE,GAAK,EAAG9D,EAAIm1E,EAAS/0E,SAC5C0D,EAAI9D,GAAG20E,GAAsBQ,EAASrxE,GAAG8wE,SAAU5mB,EAC9D,GAEE6mB,GAA4B,CAC9BO,OAAQ,SAASlnC,EAAQ8f,GACvBA,EAASqnB,QACX,EACAC,MAAO,SAASpnC,EAAQ8f,GACtB9f,EAASA,EAAOqnC,YAChBvnB,EAASmH,MAAMjnB,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAC9C,EACAsnC,WAAY,SAAStnC,EAAQ8f,GAE3B,IADA,IAAIunB,EAAcrnC,EAAOqnC,YAAazxE,GAAK,EAAG9D,EAAIu1E,EAAYn1E,SACrD0D,EAAI9D,GAAGkuC,EAASqnC,EAAYzxE,GAAIkqD,EAASmH,MAAMjnB,EAAO,GAAIA,EAAO,GAAIA,EAAO,GACvF,EACAunC,WAAY,SAASvnC,EAAQ8f,GAC3B0nB,GAAkBxnC,EAAOqnC,YAAavnB,EAAU,EAClD,EACA2nB,gBAAiB,SAASznC,EAAQ8f,GAEhC,IADA,IAAIunB,EAAcrnC,EAAOqnC,YAAazxE,GAAK,EAAG9D,EAAIu1E,EAAYn1E,SACrD0D,EAAI9D,GAAG01E,GAAkBH,EAAYzxE,GAAIkqD,EAAU,EAC9D,EACA4nB,QAAS,SAAS1nC,EAAQ8f,GACxB6nB,GAAqB3nC,EAAOqnC,YAAavnB,EAC3C,EACA8nB,aAAc,SAAS5nC,EAAQ8f,GAE7B,IADA,IAAIunB,EAAcrnC,EAAOqnC,YAAazxE,GAAK,EAAG9D,EAAIu1E,EAAYn1E,SACrD0D,EAAI9D,GAAG61E,GAAqBN,EAAYzxE,GAAIkqD,EACvD,EACA+nB,mBAAoB,SAAS7nC,EAAQ8f,GAEnC,IADA,IAAIgoB,EAAa9nC,EAAO8nC,WAAYlyE,GAAK,EAAG9D,EAAIg2E,EAAW51E,SAClD0D,EAAI9D,GAAG20E,GAAsBqB,EAAWlyE,GAAIkqD,EACvD,GAEF,SAAS0nB,GAAkBH,EAAavnB,EAAUioB,GAChD,IAA6CC,EAAzCpyE,GAAK,EAAG9D,EAAIu1E,EAAYn1E,OAAS61E,EAErC,IADAjoB,EAASmoB,cACAryE,EAAI9D,GAAGk2E,EAAaX,EAAYzxE,GAAIkqD,EAASmH,MAAM+gB,EAAW,GAAIA,EAAW,GAAIA,EAAW,IACrGloB,EAASooB,SACX,CACA,SAASP,GAAqBN,EAAavnB,GACzC,IAAIlqD,GAAK,EAAG9D,EAAIu1E,EAAYn1E,OAE5B,IADA4tD,EAASqoB,iBACAvyE,EAAI9D,GAAG01E,GAAkBH,EAAYzxE,GAAIkqD,EAAU,GAC5DA,EAASsoB,YACX,CACAl0E,EAAGkyE,IAAI94E,KAAO,SAAS0yC,GAGrB,OAFAqoC,GAAiB,EACjBn0E,EAAGkyE,IAAIQ,OAAO5mC,EAAQsoC,IACfD,EACT,EACA,IAAIA,GA8MAE,GAAmBC,GAAmBC,GAAmBC,GAAmBC,GAAmBC,GAAmBC,GAAmBC,GAAmBC,GAAmBC,GAAmBC,GA9M9KC,GAAqB,IAAI/C,GACzCmC,GAAc,CAChBnB,OAAQ,WACNkB,IAAkB,EAAI,EACxB,EACAphB,MAAOzH,EACPyoB,UAAWzoB,EACX0oB,QAAS1oB,EACT2oB,aAAc,WACZe,GAAmBn7B,QACnBu6B,GAAYL,UAAYkB,EAC1B,EACAf,WAAY,WACV,IAAI96E,EAAO,EAAI47E,GACfb,IAAkB/6E,EAAO,EAAI,EAAI,GAAIA,EAAOA,EAC5Cg7E,GAAYL,UAAYK,GAAYJ,QAAUI,GAAYrhB,MAAQzH,CACpE,GAEF,SAAS2pB,KACP,IAAI,EAAK,EAAK,EAAI,EAAO,EAMzB,SAASC,EAAU,EAAG,GAEpB,EAAI,EAAItgB,GAAa,EAAI,GAAI,EAC7B,IAAI,GAFJ,GAAKA,IAEQ,EAAI,EAAM,GAAM,EAAI,GAAK,EAAG,EAAM,EAAM,EAAI,EAAOn3D,KAAKugC,IAAI,GAAI,EAAOvgC,KAAK4H,IAAI,GAAI2mC,EAAI,EAAQ,EAAMuqB,EAAI,EAAQ,EAAOvqB,EAAIvuC,KAAKugC,IAAI,GAAMhhC,EAAIgvC,EAAI,EAAMvuC,KAAK4H,IAAI,GAChL2vE,GAAmBpyD,IAAInlB,KAAK69D,MAAMt+D,EAAGu5D,IACrC,EAAK,EAAG,EAAQ,EAAM,EAAQ,CAChC,CAXA6d,GAAYrhB,MAAQ,SAAS,EAAG,GAC9BqhB,GAAYrhB,MAAQmiB,EACpB,GAAM,EAAM,GAAKtgB,GAAY,EAAQn3D,KAAKugC,IAAI,GAAK,EAAM,GAAK42B,GAAa,EAAI,GAAI,GACnF,EAAQn3D,KAAK4H,IAAI,EACnB,EAQA+uE,GAAYJ,QAAU,WACpBkB,EAAU,EAAK,EACjB,CACF,CACA,SAASC,GAAiBC,GACxB,IAAI,EAAIA,EAAU,GAAI,EAAIA,EAAU,GAAI,EAAO33E,KAAKugC,IAAI,GACxD,MAAO,CAAE,EAAOvgC,KAAKugC,IAAI,GAAI,EAAOvgC,KAAK4H,IAAI,GAAI5H,KAAK4H,IAAI,GAC5D,CACA,SAASgwE,GAAoBhkE,EAAGC,GAC9B,OAAOD,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,EAC9C,CACA,SAASgkE,GAAsBjkE,EAAGC,GAChC,MAAO,CAAED,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAAID,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAAID,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GACxF,CACA,SAASikE,GAAoBlkE,EAAGC,GAC9BD,EAAE,IAAMC,EAAE,GACVD,EAAE,IAAMC,EAAE,GACVD,EAAE,IAAMC,EAAE,EACZ,CACA,SAASkkE,GAAsBC,EAAQzpC,GACrC,MAAO,CAAEypC,EAAO,GAAKzpC,EAAGypC,EAAO,GAAKzpC,EAAGypC,EAAO,GAAKzpC,EACrD,CACA,SAAS0pC,GAA0B53E,GACjC,IAAI26C,EAAIh7C,KAAKogC,KAAK//B,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IACvDA,EAAE,IAAM26C,EACR36C,EAAE,IAAM26C,EACR36C,EAAE,IAAM26C,CACV,CACA,SAASk9B,GAAiBC,GACxB,MAAO,CAAEn4E,KAAK69D,MAAMsa,EAAU,GAAIA,EAAU,IAAK1gB,GAAQ0gB,EAAU,IACrE,CACA,SAASC,GAAsBxkE,EAAGC,GAChC,OAAO2sB,EAAI5sB,EAAE,GAAKC,EAAE,IAAM,IAAK2sB,EAAI5sB,EAAE,GAAKC,EAAE,IAAM,EACpD,CACAtR,EAAGkyE,IAAI4D,OAAS,WACd,IAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAK,EAAKrgB,EAAI,EAAOsgB,EAAQ51E,EACjD61E,EAAQ,CACVjjB,MAAOA,EACPghB,UAAWA,EACXC,QAASA,EACTC,aAAc,WACZ+B,EAAMjjB,MAAQkjB,EACdD,EAAMjC,UAAYmC,EAClBF,EAAMhC,QAAUmC,EAChB,EAAQ,EACR/B,GAAYH,cACd,EACAC,WAAY,WACVE,GAAYF,aACZ8B,EAAMjjB,MAAQA,EACdijB,EAAMjC,UAAYA,EAClBiC,EAAMhC,QAAUA,EACZgB,GAAqB,GAAG,IAAO,EAAK,KAAM,IAAO,EAAK,KAAc,EAAQ,GAAG,EAAK,GAAa,GAAS,KAAG,GAAM,IACvH70E,EAAM,GAAK,EAAIA,EAAM,GAAK,CAC5B,GAEF,SAAS4yD,EAAM,EAAG,GAChBgjB,EAAOl0E,KAAK1B,EAAQ,CAAE,EAAK,EAAG,EAAK,IAC/B,EAAI,IAAI,EAAK,GACb,EAAI,IAAI,EAAK,EACnB,CACA,SAASi2E,EAAU,EAAG,GACpB,IAAI5lE,EAAI2kE,GAAiB,CAAE,EAAIvgB,GAAY,EAAIA,KAC/C,GAAIa,EAAI,CACN,IAAI4gB,EAASf,GAAsB7f,EAAIjlD,GAA+C8lE,EAAahB,GAA3C,CAAEe,EAAO,IAAKA,EAAO,GAAI,GAAoDA,GACrIX,GAA0BY,GAC1BA,EAAaX,GAAiBW,GAC9B,IAAI,EAAK,EAAI,EAAI3yE,EAAI,EAAK,EAAI,GAAK,EAAG,EAAK2yE,EAAW,GAAKzhB,GAAalxD,EAAG4yE,EAAet4C,EAAI,GAAM,IACpG,GAAIs4C,GAAgB5yE,EAAI,EAAK,GAAM,EAAKA,EAAI,IACtC,EAAK2yE,EAAW,GAAKzhB,IAChB,IAAI,EAAK,QACb,GAAiC0hB,GAAgB5yE,EAAI,GAAjD,GAAM,EAAK,KAAO,IAAM,MAAoC,EAAKA,EAAI,GAAI,CAClF,IAAI,MAAM2yE,EAAW,GAAKzhB,IACjB,IAAI,EAAK,EACpB,MACM,EAAI,IAAI,EAAK,GACb,EAAI,IAAI,EAAK,GAEf0hB,EACE,EAAI,EACFhrD,EAAM,EAAI,GAAKA,EAAM,EAAI,KAAK,EAAK,GAEnCA,EAAM,EAAG,GAAMA,EAAM,EAAI,KAAK,EAAK,GAGrC,GAAM,GACJ,EAAI,IAAI,EAAK,GACb,EAAI,IAAI,EAAK,IAEb,EAAI,EACFA,EAAM,EAAI,GAAKA,EAAM,EAAI,KAAK,EAAK,GAEnCA,EAAM,EAAG,GAAMA,EAAM,EAAI,KAAK,EAAK,EAI/C,MACEwnC,EAAM,EAAG,GAEX0C,EAAKjlD,EAAG,EAAK,CACf,CACA,SAASujE,IACPiC,EAAMjjB,MAAQqjB,CAChB,CACA,SAASpC,IACP7zE,EAAM,GAAK,EAAIA,EAAM,GAAK,EAC1B61E,EAAMjjB,MAAQA,EACd0C,EAAK,IACP,CACA,SAASwgB,EAAU,EAAG,GACpB,GAAIxgB,EAAI,CACN,IAAI,EAAK,EAAI,EACb,GAASx3B,EAAI,GAAM,IAAM,GAAM,EAAK,EAAI,KAAO,KAAO,CACxD,MAAO,EAAM,EAAG,EAAM,EACtBm2C,GAAYrhB,MAAM,EAAG,GACrBqjB,EAAU,EAAG,EACf,CACA,SAASF,IACP9B,GAAYL,WACd,CACA,SAASoC,IACPF,EAAU,EAAK,GACf7B,GAAYJ,UACR/1C,EAAI,GAAS,KAAG,IAAO,EAAK,MAChC99B,EAAM,GAAK,EAAIA,EAAM,GAAK,EAC1Bs1D,EAAK,IACP,CACA,SAASlqC,EAAM,EAAI,GACjB,OAAQ,GAAM,GAAM,EAAI,EAAK,IAAM,CACrC,CACA,SAASirD,EAAcnlE,EAAGC,GACxB,OAAOD,EAAE,GAAKC,EAAE,EAClB,CACA,SAASmlE,EAAYn3E,EAAGa,GACtB,OAAOA,EAAM,IAAMA,EAAM,GAAKA,EAAM,IAAMb,GAAKA,GAAKa,EAAM,GAAKb,EAAIa,EAAM,IAAMA,EAAM,GAAKb,CAC5F,CACA,OAAO,SAASuzE,GAKd,GAJA,EAAK,IAAO,EAAK,EAAKjrE,KACtBmuE,EAAS,GACT/1E,EAAGkyE,IAAIQ,OAAOG,EAASmD,GACnBp4E,EAAIm4E,EAAO/3E,OACR,CACL+3E,EAAO3kE,KAAKolE,GACZ,IAAK,IAAI90E,EAAI,EAAqB0nD,EAAS,CAA3B/3C,EAAI0kE,EAAO,IAAuBr0E,EAAI9D,IAAK8D,EAErD+0E,GADJnlE,EAAIykE,EAAOr0E,IACO,GAAI2P,IAAMolE,EAAYnlE,EAAE,GAAID,IACxCka,EAAMla,EAAE,GAAIC,EAAE,IAAMia,EAAMla,EAAE,GAAIA,EAAE,MAAKA,EAAE,GAAKC,EAAE,IAChDia,EAAMja,EAAE,GAAID,EAAE,IAAMka,EAAMla,EAAE,GAAIA,EAAE,MAAKA,EAAE,GAAKC,EAAE,KAEpD83C,EAAOvnD,KAAKwP,EAAIC,GAIpB,IADA,IAAsB,EACb1T,EAA6C0T,EADlDolE,GAAQ9uE,IAC2ByJ,GAAP3P,EAAI,EAAO0nD,EAAlCxrD,EAAIwrD,EAAOprD,OAAS,IAA4B0D,GAAK9D,EAAGyT,EAAIC,IAAK5P,EACxE4P,EAAI83C,EAAO1nD,IACN,EAAK6pB,EAAMla,EAAE,GAAIC,EAAE,KAAOolE,IAAMA,EAAO,EAAI,EAAKplE,EAAE,GAAI,EAAKD,EAAE,GAEtE,CAEA,OADA0kE,EAAS51E,EAAQ,KACV,IAAOyH,KAAY,IAAOA,IAAW,CAAE,CAAEkV,IAAKA,KAAO,CAAEA,IAAKA,MAAU,CAAE,CAAE,EAAI,GAAM,CAAE,EAAI,GACnG,CACF,CA/HgB,GAgIhB9c,EAAGkyE,IAAI/0C,SAAW,SAAS2O,GACzBuoC,GAAoBC,GAAoBC,GAAoBC,GAAoBC,GAAoBC,GAAoBC,GAAoBC,GAAoBC,GAAoBC,GAAoBC,GAAoB,EAC5N/0E,EAAGkyE,IAAIQ,OAAO5mC,EAAQ6qC,IACtB,IAAIr3E,EAAIu1E,GAAmBt1E,EAAIu1E,GAAmB7vB,EAAI8vB,GAAmBjtB,EAAIxoD,EAAIA,EAAIC,EAAIA,EAAI0lD,EAAIA,EACjG,OAAI6C,EAAI,KACNxoD,EAAIo1E,GAAmBn1E,EAAIo1E,GAAmB1vB,EAAI2vB,GAC9CN,GAAoB,KAAGh1E,EAAIi1E,GAAmBh1E,EAAIi1E,GAAmBvvB,EAAIwvB,KAC7E3sB,EAAIxoD,EAAIA,EAAIC,EAAIA,EAAI0lD,EAAIA,GAChB,IAAW,CAAEnoC,IAAKA,KAErB,CAAErf,KAAK69D,MAAM/7D,EAAGD,GAAKu1D,GAAYK,GAAQjQ,EAAIxnD,KAAKogC,KAAKiqB,IAAM+M,GACtE,EAEA,IAAI8hB,GAAkB,CACpB1D,OAAQ3nB,EACRyH,MAAO6jB,GACP7C,UAAW8C,GACX7C,QAAS8C,GACT7C,aAAc,WACZ0C,GAAgB5C,UAAYgD,EAC9B,EACA7C,WAAY,WACVyC,GAAgB5C,UAAY8C,EAC9B,GAEF,SAASD,GAAqB,EAAG,GAC/B,GAAKhiB,GACL,IAAI,EAAOn3D,KAAKugC,IAAI,GAAK42B,IACzBoiB,GAAwB,EAAOv5E,KAAKugC,IAAI,GAAI,EAAOvgC,KAAK4H,IAAI,GAAI5H,KAAK4H,IAAI,GAC3E,CACA,SAAS2xE,GAAwB13E,EAAGC,EAAG0lD,KACnCovB,GACFE,KAAsBj1E,EAAIi1E,IAAqBF,GAC/CG,KAAsBj1E,EAAIi1E,IAAqBH,GAC/CI,KAAsBxvB,EAAIwvB,IAAqBJ,EACjD,CACA,SAASwC,KACP,IAAIn4B,EAAItB,EAAI65B,EAUZ,SAAS/B,EAAU,EAAG,GACpB,GAAKtgB,GACL,IAAI,EAAOn3D,KAAKugC,IAAI,GAAK42B,IAAat1D,EAAI,EAAO7B,KAAKugC,IAAI,GAAIz+B,EAAI,EAAO9B,KAAK4H,IAAI,GAAI4/C,EAAIxnD,KAAK4H,IAAI,GAAI1C,EAAIlF,KAAK69D,MAAM79D,KAAKogC,MAAMl7B,EAAIy6C,EAAK6H,EAAIgyB,EAAK13E,GAAKoD,GAAKA,EAAIs0E,EAAK33E,EAAIo/C,EAAKuG,GAAKtiD,GAAKA,EAAI+7C,EAAKn/C,EAAI69C,EAAK99C,GAAKqD,GAAI+7C,EAAKp/C,EAAI89C,EAAK79C,EAAI03E,EAAKhyB,GAC3OqvB,IAAqB3xE,EACrB+xE,IAAqB/xE,GAAK+7C,GAAMA,EAAKp/C,IACrCq1E,IAAqBhyE,GAAKy6C,GAAMA,EAAK79C,IACrCq1E,IAAqBjyE,GAAKs0E,GAAMA,EAAKhyB,IACrC+xB,GAAwBt4B,EAAItB,EAAI65B,EAClC,CAjBAN,GAAgB5jB,MAAQ,SAAS,EAAG,GAClC,GAAK6B,GACL,IAAI,EAAOn3D,KAAKugC,IAAI,GAAK42B,IACzBlW,EAAK,EAAOjhD,KAAKugC,IAAI,GACrBof,EAAK,EAAO3/C,KAAK4H,IAAI,GACrB4xE,EAAKx5E,KAAK4H,IAAI,GACdsxE,GAAgB5jB,MAAQmiB,EACxB8B,GAAwBt4B,EAAItB,EAAI65B,EAClC,CAUF,CACA,SAASH,KACPH,GAAgB5jB,MAAQ6jB,EAC1B,CACA,SAASG,KACP,IAAI,EAAK,EAAKr4B,EAAItB,EAAI65B,EAgBtB,SAAS/B,EAAU,EAAG,GACpB,GAAKtgB,GACL,IAAI,EAAOn3D,KAAKugC,IAAI,GAAK42B,IAAat1D,EAAI,EAAO7B,KAAKugC,IAAI,GAAIz+B,EAAI,EAAO9B,KAAK4H,IAAI,GAAI4/C,EAAIxnD,KAAK4H,IAAI,GAAIga,EAAK+9B,EAAK6H,EAAIgyB,EAAK13E,EAAG+f,EAAK23D,EAAK33E,EAAIo/C,EAAKuG,EAAGiyB,EAAKx4B,EAAKn/C,EAAI69C,EAAK99C,EAAGwoD,EAAIrqD,KAAKogC,KAAKxe,EAAKA,EAAKC,EAAKA,EAAK43D,EAAKA,GAAK3gB,EAAI7X,EAAKp/C,EAAI89C,EAAK79C,EAAI03E,EAAKhyB,EAAGjoD,EAAI8qD,IAAMkN,GAAQuB,GAAKzO,EAAGnlD,EAAIlF,KAAK69D,MAAMxT,EAAGyO,GAC/Rse,IAAqB73E,EAAIqiB,EACzBy1D,IAAqB93E,EAAIsiB,EACzBy1D,IAAqB/3E,EAAIk6E,EACzB5C,IAAqB3xE,EACrB+xE,IAAqB/xE,GAAK+7C,GAAMA,EAAKp/C,IACrCq1E,IAAqBhyE,GAAKy6C,GAAMA,EAAK79C,IACrCq1E,IAAqBjyE,GAAKs0E,GAAMA,EAAKhyB,IACrC+xB,GAAwBt4B,EAAItB,EAAI65B,EAClC,CA1BAN,GAAgB5jB,MAAQ,SAAS,EAAG,GAClC,EAAM,EAAG,EAAM,EACf4jB,GAAgB5jB,MAAQmiB,EACxB,GAAKtgB,GACL,IAAI,EAAOn3D,KAAKugC,IAAI,GAAK42B,IACzBlW,EAAK,EAAOjhD,KAAKugC,IAAI,GACrBof,EAAK,EAAO3/C,KAAK4H,IAAI,GACrB4xE,EAAKx5E,KAAK4H,IAAI,GACd2xE,GAAwBt4B,EAAItB,EAAI65B,EAClC,EACAN,GAAgB3C,QAAU,WACxBkB,EAAU,EAAK,GACfyB,GAAgB3C,QAAU8C,GAC1BH,GAAgB5jB,MAAQ6jB,EAC1B,CAaF,CACA,SAASO,GAAe9lE,EAAGC,GACzB,SAAS8lE,EAAQ93E,EAAGC,GAClB,OAAOD,EAAI+R,EAAE/R,EAAGC,GAAI+R,EAAEhS,EAAE,GAAIA,EAAE,GAChC,CAIA,OAHI+R,EAAEumD,QAAUtmD,EAAEsmD,SAAQwf,EAAQxf,OAAS,SAASt4D,EAAGC,GACrD,OAAOD,EAAIgS,EAAEsmD,OAAOt4D,EAAGC,KAAS8R,EAAEumD,OAAOt4D,EAAE,GAAIA,EAAE,GACnD,GACO83E,CACT,CACA,SAASC,KACP,OAAO,CACT,CACA,SAASC,GAAmBC,EAAUvwB,EAASwwB,EAAiB11C,EAAa8pB,GAC3E,IAAIqI,EAAU,GAAIwjB,EAAO,GAuBzB,GAtBAF,EAAS54E,SAAQ,SAAS+4E,GACxB,MAAK95E,EAAI85E,EAAQ15E,OAAS,IAAM,GAAhC,CACA,IAAIJ,EAAG63D,EAAKiiB,EAAQ,GAAI7uB,EAAK6uB,EAAQ95E,GACrC,GAAIi4E,GAAsBpgB,EAAI5M,GAA9B,CACE+C,EAASmoB,YACT,IAAK,IAAIryE,EAAI,EAAGA,EAAI9D,IAAK8D,EAAGkqD,EAASmH,OAAO0C,EAAKiiB,EAAQh2E,IAAI,GAAI+zD,EAAG,IACpE7J,EAASooB,SAEX,KALA,CAMA,IAAI3iE,EAAI,IAAIsmE,GAA+BliB,EAAIiiB,EAAS,MAAM,GAAOpmE,EAAI,IAAIqmE,GAA+BliB,EAAI,KAAMpkD,GAAG,GACzHA,EAAEnU,EAAIoU,EACN2iD,EAAQpyD,KAAKwP,GACbomE,EAAK51E,KAAKyP,GACVD,EAAI,IAAIsmE,GAA+B9uB,EAAI6uB,EAAS,MAAM,GAC1DpmE,EAAI,IAAIqmE,GAA+B9uB,EAAI,KAAMx3C,GAAG,GACpDA,EAAEnU,EAAIoU,EACN2iD,EAAQpyD,KAAKwP,GACbomE,EAAK51E,KAAKyP,EATV,CAPyC,CAiB3C,IACAmmE,EAAKrmE,KAAK41C,GACV4wB,GAA+B3jB,GAC/B2jB,GAA+BH,GAC1BxjB,EAAQj2D,OAAb,CACA,IAAK,IAAI0D,EAAI,EAAGm2E,EAAQL,EAAiB55E,EAAI65E,EAAKz5E,OAAQ0D,EAAI9D,IAAK8D,EACjE+1E,EAAK/1E,GAAG8e,EAAIq3D,GAASA,EAGvB,IADA,IAAwBtlD,EAAQwgC,EAA5BxxD,EAAQ0yD,EAAQ,KACV,CAER,IADA,IAAIrjB,EAAUrvC,EAAOu2E,GAAY,EAC1BlnC,EAAQ5zC,OAAQ4zC,EAAUA,EAAQhzC,KAAO2D,EAAO,OACvDgxB,EAASqe,EAAQqU,EACjB2G,EAASmoB,YACT,EAAG,CAED,GADAnjC,EAAQ5zC,EAAI4zC,EAAQ1zC,EAAEF,GAAI,EACtB4zC,EAAQpwB,EAAG,CACb,GAAIs3D,EACF,IAASp2E,EAAI,EAAG9D,EAAI20B,EAAOv0B,OAAQ0D,EAAI9D,IAAK8D,EAAGkqD,EAASmH,OAAOA,EAAQxgC,EAAO7wB,IAAI,GAAIqxD,EAAM,SAE5FjxB,EAAY8O,EAAQtxC,EAAGsxC,EAAQhzC,EAAE0B,EAAG,EAAGssD,GAEzChb,EAAUA,EAAQhzC,CACpB,KAAO,CACL,GAAIk6E,EAEF,IAASp2E,GADT6wB,EAASqe,EAAQpgC,EAAEy0C,GACCjnD,OAAS,EAAG0D,GAAK,IAAKA,EAAGkqD,EAASmH,OAAOA,EAAQxgC,EAAO7wB,IAAI,GAAIqxD,EAAM,SAE1FjxB,EAAY8O,EAAQtxC,EAAGsxC,EAAQpgC,EAAElR,GAAI,EAAGssD,GAE1Chb,EAAUA,EAAQpgC,CACpB,CAEA+hB,GADAqe,EAAUA,EAAQ1zC,GACD+nD,EACjB6yB,GAAaA,CACf,QAAUlnC,EAAQ5zC,GAClB4uD,EAASooB,SACX,CAjC2B,CAkC7B,CACA,SAAS4D,GAA+B9xB,GACtC,GAAMloD,EAAIkoD,EAAM9nD,OAAhB,CAEA,IADA,IAAIJ,EAAwB0T,EAArB5P,EAAI,EAAG2P,EAAIy0C,EAAM,KACfpkD,EAAI9D,GACXyT,EAAEzT,EAAI0T,EAAIw0C,EAAMpkD,GAChB4P,EAAEd,EAAIa,EACNA,EAAIC,EAEND,EAAEzT,EAAI0T,EAAIw0C,EAAM,GAChBx0C,EAAEd,EAAIa,CARyB,CASjC,CACA,SAASsmE,GAA+B5kB,EAAOxgC,EAAQwlD,EAAOF,GAC5D93E,KAAKT,EAAIyzD,EACThzD,KAAKklD,EAAI1yB,EACTxyB,KAAK7C,EAAI66E,EACTh4E,KAAKygB,EAAIq3D,EACT93E,KAAK/C,GAAI,EACT+C,KAAKnC,EAAImC,KAAKyQ,EAAI,IACpB,CACA,SAASwnE,GAAYC,EAAcC,EAAUp2C,EAAaq2C,GACxD,OAAO,SAASlzE,EAAQ2mD,GACtB,IAsDI2rB,EAtDA5+E,EAAOu/E,EAAStsB,GAAWwsB,EAAmBnzE,EAAO2yD,OAAOugB,EAAU,GAAIA,EAAU,IACpFV,EAAO,CACT1kB,MAAOA,EACPghB,UAAWA,EACXC,QAASA,EACTC,aAAc,WACZwD,EAAK1kB,MAAQslB,EACbZ,EAAK1D,UAAYmC,EACjBuB,EAAKzD,QAAUmC,EACfoB,EAAW,GACXe,EAAU,EACZ,EACApE,WAAY,WACVuD,EAAK1kB,MAAQA,EACb0kB,EAAK1D,UAAYA,EACjB0D,EAAKzD,QAAUA,EACfuD,EAAWv3E,EAAG+4B,MAAMw+C,GACpB,IAAIC,EAuKZ,SAA+BzkB,EAAOulB,GACpC,IAAIC,EAAWxlB,EAAM,GAAIylB,EAAWzlB,EAAM,GAAI0lB,EAAiB,CAAEh7E,KAAK4H,IAAIkzE,IAAY96E,KAAKugC,IAAIu6C,GAAW,GAAKG,EAAa,EAAGC,EAAU,EACzI3D,GAAmBn7B,QACnB,IAAK,IAAIn4C,EAAI,EAAG9D,EAAI06E,EAAQt6E,OAAQ0D,EAAI9D,IAAK8D,EAAG,CAC9C,IAAIk3E,EAAON,EAAQ52E,GAAIomD,EAAI8wB,EAAK56E,OAChC,GAAK8pD,EAEL,IADA,IAAI+wB,EAASD,EAAK,GAAI,EAAKC,EAAO,GAAI,EAAKA,EAAO,GAAK,EAAI,GAAI,EAAG,EAAQp7E,KAAK4H,IAAI,GAAK,EAAQ5H,KAAKugC,IAAI,GAAK7I,EAAI,IACrG,CACPA,IAAM2yB,IAAG3yB,EAAI,GAEjB,IAAI,GADJ49B,EAAQ6lB,EAAKzjD,IACC,GAAI,EAAI49B,EAAM,GAAK,EAAI,GAAI,EAAG,EAAOt1D,KAAK4H,IAAI,GAAI,EAAO5H,KAAKugC,IAAI,GAAI,EAAK,EAAI,EAAI,EAAM,GAAM,EAAI,GAAK,EAAG,EAAM,EAAM,EAAIu4C,EAAe,EAAM,GAAGvqC,EAAI,EAAQ,EAG7K,GAFAgpC,GAAmBpyD,IAAInlB,KAAK69D,MAAMtvB,EAAI,EAAMvuC,KAAK4H,IAAI,GAAM,EAAQ,EAAO2mC,EAAIvuC,KAAKugC,IAAI,KACvF06C,GAAcnC,EAAe,EAAK,EAAM,GAAI,EACxCA,EAAe,GAAMgC,EAAW,GAAKA,EAAU,CACjD,IAAIt/E,EAAMq8E,GAAsBH,GAAiB0D,GAAS1D,GAAiBpiB,IAC3E2iB,GAA0Bz8E,GAC1B,IAAI6/E,EAAexD,GAAsBmD,EAAgBx/E,GACzDy8E,GAA0BoD,GAC1B,IAAI,GAAQvC,EAAe,GAAM,GAAK,EAAI,GAAKrhB,GAAQ4jB,EAAa,KAChEN,EAAW,GAAQA,IAAa,IAASv/E,EAAI,IAAMA,EAAI,OACzD0/E,GAAWpC,EAAe,GAAM,EAAI,GAAK,EAE7C,CACA,IAAKphD,IAAK,MACV,EAAK,EAAG,EAAQ,EAAM,EAAQ,EAAM0jD,EAAS9lB,CAC/C,CACF,CACA,OAAQ2lB,GAAc,IAAKA,EAAa,IAAK1D,IAAsB,IAAe,EAAV2D,CAC1E,CAnM8BI,CAAsBX,EAAkBE,GAC1Df,EAASv5E,QACNg7E,IAAgBptB,EAASqoB,eAAgB+E,GAAiB,GAC/D1B,GAAmBC,EAAU0B,GAAiBzB,EAAiB11C,EAAa8pB,IACnE4rB,IACJwB,IAAgBptB,EAASqoB,eAAgB+E,GAAiB,GAC/DptB,EAASmoB,YACTjyC,EAAY,KAAM,KAAM,EAAG8pB,GAC3BA,EAASooB,WAEPgF,IAAgBptB,EAASsoB,aAAc8E,GAAiB,GAC5DzB,EAAWe,EAAU,IACvB,EACArF,OAAQ,WACNrnB,EAASqoB,eACTroB,EAASmoB,YACTjyC,EAAY,KAAM,KAAM,EAAG8pB,GAC3BA,EAASooB,UACTpoB,EAASsoB,YACX,GAEF,SAASnhB,EAAM,EAAG,GAChB,IAAIA,EAAQ9tD,EAAO,EAAG,GAClBgzE,EAAa,EAAIllB,EAAM,GAAI,EAAIA,EAAM,KAAKnH,EAASmH,MAAM,EAAG,EAClE,CACA,SAASmmB,EAAU,EAAG,GACpB,IAAInmB,EAAQ9tD,EAAO,EAAG,GACtBtM,EAAKo6D,MAAMA,EAAM,GAAIA,EAAM,GAC7B,CACA,SAASghB,IACP0D,EAAK1kB,MAAQmmB,EACbvgF,EAAKo7E,WACP,CACA,SAASC,IACPyD,EAAK1kB,MAAQA,EACbp6D,EAAKq7E,SACP,CAEA,IAAmGsE,EAASM,EAAxGO,EAASC,KAA6BC,EAAenB,EAASiB,GAASH,GAAiB,EAC5F,SAASX,EAAU,EAAG,GACpBO,EAAK/2E,KAAK,CAAE,EAAG,IACf,IAAIkxD,EAAQ9tD,EAAO,EAAG,GACtBo0E,EAAatmB,MAAMA,EAAM,GAAIA,EAAM,GACrC,CACA,SAASmjB,IACPmD,EAAatF,YACb6E,EAAO,EACT,CACA,SAASzC,IACPkC,EAAUO,EAAK,GAAG,GAAIA,EAAK,GAAG,IAC9BS,EAAarF,UACb,IAAkE0D,EAA9D4B,EAAQD,EAAaC,QAASC,EAAeJ,EAAOA,SAAmBv7E,EAAI27E,EAAav7E,OAI5F,GAHA46E,EAAKY,MACLlB,EAAQz2E,KAAK+2E,GACbA,EAAO,KACFh7E,EACL,GAAY,EAAR07E,EAAJ,CAEE,IAAoCvmB,EAARrxD,GAAK,EACjC,IADI9D,GADJ85E,EAAU6B,EAAa,IACPv7E,OAAS,GACjB,EAAG,CAGT,IAFKg7E,IAAgBptB,EAASqoB,eAAgB+E,GAAiB,GAC/DptB,EAASmoB,cACAryE,EAAI9D,GAAGguD,EAASmH,OAAOA,EAAQ2kB,EAAQh2E,IAAI,GAAIqxD,EAAM,IAC9DnH,EAASooB,SACX,CAEF,MACIp2E,EAAI,GAAa,EAAR07E,GAAWC,EAAa13E,KAAK03E,EAAaC,MAAMj2E,OAAOg2E,EAAanvC,UACjFmtC,EAAS11E,KAAK03E,EAAarhE,OAAOuhE,IACpC,CACA,OAAOhC,CACT,CACF,CACA,SAASgC,GAA0B/B,GACjC,OAAOA,EAAQ15E,OAAS,CAC1B,CACA,SAASo7E,KACP,IAAgBzgF,EAAZC,EAAQ,GACZ,MAAO,CACLm7E,UAAW,WACTn7E,EAAMiJ,KAAKlJ,EAAO,GACpB,EACAo6D,MAAO,SAAS,EAAG,GACjBp6D,EAAKkJ,KAAK,CAAE,EAAG,GACjB,EACAmyE,QAAS1oB,EACT6tB,OAAQ,WACN,IAAIA,EAASvgF,EAGb,OAFAA,EAAQ,GACRD,EAAO,KACAwgF,CACT,EACAO,OAAQ,WACF9gF,EAAMoF,OAAS,GAAGpF,EAAMiJ,KAAKjJ,EAAM4gF,MAAMj2E,OAAO3K,EAAMwxC,SAC5D,EAEJ,CACA,SAAS6uC,GAAgB5nE,EAAGC,GAC1B,QAASD,EAAIA,EAAE/R,GAAG,GAAK,EAAI+R,EAAE,GAAK,GAAQ,GAAI,GAAQA,EAAE,MAAQC,EAAIA,EAAEhS,GAAG,GAAK,EAAIgS,EAAE,GAAK,GAAQ,GAAI,GAAQA,EAAE,GACjH,CACA,IAAIqoE,GAA0B3B,GAAYX,IAC1C,SAAqCzrB,GACnC,IAAmC0tB,EAA/B,EAAKx8D,IAAK,EAAKA,IAAK,EAAMA,IAC9B,MAAO,CACLi3D,UAAW,WACTnoB,EAASmoB,YACTuF,EAAQ,CACV,EACAvmB,MAAO,SAAS,EAAI,GAClB,IAAI,EAAM,EAAK,EAAI,IAAK,GAAG,EAAK90B,EAAI,EAAK,GACrCA,EAAI,EAAK,IAAK,IAChB2tB,EAASmH,MAAM,EAAI,GAAM,EAAK,GAAM,EAAI,EAAI,IAAS,IACrDnH,EAASmH,MAAM,EAAK,GACpBnH,EAASooB,UACTpoB,EAASmoB,YACTnoB,EAASmH,MAAM,EAAK,GACpBnH,EAASmH,MAAM,EAAI,GACnBumB,EAAQ,GACC,IAAQ,GAAO,GAAM,KAC1Br7C,EAAI,EAAK,GAAO,KAAG,GAAM,EAAM,IAC/BA,EAAI,EAAK,GAAO,KAAG,GAAM,EAAM,IACnC,EAmBR,SAA0C,EAAI,EAAI,EAAI,GACpD,IAAI,EAAO,EAAO,EAAWxgC,KAAK4H,IAAI,EAAK,GAC3C,OAAO44B,EAAI,GAAY,GAAIxgC,KAAKm8E,MAAMn8E,KAAK4H,IAAI,IAAO,EAAQ5H,KAAKugC,IAAI,IAAOvgC,KAAK4H,IAAI,GAAM5H,KAAK4H,IAAI,IAAO,EAAQ5H,KAAKugC,IAAI,IAAOvgC,KAAK4H,IAAI,KAAQ,EAAQ,EAAQ,KAAc,EAAK,GAAM,CACjM,CAtBaw0E,CAAiC,EAAI,EAAI,EAAI,GAClDjuB,EAASmH,MAAM,EAAK,GACpBnH,EAASooB,UACTpoB,EAASmoB,YACTnoB,EAASmH,MAAM,EAAK,GACpBumB,EAAQ,GAEV1tB,EAASmH,MAAM,EAAK,EAAI,EAAK,GAC7B,EAAM,CACR,EACAihB,QAAS,WACPpoB,EAASooB,UACT,EAAK,EAAKl3D,GACZ,EACAw8D,MAAO,WACL,OAAO,EAAIA,CACb,EAEJ,IAKA,SAA4CQ,EAAMnlD,EAAIolD,EAAWnuB,GAC/D,IAAI,EACJ,GAAY,MAARkuB,EACF,EAAIC,EAAY,GAChBnuB,EAASmH,OAAO,GAAG,GACnBnH,EAASmH,MAAM,EAAG,GAClBnH,EAASmH,MAAM,GAAG,GAClBnH,EAASmH,MAAM,GAAG,GAClBnH,EAASmH,MAAM,IAAI,GACnBnH,EAASmH,MAAM,GAAI,GACnBnH,EAASmH,OAAO,IAAI,GACpBnH,EAASmH,OAAO,GAAG,GACnBnH,EAASmH,OAAO,GAAG,QACd,GAAI90B,EAAI67C,EAAK,GAAKnlD,EAAG,IAAM,GAAG,CACnC,IAAIhxB,EAAIm2E,EAAK,GAAKnlD,EAAG,GAAK,IAAK,GAC/B,EAAIolD,EAAYp2E,EAAI,EACpBioD,EAASmH,OAAOpvD,EAAG,GACnBioD,EAASmH,MAAM,EAAG,GAClBnH,EAASmH,MAAMpvD,EAAG,EACpB,MACEioD,EAASmH,MAAMp+B,EAAG,GAAIA,EAAG,GAE7B,GAlEoH,EAAG,IAAI,GAAI,IAgM/H,SAASqlD,GAAiBt7B,EAAItB,EAAIhiC,EAAIE,GACpC,OAAO,SAAS3iB,GACd,IAAgH8iD,EAA5GpqC,EAAI1Y,EAAK0Y,EAAGC,EAAI3Y,EAAK2Y,EAAG2oE,EAAK5oE,EAAE/R,EAAG46E,EAAK7oE,EAAE9R,EAAuBspE,EAAK,EAAGl6B,EAAK,EAAG3nC,EAA/BsK,EAAEhS,EAAuC26E,EAAIz0E,EAAnC8L,EAAE/R,EAA2C26E,EAE5G,GADAz+B,EAAIiD,EAAKu7B,EACJjzE,KAAMy0C,EAAI,GAAf,CAEA,GADAA,GAAKz0C,EACDA,EAAK,EAAG,CACV,GAAIy0C,EAAIotB,EAAI,OACRptB,EAAI9M,IAAIA,EAAK8M,EACnB,MAAO,GAAIz0C,EAAK,EAAG,CACjB,GAAIy0C,EAAI9M,EAAI,OACR8M,EAAIotB,IAAIA,EAAKptB,EACnB,CAEA,GADAA,EAAIrgC,EAAK6+D,EACJjzE,KAAMy0C,EAAI,GAAf,CAEA,GADAA,GAAKz0C,EACDA,EAAK,EAAG,CACV,GAAIy0C,EAAI9M,EAAI,OACR8M,EAAIotB,IAAIA,EAAKptB,EACnB,MAAO,GAAIz0C,EAAK,EAAG,CACjB,GAAIy0C,EAAIotB,EAAI,OACRptB,EAAI9M,IAAIA,EAAK8M,EACnB,CAEA,GADAA,EAAI2B,EAAK88B,EACJ10E,KAAMi2C,EAAI,GAAf,CAEA,GADAA,GAAKj2C,EACDA,EAAK,EAAG,CACV,GAAIi2C,EAAIotB,EAAI,OACRptB,EAAI9M,IAAIA,EAAK8M,EACnB,MAAO,GAAIj2C,EAAK,EAAG,CACjB,GAAIi2C,EAAI9M,EAAI,OACR8M,EAAIotB,IAAIA,EAAKptB,EACnB,CAEA,GADAA,EAAIngC,EAAK4+D,EACJ10E,KAAMi2C,EAAI,GAAf,CAEA,GADAA,GAAKj2C,EACDA,EAAK,EAAG,CACV,GAAIi2C,EAAI9M,EAAI,OACR8M,EAAIotB,IAAIA,EAAKptB,EACnB,MAAO,GAAIj2C,EAAK,EAAG,CACjB,GAAIi2C,EAAIotB,EAAI,OACRptB,EAAI9M,IAAIA,EAAK8M,EACnB,CASA,OARIotB,EAAK,IAAGlwE,EAAK0Y,EAAI,CACnB/R,EAAG26E,EAAKpR,EAAK7hE,EACbzH,EAAG26E,EAAKrR,EAAKrjE,IAEXmpC,EAAK,IAAGh2C,EAAK2Y,EAAI,CACnBhS,EAAG26E,EAAKtrC,EAAK3nC,EACbzH,EAAG26E,EAAKvrC,EAAKnpC,IAER7M,CAjBiB,CAVA,CAVA,CAVA,CAgD1B,CACF,CACA,IAAIwhF,GAAuB,IAkB3B,SAASC,GAAkB17B,EAAItB,EAAIhiC,EAAIE,GACrC,OAAO,SAASswC,GACd,IAAqH2rB,EAAUe,EAASM,EA6DpIyB,EAAKC,EAAKC,EAAKC,EAAIC,EAAIC,EAAIxqD,EAAOopD,EA7DlCqB,EAAY/uB,EAAUgvB,EAAiBxB,KAA6BlB,EAAW8B,GAAiBt7B,EAAItB,EAAIhiC,EAAIE,GAC5Gm8D,EAAO,CACT1kB,MAAOA,EACPghB,UA2DF,WACE0D,EAAK1kB,MAAQqjB,EACTkC,GAASA,EAAQz2E,KAAK+2E,EAAO,IACjC1oD,GAAQ,EACRwqD,GAAK,EACLF,EAAKC,EAAK39D,GACZ,EAhEEk3D,QAiEF,WACMuD,IACFnB,EAAUiE,EAAKC,GACXC,GAAOG,GAAIE,EAAelB,SAC9BnC,EAAS11E,KAAK+4E,EAAezB,WAE/B1B,EAAK1kB,MAAQA,EACT2nB,GAAI9uB,EAASooB,SACnB,EAxEEC,aAAc,WACZroB,EAAWgvB,EACXrD,EAAW,GACXe,EAAU,GACVgB,GAAQ,CACV,EACApF,WAAY,WACVtoB,EAAW+uB,EACXpD,EAAWv3E,EAAG+4B,MAAMw+C,GACpB,IAAIC,EAgBR,SAAuBhnE,GAErB,IADA,IAAIqqE,EAAK,EAAGj9E,EAAI06E,EAAQt6E,OAAQuB,EAAIiR,EAAE,GAC7B9O,EAAI,EAAGA,EAAI9D,IAAK8D,EACvB,IAAK,IAAmD4P,EAA/C6jB,EAAI,EAAGn4B,EAAIs7E,EAAQ52E,GAAIomD,EAAI9qD,EAAEgB,OAAQqT,EAAIrU,EAAE,GAAOm4B,EAAI2yB,IAAK3yB,EAClE7jB,EAAItU,EAAEm4B,GACF9jB,EAAE,IAAM9R,EACN+R,EAAE,GAAK/R,GAAKw1D,GAAW1jD,EAAGC,EAAGd,GAAK,KAAKqqE,EAEvCvpE,EAAE,IAAM/R,GAAKw1D,GAAW1jD,EAAGC,EAAGd,GAAK,KAAKqqE,EAE9CxpE,EAAIC,EAGR,OAAc,IAAPupE,CACT,CA9B0BC,CAAc,CAAEp8B,EAAIpjC,IAAOy/D,EAASzB,GAAS9B,EAAiBwD,EAAUzD,EAASv5E,QACnG+8E,GAAUC,KACZpvB,EAASqoB,eACL8G,IACFnvB,EAASmoB,YACTjyC,EAAY,KAAM,KAAM,EAAG8pB,GAC3BA,EAASooB,WAEPgH,GACF1D,GAAmBC,EAAUvwB,EAASwwB,EAAiB11C,EAAa8pB,GAEtEA,EAASsoB,cAEXqD,EAAWe,EAAUM,EAAO,IAC9B,GAiBF,SAAS92C,EAAYg4C,EAAMnlD,EAAIolD,EAAWnuB,GACxC,IAAIv6C,EAAI,EAAG4pE,EAAK,EAChB,GAAY,MAARnB,IAAiBzoE,EAAI6pE,EAAOpB,EAAMC,OAAiBkB,EAAKC,EAAOvmD,EAAIolD,KAAeoB,EAAcrB,EAAMnlD,GAAM,EAAIolD,EAAY,EAC9H,GACEnuB,EAASmH,MAAY,IAAN1hD,GAAiB,IAANA,EAAUqtC,EAAKtjC,EAAI/J,EAAI,EAAIiK,EAAK8hC,UAClD/rC,GAAKA,EAAI0oE,EAAY,GAAK,KAAOkB,QAE3CrvB,EAASmH,MAAMp+B,EAAG,GAAIA,EAAG,GAE7B,CACA,SAASsjD,EAAa34E,EAAGC,GACvB,OAAOm/C,GAAMp/C,GAAKA,GAAK8b,GAAMgiC,GAAM79C,GAAKA,GAAK+b,CAC/C,CACA,SAASy3C,EAAMzzD,EAAGC,GACZ04E,EAAa34E,EAAGC,IAAIqsD,EAASmH,MAAMzzD,EAAGC,EAC5C,CAkBA,SAAS62E,EAAU92E,EAAGC,GAGpB,IAAIvC,EAAIi7E,EAFR34E,EAAI7B,KAAK+G,KAAI,IAAuB/G,KAAK+B,IAAI26E,GAAsB76E,IACnEC,EAAI9B,KAAK+G,KAAI,IAAuB/G,KAAK+B,IAAI26E,GAAsB56E,KAGnE,GADI+4E,GAASM,EAAK/2E,KAAK,CAAEvC,EAAGC,IACxB2wB,EACFmqD,EAAM/6E,EAAGg7E,EAAM/6E,EAAGg7E,EAAMv9E,EACxBkzB,GAAQ,EACJlzB,IACF4uD,EAASmoB,YACTnoB,EAASmH,MAAMzzD,EAAGC,SAGpB,GAAIvC,GAAK09E,EAAI9uB,EAASmH,MAAMzzD,EAAGC,OAAS,CACtC,IAAIk5C,EAAI,CACNpnC,EAAG,CACD/R,EAAGk7E,EACHj7E,EAAGk7E,GAELnpE,EAAG,CACDhS,EAAGA,EACHC,EAAGA,IAGH24E,EAASz/B,IACNiiC,IACH9uB,EAASmoB,YACTnoB,EAASmH,MAAMta,EAAEpnC,EAAE/R,EAAGm5C,EAAEpnC,EAAE9R,IAE5BqsD,EAASmH,MAAMta,EAAEnnC,EAAEhS,EAAGm5C,EAAEnnC,EAAE/R,GACrBvC,GAAG4uD,EAASooB,UACjBsF,GAAQ,GACCt8E,IACT4uD,EAASmoB,YACTnoB,EAASmH,MAAMzzD,EAAGC,GAClB+5E,GAAQ,EAEZ,CAEFkB,EAAKl7E,EAAGm7E,EAAKl7E,EAAGm7E,EAAK19E,CACvB,CACA,OAAOy6E,CACT,EACA,SAASyD,EAAO1qE,EAAGupE,GACjB,OAAO97C,EAAIztB,EAAE,GAAKkuC,GAAM,GAAIq7B,EAAY,EAAI,EAAI,EAAI97C,EAAIztB,EAAE,GAAK4K,GAAM,GAAI2+D,EAAY,EAAI,EAAI,EAAI97C,EAAIztB,EAAE,GAAK4sC,GAAM,GAAI28B,EAAY,EAAI,EAAI,EAAIA,EAAY,EAAI,EAAI,CACpK,CACA,SAAS/yB,EAAQ31C,EAAGC,GAClB,OAAO6pE,EAAc9pE,EAAE/R,EAAGgS,EAAEhS,EAC9B,CACA,SAAS67E,EAAc9pE,EAAGC,GACxB,IAAI8pE,EAAKF,EAAO7pE,EAAG,GAAIgqE,EAAKH,EAAO5pE,EAAG,GACtC,OAAO8pE,IAAOC,EAAKD,EAAKC,EAAY,IAAPD,EAAW9pE,EAAE,GAAKD,EAAE,GAAY,IAAP+pE,EAAW/pE,EAAE,GAAKC,EAAE,GAAY,IAAP8pE,EAAW/pE,EAAE,GAAKC,EAAE,GAAKA,EAAE,GAAKD,EAAE,EACnH,CACF,CACA,SAASiqE,GAAaC,GACpB,IAAI,EAAK,EAAG,EAAK,GAAI,EAAGzzB,EAAI0zB,GAAyBD,GAAY/qE,EAAIs3C,EAAE,EAAI,GAK3E,OAJAt3C,EAAEirE,UAAY,SAAShyB,GACrB,OAAKxiD,UAAUjJ,OACR8pD,EAAE,EAAK2B,EAAE,GAAK,GAAI,IAAK,EAAKA,EAAE,GAAK,GAAI,KADhB,CAAE,EAAK,GAAI,IAAK,EAAK,GAAI,IAEzD,EACOj5C,CACT,CACA,SAASkrE,GAAsB,EAAI,GACjC,IAAI,EAAQj+E,KAAK4H,IAAI,GAAKzH,GAAK,EAAQH,KAAK4H,IAAI,IAAO,EAAGs2E,EAAI,EAAI,GAAS,EAAI/9E,EAAI,GAAQ,EAAKH,KAAKogC,KAAK89C,GAAK/9E,EAC/G,SAASg+E,EAAQ,EAAG,GAClB,IAAI,EAAIn+E,KAAKogC,KAAK89C,EAAI,EAAI/9E,EAAIH,KAAK4H,IAAI,IAAMzH,EAC7C,MAAO,CAAE,EAAIH,KAAK4H,IAAI,GAAKzH,GAAI,EAAK,EAAIH,KAAKugC,IAAI,GACnD,CAKA,OAJA49C,EAAQhkB,OAAS,SAASt4D,EAAGC,GAC3B,IAAI,EAAO,EAAKA,EAChB,MAAO,CAAE9B,KAAK69D,MAAMh8D,EAAG,GAAQ1B,EAAGs3D,IAASymB,GAAKr8E,EAAIA,EAAI,EAAO,GAAQ1B,EAAIA,IAAM,EAAIA,IACvF,EACOg+E,CACT,CA1KA57E,EAAGkyE,IAAI2J,WAAa,WAClB,IAAIn9B,EAAItB,EAAIhiC,EAAIE,EAAIo3D,EAAQ+E,EAAMoE,EAAa,CAC7CnJ,OAAQ,SAASoJ,GAIf,OAHIpJ,IAAQA,EAAOqJ,OAAQ,IAC3BrJ,EAAS+E,EAAKqE,IACPC,OAAQ,EACRrJ,CACT,EACAh6D,OAAQ,SAAS+wC,GACf,OAAKxiD,UAAUjJ,QACfy5E,EAAO2C,GAAkB17B,GAAM+K,EAAE,GAAG,GAAIrM,GAAMqM,EAAE,GAAG,GAAIruC,GAAMquC,EAAE,GAAG,GAAInuC,GAAMmuC,EAAE,GAAG,IAC7EipB,IAAQA,EAAOqJ,OAAQ,EAAOrJ,EAAS,MACpCmJ,GAHuB,CAAE,CAAEn9B,EAAItB,GAAM,CAAEhiC,EAAIE,GAIpD,GAEF,OAAOugE,EAAWnjE,OAAO,CAAE,CAAE,EAAG,GAAK,CAAE,IAAK,MAC9C,GA2JC1Y,EAAGkyE,IAAI8J,eAAiB,WACvB,OAAOV,GAAaI,GACtB,GAAG5gC,IAAM4gC,GACT17E,EAAGkyE,IAAI+J,OAAS,WACd,OAAOj8E,EAAGkyE,IAAI8J,iBAAiB/2E,OAAO,CAAE,GAAI,IAAK0sC,OAAO,EAAG,GAAI,OAAQ8pC,UAAU,CAAE,KAAM,OAAQx7E,MAAM,KACzG,EACAD,EAAGkyE,IAAIgK,UAAY,WACjB,IAGInpB,EAIDopB,EAAcC,EAAaC,EAP1BC,EAAUt8E,EAAGkyE,IAAI+J,SACjBM,EAASv8E,EAAGkyE,IAAI8J,iBAAiB/2E,OAAO,CAAE,IAAK,IAAK0sC,OAAO,EAAG,EAAG,OAAQ8pC,UAAU,CAAE,GAAI,KACzFe,EAASx8E,EAAGkyE,IAAI8J,iBAAiB/2E,OAAO,CAAE,IAAK,IAAK0sC,OAAO,EAAG,EAAG,OAAQ8pC,UAAU,CAAE,EAAG,KACjFgB,EAAc,CACvB1pB,MAAO,SAASzzD,EAAGC,GACjBwzD,EAAQ,CAAEzzD,EAAGC,EACf,GAEF,SAAS28E,EAAU/I,GACjB,IAAI7zE,EAAI6zE,EAAY,GAAI5zE,EAAI4zE,EAAY,GAGxC,OAFApgB,EAAQ,KACPopB,EAAa78E,EAAGC,GAAIwzD,IAAWqpB,EAAY98E,EAAGC,GAAIwzD,IAAUspB,EAAY/8E,EAAGC,GACrEwzD,CACT,CA8DA,OA7DAmpB,EAAUtkB,OAAS,SAASub,GAC1B,IAAInnC,EAAIswC,EAAQr8E,QAAS0iB,EAAI25D,EAAQ3+C,YAAar+B,GAAK6zE,EAAY,GAAKxwD,EAAE,IAAMqpB,EAAGzsC,GAAK4zE,EAAY,GAAKxwD,EAAE,IAAMqpB,EACjH,OAAQzsC,GAAK,KAAOA,EAAI,MAAQD,IAAM,MAAQA,GAAK,KAAOi9E,EAASh9E,GAAK,MAAQA,EAAI,MAAQD,IAAM,MAAQA,GAAK,KAAOk9E,EAASF,GAAS1kB,OAAOub,EACjJ,EACA+I,EAAUxJ,OAAS,SAASA,GAC1B,IAAIgK,EAAgBJ,EAAQ5J,OAAOA,GAASiK,EAAeJ,EAAO7J,OAAOA,GAASkK,EAAeJ,EAAO9J,OAAOA,GAC/G,MAAO,CACL3f,MAAO,SAASzzD,EAAGC,GACjBm9E,EAAc3pB,MAAMzzD,EAAGC,GACvBo9E,EAAa5pB,MAAMzzD,EAAGC,GACtBq9E,EAAa7pB,MAAMzzD,EAAGC,EACxB,EACA0zE,OAAQ,WACNyJ,EAAczJ,SACd0J,EAAa1J,SACb2J,EAAa3J,QACf,EACAc,UAAW,WACT2I,EAAc3I,YACd4I,EAAa5I,YACb6I,EAAa7I,WACf,EACAC,QAAS,WACP0I,EAAc1I,UACd2I,EAAa3I,UACb4I,EAAa5I,SACf,EACAC,aAAc,WACZyI,EAAczI,eACd0I,EAAa1I,eACb2I,EAAa3I,cACf,EACAC,WAAY,WACVwI,EAAcxI,aACdyI,EAAazI,aACb0I,EAAa1I,YACf,EAEJ,EACAgI,EAAU/R,UAAY,SAAS1gB,GAC7B,OAAKxiD,UAAUjJ,QACfs+E,EAAQnS,UAAU1gB,GAClB8yB,EAAOpS,UAAU1gB,GACjB+yB,EAAOrS,UAAU1gB,GACVyyB,GAJuBI,EAAQnS,WAKxC,EACA+R,EAAUj8E,MAAQ,SAASwpD,GACzB,OAAKxiD,UAAUjJ,QACfs+E,EAAQr8E,MAAMwpD,GACd8yB,EAAOt8E,MAAU,IAAJwpD,GACb+yB,EAAOv8E,MAAMwpD,GACNyyB,EAAUv+C,UAAU2+C,EAAQ3+C,cAJL2+C,EAAQr8E,OAKxC,EACAi8E,EAAUv+C,UAAY,SAAS8rB,GAC7B,IAAKxiD,UAAUjJ,OAAQ,OAAOs+E,EAAQ3+C,YACtC,IAAIqO,EAAIswC,EAAQr8E,QAASX,GAAKmqD,EAAE,GAAIlqD,GAAKkqD,EAAE,GAI3C,OAHA0yB,EAAeG,EAAQ3+C,UAAU8rB,GAAGoyB,WAAW,CAAE,CAAEv8E,EAAI,KAAO0sC,EAAGzsC,EAAI,KAAOysC,GAAK,CAAE1sC,EAAI,KAAO0sC,EAAGzsC,EAAI,KAAOysC,KAAO0mC,OAAO+J,GAAa1pB,MACvIqpB,EAAcG,EAAO5+C,UAAU,CAAEr+B,EAAI,KAAO0sC,EAAGzsC,EAAI,KAAOysC,IAAK6vC,WAAW,CAAE,CAAEv8E,EAAI,KAAO0sC,EAAI,GAAGzsC,EAAI,IAAMysC,EAAI,IAAK,CAAE1sC,EAAI,KAAO0sC,EAAI,GAAGzsC,EAAI,KAAOysC,EAAI,MAAO0mC,OAAO+J,GAAa1pB,MACjLspB,EAAcG,EAAO7+C,UAAU,CAAEr+B,EAAI,KAAO0sC,EAAGzsC,EAAI,KAAOysC,IAAK6vC,WAAW,CAAE,CAAEv8E,EAAI,KAAO0sC,EAAI,GAAGzsC,EAAI,KAAOysC,EAAI,IAAK,CAAE1sC,EAAI,KAAO0sC,EAAI,GAAGzsC,EAAI,KAAOysC,EAAI,MAAO0mC,OAAO+J,GAAa1pB,MAC3KmpB,CACT,EACOA,EAAUj8E,MAAM,KACzB,EACA,IAAI48E,GAAoBC,GA2BpBC,GAAqBC,GAAqBC,GAAqBC,GA3BnBC,GAAkB,CAChEpqB,MAAOzH,EACPyoB,UAAWzoB,EACX0oB,QAAS1oB,EACT2oB,aAAc,WACZ6I,GAAyB,EACzBK,GAAgBpJ,UAAYqJ,EAC9B,EACAlJ,WAAY,WACViJ,GAAgBpJ,UAAYoJ,GAAgBnJ,QAAUmJ,GAAgBpqB,MAAQzH,EAC9EuxB,IAAsB5+C,EAAI6+C,GAAyB,EACrD,GAEF,SAASM,KACP,IAAIC,EAAKC,EAAK5+B,EAAItB,EAKlB,SAAS83B,EAAU51E,EAAGC,GACpBu9E,IAA0B1/B,EAAK99C,EAAIo/C,EAAKn/C,EACxCm/C,EAAKp/C,EAAG89C,EAAK79C,CACf,CAPA49E,GAAgBpqB,MAAQ,SAASzzD,EAAGC,GAClC49E,GAAgBpqB,MAAQmiB,EACxBmI,EAAM3+B,EAAKp/C,EAAGg+E,EAAMlgC,EAAK79C,CAC3B,EAKA49E,GAAgBnJ,QAAU,WACxBkB,EAAUmI,EAAKC,EACjB,CACF,CAEA,IAAIC,GAAoB,CACtBxqB,MAMF,SAAgCzzD,EAAGC,GAC7BD,EAAIy9E,KAAqBA,GAAsBz9E,GAC/CA,EAAI29E,KAAqBA,GAAsB39E,GAC/CC,EAAIy9E,KAAqBA,GAAsBz9E,GAC/CA,EAAI29E,KAAqBA,GAAsB39E,EACrD,EAVEw0E,UAAWzoB,EACX0oB,QAAS1oB,EACT2oB,aAAc3oB,EACd4oB,WAAY5oB,GAQd,SAASkyB,KACP,IAAIC,EAAcC,GAAwB,KAAMvE,EAAS,GACrDzG,EAAS,CACX3f,MAAOA,EACPghB,UAAW,WACTrB,EAAO3f,MAAQ4qB,CACjB,EACA3J,QAASA,EACTC,aAAc,WACZvB,EAAOsB,QAAU4J,CACnB,EACA1J,WAAY,WACVxB,EAAOsB,QAAUA,EACjBtB,EAAO3f,MAAQA,CACjB,EACA8qB,YAAa,SAASp0B,GAEpB,OADAg0B,EAAcC,GAAwBj0B,GAC/BipB,CACT,EACA7M,OAAQ,WACN,GAAIsT,EAAOn7E,OAAQ,CACjB,IAAI6nE,EAASsT,EAAO7R,KAAK,IAEzB,OADA6R,EAAS,GACFtT,CACT,CACF,GAEF,SAAS9S,EAAMzzD,EAAGC,GAChB45E,EAAOt3E,KAAK,IAAKvC,EAAG,IAAKC,EAAGk+E,EAC9B,CACA,SAASE,EAAer+E,EAAGC,GACzB45E,EAAOt3E,KAAK,IAAKvC,EAAG,IAAKC,GACzBmzE,EAAO3f,MAAQmmB,CACjB,CACA,SAASA,EAAU55E,EAAGC,GACpB45E,EAAOt3E,KAAK,IAAKvC,EAAG,IAAKC,EAC3B,CACA,SAASy0E,IACPtB,EAAO3f,MAAQA,CACjB,CACA,SAAS6qB,IACPzE,EAAOt3E,KAAK,IACd,CACA,OAAO6wE,CACT,CACA,SAASgL,GAAwBjiD,GAC/B,MAAO,MAAQA,EAAS,IAAMA,EAAS,IAAMA,EAAS,aAAe,EAAIA,EAAS,IAAMA,EAAS,IAAMA,EAAS,YAAc,EAAIA,EAAS,GAC7I,CACA,IAqmBIqiD,GArmBAC,GAAsB,CACxBhrB,MAAOirB,GACPjK,UAAWkK,GACXjK,QAASkK,GACTjK,aAAc,WACZ8J,GAAoBhK,UAAYoK,EAClC,EACAjK,WAAY,WACV6J,GAAoBhrB,MAAQirB,GAC5BD,GAAoBhK,UAAYkK,GAChCF,GAAoB/J,QAAUkK,EAChC,GAEF,SAASF,GAAyB1+E,EAAGC,GACnCg1E,IAAqBj1E,EACrBk1E,IAAqBj1E,IACnBk1E,EACJ,CACA,SAASwJ,KACP,IAAIv/B,EAAItB,EAKR,SAAS83B,EAAU51E,EAAGC,GACpB,IAAIyH,EAAK1H,EAAIo/C,EAAIl5C,EAAKjG,EAAI69C,EAAI6H,EAAIxnD,KAAKogC,KAAK72B,EAAKA,EAAKxB,EAAKA,GAC3DkvE,IAAqBzvB,GAAKvG,EAAKp/C,GAAK,EACpCq1E,IAAqB1vB,GAAK7H,EAAK79C,GAAK,EACpCq1E,IAAqB3vB,EACrB+4B,GAAyBt/B,EAAKp/C,EAAG89C,EAAK79C,EACxC,CAVAw+E,GAAoBhrB,MAAQ,SAASzzD,EAAGC,GACtCw+E,GAAoBhrB,MAAQmiB,EAC5B8I,GAAyBt/B,EAAKp/C,EAAG89C,EAAK79C,EACxC,CAQF,CACA,SAAS2+E,KACPH,GAAoBhrB,MAAQirB,EAC9B,CACA,SAASG,KACP,IAAId,EAAKC,EAAK5+B,EAAItB,EAKlB,SAAS83B,EAAU51E,EAAGC,GACpB,IAAIyH,EAAK1H,EAAIo/C,EAAIl5C,EAAKjG,EAAI69C,EAAI6H,EAAIxnD,KAAKogC,KAAK72B,EAAKA,EAAKxB,EAAKA,GAC3DkvE,IAAqBzvB,GAAKvG,EAAKp/C,GAAK,EACpCq1E,IAAqB1vB,GAAK7H,EAAK79C,GAAK,EACpCq1E,IAAqB3vB,EAErB4vB,KADA5vB,EAAI7H,EAAK99C,EAAIo/C,EAAKn/C,IACQm/C,EAAKp/C,GAC/Bw1E,IAAqB7vB,GAAK7H,EAAK79C,GAC/Bw1E,IAAyB,EAAJ9vB,EACrB+4B,GAAyBt/B,EAAKp/C,EAAG89C,EAAK79C,EACxC,CAdAw+E,GAAoBhrB,MAAQ,SAASzzD,EAAGC,GACtCw+E,GAAoBhrB,MAAQmiB,EAC5B8I,GAAyBX,EAAM3+B,EAAKp/C,EAAGg+E,EAAMlgC,EAAK79C,EACpD,EAYAw+E,GAAoB/J,QAAU,WAC5BkB,EAAUmI,EAAKC,EACjB,CACF,CACA,SAASc,GAAmB78B,GAC1B,IAAIs8B,EAAc,IACdnL,EAAS,CACX3f,MAAOA,EACPghB,UAAW,WACTrB,EAAO3f,MAAQ4qB,CACjB,EACA3J,QAASA,EACTC,aAAc,WACZvB,EAAOsB,QAAU4J,CACnB,EACA1J,WAAY,WACVxB,EAAOsB,QAAUA,EACjBtB,EAAO3f,MAAQA,CACjB,EACA8qB,YAAa,SAASp0B,GAEpB,OADAo0B,EAAcp0B,EACPipB,CACT,EACA7M,OAAQva,GAEV,SAASyH,EAAMzzD,EAAGC,GAChBgiD,EAAQ88B,OAAO/+E,EAAIu+E,EAAat+E,GAChCgiD,EAAQtoD,IAAIqG,EAAGC,EAAGs+E,EAAa,EAAG,GACpC,CACA,SAASF,EAAer+E,EAAGC,GACzBgiD,EAAQ88B,OAAO/+E,EAAGC,GAClBmzE,EAAO3f,MAAQmmB,CACjB,CACA,SAASA,EAAU55E,EAAGC,GACpBgiD,EAAQ+8B,OAAOh/E,EAAGC,EACpB,CACA,SAASy0E,IACPtB,EAAO3f,MAAQA,CACjB,CACA,SAAS6qB,IACPr8B,EAAQg9B,WACV,CACA,OAAO7L,CACT,CACA,SAAS8L,GAAgBC,GACvB,IAAI,EAAK,GAAIC,EAAiBjhF,KAAKugC,IAAI,GAAK42B,IAAa+pB,EAAW,GACpE,SAASC,EAASlM,GAChB,OAAQiM,EAAWE,EAAoBC,GAAcpM,EACvD,CACA,SAASoM,EAAapM,GACpB,OAAOqM,GAAsBrM,GAAQ,SAASpzE,EAAGC,GAC/CD,EAAIm/E,EAAQn/E,EAAGC,GACfmzE,EAAO3f,MAAMzzD,EAAE,GAAIA,EAAE,GACvB,GACF,CACA,SAASu/E,EAAkBnM,GACzB,IAAI,EAAU2K,EAAKC,EAAK0B,EAAKC,EAAKC,EAAK,EAAIxgC,EAAItB,EAAI+hC,EAAIhpB,EAAIipB,EACvDR,EAAW,CACb7rB,MAAOA,EACPghB,UAAWA,EACXC,QAASA,EACTC,aAAc,WACZvB,EAAOuB,eACP2K,EAAS7K,UAAYmC,CACvB,EACAhC,WAAY,WACVxB,EAAOwB,aACP0K,EAAS7K,UAAYA,CACvB,GAEF,SAAShhB,EAAMzzD,EAAGC,GAChBD,EAAIm/E,EAAQn/E,EAAGC,GACfmzE,EAAO3f,MAAMzzD,EAAE,GAAIA,EAAE,GACvB,CACA,SAASy0E,IACPr1B,EAAK5hC,IACL8hE,EAAS7rB,MAAQqjB,EACjB1D,EAAOqB,WACT,CACA,SAASqC,EAAU,EAAG,GACpB,IAAIv9C,EAAIs8C,GAAiB,CAAE,EAAG,IAAM3kE,EAAIiuE,EAAQ,EAAG,GACnDY,EAAe3gC,EAAItB,EAAI,EAAI+hC,EAAIhpB,EAAIipB,EAAI1gC,EAAKluC,EAAE,GAAI4sC,EAAK5sC,EAAE,GAAI,EAAK,EAAG2uE,EAAKtmD,EAAE,GAAIs9B,EAAKt9B,EAAE,GAAIumD,EAAKvmD,EAAE,GAAI8lD,EAAUjM,GAChHA,EAAO3f,MAAMrU,EAAItB,EACnB,CACA,SAAS42B,IACP4K,EAAS7rB,MAAQA,EACjB2f,EAAOsB,SACT,CACA,SAASkC,IACPnC,IACA6K,EAAS7rB,MAAQkjB,EACjB2I,EAAS5K,QAAUmC,CACrB,CACA,SAASF,EAAU,EAAG,GACpBG,EAAU,EAAM,EAAS,GAAIiH,EAAM3+B,EAAI4+B,EAAMlgC,EAAI4hC,EAAMG,EAAIF,EAAM9oB,EAAI+oB,EAAME,EAC3ER,EAAS7rB,MAAQqjB,CACnB,CACA,SAASD,IACPkJ,EAAe3gC,EAAItB,EAAI,EAAI+hC,EAAIhpB,EAAIipB,EAAI/B,EAAKC,EAAK,EAAK0B,EAAKC,EAAKC,EAAKP,EAAUjM,GAC/EkM,EAAS5K,QAAUA,EACnBA,GACF,CACA,OAAO4K,CACT,CACA,SAASS,EAAe3gC,EAAItB,EAAI,EAAI+hC,EAAIhpB,EAAIipB,EAAIhkE,EAAIE,EAAI,EAAI2/D,EAAI7kB,EAAIkpB,EAAIv0B,EAAO2nB,GAC7E,IAAI1rE,EAAKoU,EAAKsjC,EAAIl5C,EAAK8V,EAAK8hC,EAAI6Y,EAAKjvD,EAAKA,EAAKxB,EAAKA,EACpD,GAAIywD,EAAK,EAAI,GAAMlL,IAAS,CAC1B,IAAI15C,EAAI8tE,EAAKlE,EAAI3pE,EAAI6kD,EAAKC,EAAIv9B,EAAIumD,EAAKE,EAAIx3B,EAAIrqD,KAAKogC,KAAKxsB,EAAIA,EAAIC,EAAIA,EAAIunB,EAAIA,GAAI,EAAKp7B,KAAK03D,KAAKt8B,GAAKivB,GAAI,EAAK7pB,EAAIA,EAAIpF,GAAK,GAAK,IAAKoF,EAAI,EAAK,GAAM,IAAK,EAAK,GAAM,EAAIxgC,KAAK69D,MAAMhqD,EAAGD,GAAIb,EAAIiuE,EAAQ,EAAI,GAAKpjE,EAAK7K,EAAE,GAAInH,EAAKmH,EAAE,GAAI+uE,EAAMlkE,EAAKqjC,EAAI8gC,EAAMn2E,EAAK+zC,EAAIqiC,EAAKj6E,EAAK+5E,EAAMv4E,EAAKw4E,GACpRC,EAAKA,EAAKxpB,EAAK,GAAMh4B,GAAKj3B,EAAKu4E,EAAM/5E,EAAKg6E,GAAOvpB,EAAK,IAAM,IAAMkpB,EAAKlE,EAAK9kB,EAAKC,EAAKgpB,EAAKE,EAAKZ,KAClGW,EAAe3gC,EAAItB,EAAI,EAAI+hC,EAAIhpB,EAAIipB,EAAI/jE,EAAIhS,EAAI,EAAIgI,GAAKy2C,EAAGx2C,GAAKw2C,EAAGjvB,EAAGkyB,EAAO2nB,GAC7EA,EAAO3f,MAAM13C,EAAIhS,GACjBg2E,EAAehkE,EAAIhS,EAAI,EAAIgI,EAAGC,EAAGunB,EAAGzd,EAAIE,EAAI,EAAI2/D,EAAI7kB,EAAIkpB,EAAIv0B,EAAO2nB,GAEvE,CACF,CAMA,OALAkM,EAASzU,UAAY,SAAS1gB,GAC5B,OAAKxiD,UAAUjJ,QACf2gF,GAAY,EAAKl1B,EAAIA,GAAK,GAAK,GACxBm1B,GAFuBnhF,KAAKogC,KAAK,EAG1C,EACO+gD,CACT,CAiEA,SAASc,GAAiBhN,GACxB3yE,KAAK2yE,OAASA,CAChB,CAqBA,SAASqM,GAAsBrM,EAAQ3f,GACrC,MAAO,CACLA,MAAOA,EACPkgB,OAAQ,WACNP,EAAOO,QACT,EACAc,UAAW,WACTrB,EAAOqB,WACT,EACAC,QAAS,WACPtB,EAAOsB,SACT,EACAC,aAAc,WACZvB,EAAOuB,cACT,EACAC,WAAY,WACVxB,EAAOwB,YACT,EAEJ,CAGA,SAASyL,GAAkBlB,GACzB,OAAOjD,IAAyB,WAC9B,OAAOiD,CACT,GAFOjD,EAGT,CACA,SAASA,GAAyBD,GAChC,IAAIkD,EAASx5E,EAAQ26E,EAGgD,EAAI,EAAoGlN,EAHzImN,EAAkBrB,IAAgB,SAASl/E,EAAGC,GAEhF,MAAO,EADPD,EAAIm/E,EAAQn/E,EAAGC,IACJ,GAAKysC,EAAI,EAAI,EAAK1sC,EAAE,GAAK0sC,EACtC,IAAIA,EAAI,IAAK1sC,EAAI,IAAKC,EAAI,IAAK,EAAI,EAAG,EAAI,EAAG,EAAK,EAAG,EAAK,EAAG,EAAK,EAAWugF,EAAUnG,GAAyBoG,EAAW51B,EAAa61B,EAAY,KAAMnE,EAAa,KACvK,SAASoE,EAAWltB,GAElB,MAAO,EADPA,EAAQ6sB,EAAc7sB,EAAM,GAAK6B,GAAY7B,EAAM,GAAK6B,KACzC,GAAK5oB,EAAI,EAAI,EAAK+mB,EAAM,GAAK/mB,EAC9C,CACA,SAAS4rB,EAAO7E,GAEd,OADAA,EAAQ6sB,EAAchoB,QAAQ7E,EAAM,GAAK,GAAM/mB,GAAI,EAAK+mB,EAAM,IAAM/mB,KACpD,CAAE+mB,EAAM,GAAK8B,GAAY9B,EAAM,GAAK8B,GACtD,CA2CA,SAAShb,IACP+lC,EAAgBzI,GAAelyE,EAASi7E,GAAgB,EAAI,EAAI,GAAKzB,GACrE,IAAI9sC,EAAS8sC,EAAQ,EAAG,GAGxB,OAFA,EAAKn/E,EAAIqyC,EAAO,GAAK3F,EACrB,EAAKzsC,EAAIoyC,EAAO,GAAK3F,EACdm0C,GACT,CACA,SAASA,IAEP,OADIzN,IAAQA,EAAOqJ,OAAQ,EAAOrJ,EAAS,MACpCuN,CACT,CACA,OArDAA,EAAWvN,OAAS,SAASoJ,GAI3B,OAHIpJ,IAAQA,EAAOqJ,OAAQ,IAC3BrJ,EAAS0N,GAAyBN,EAAQ76E,EAAQ46E,EAAgBE,EAASjE,OACpEC,OAAQ,EACRrJ,CACT,EACAuN,EAAWD,UAAY,SAASv2B,GAC9B,OAAKxiD,UAAUjJ,QACf8hF,EAAe,MAALr2B,GAAau2B,EAAYv2B,EAAGkwB,IApyB1C,SAA2Bl+C,GACzB,IAAI4kD,EAAK5iF,KAAKugC,IAAIvC,GAAS6kD,EAAcD,EAAK,EAAGE,EAAgBtiD,EAAIoiD,GAAM,GAC3E,OAAOrI,GAAYgD,GAInB,SAAkBpvB,GAChB,IAAIitB,EAAQuG,EAAIoB,EAAIC,EAAKnH,EACzB,MAAO,CACLvF,UAAW,WACT0M,EAAMD,GAAK,EACXlH,EAAQ,CACV,EACAvmB,MAAO,SAAS,EAAG,GACjB,IAAuB2tB,EAAnBC,EAAS,CAAE,EAAG,GAAa3jF,EAAIg+E,EAAQ,EAAG,GAAIniD,EAAIynD,EAActjF,EAAI,EAAI4jF,EAAK,EAAG,GAAK5jF,EAAI4jF,EAAK,GAAK,EAAI,EAAI,IAAK,IAAI,GAAK,EAU7H,IATK/H,IAAW4H,EAAMD,EAAKxjF,IAAI4uD,EAASmoB,YACpC/2E,IAAMwjF,IACRE,EAASG,EAAUhI,EAAQ8H,IACvB9K,GAAsBgD,EAAQ6H,IAAW7K,GAAsB8K,EAAQD,MACzEC,EAAO,IAAM,GACbA,EAAO,IAAM,GACb3jF,EAAIg+E,EAAQ2F,EAAO,GAAIA,EAAO,MAG9B3jF,IAAMwjF,EACRlH,EAAQ,EACJt8E,GACF4uD,EAASmoB,YACT2M,EAASG,EAAUF,EAAQ9H,GAC3BjtB,EAASmH,MAAM2tB,EAAO,GAAIA,EAAO,MAEjCA,EAASG,EAAUhI,EAAQ8H,GAC3B/0B,EAASmH,MAAM2tB,EAAO,GAAIA,EAAO,IACjC90B,EAASooB,WAEX6E,EAAS6H,OACJ,GAAIH,GAAiB1H,GAAUyH,EAActjF,EAAG,CACrD,IAAI2lB,EACEkW,EAAIumD,KAAQz8D,EAAIk+D,EAAUF,EAAQ9H,GAAQ,MAC9CS,EAAQ,EACJgH,GACF10B,EAASmoB,YACTnoB,EAASmH,MAAMpwC,EAAE,GAAG,GAAIA,EAAE,GAAG,IAC7BipC,EAASmH,MAAMpwC,EAAE,GAAG,GAAIA,EAAE,GAAG,IAC7BipC,EAASooB,YAETpoB,EAASmH,MAAMpwC,EAAE,GAAG,GAAIA,EAAE,GAAG,IAC7BipC,EAASooB,UACTpoB,EAASmoB,YACTnoB,EAASmH,MAAMpwC,EAAE,GAAG,GAAIA,EAAE,GAAG,KAGnC,EACI3lB,GAAO67E,GAAWhD,GAAsBgD,EAAQ8H,IAClD/0B,EAASmH,MAAM4tB,EAAO,GAAIA,EAAO,IAEnC9H,EAAS8H,EAAQH,EAAKxjF,EAAGoiF,EAAKvmD,CAChC,EACAm7C,QAAS,WACHwM,GAAI50B,EAASooB,UACjB6E,EAAS,IACX,EACAS,MAAO,WACL,OAAOA,GAASmH,GAAOD,IAAO,CAChC,EAEJ,GAjE4FM,GAAyBrlD,EAAQ,EAAIm5B,IAC9E0rB,EAAc,CAAE,GAAI7kD,GAAW,EAAG,GAAGA,EAAS,KACjG,SAASu/C,EAAQ,EAAG,GAClB,OAAOv9E,KAAKugC,IAAI,GAAKvgC,KAAKugC,IAAI,GAAKqiD,CACrC,CA8DA,SAASQ,EAAUxvE,EAAGC,EAAGyvE,GACvB,IACIC,EAAK,CAAE,EAAG,EAAG,GAAKC,EAAK3L,GADlBH,GAAiB9jE,GAAS8jE,GAAiB7jE,IACM4vE,EAAO7L,GAAoB4L,EAAIA,GAAKE,EAAOF,EAAG,GAAIG,EAAcF,EAAOC,EAAOA,EACxI,IAAKC,EAAa,OAAQL,GAAO1vE,EACjC,IAAIiuE,EAAKe,EAAKa,EAAOE,EAAaC,GAAMhB,EAAKc,EAAOC,EAAaE,EAAQhM,GAAsB0L,EAAIC,GAAKtR,EAAI6F,GAAsBwL,EAAI1B,GACtI/J,GAAoB5F,EAD2H6F,GAAsByL,EAAII,IAEzK,IAAI9qB,EAAI+qB,EAAO3+E,EAAI0yE,GAAoB1F,EAAGpZ,GAAIgrB,EAAKlM,GAAoB9e,EAAGA,GAAI3nB,EAAKjsC,EAAIA,EAAI4+E,GAAMlM,GAAoB1F,EAAGA,GAAK,GAC7H,KAAI/gC,EAAK,GAAT,CACA,IAAIjsB,EAAIllB,KAAKogC,KAAK+Q,GAAKiqB,EAAI2c,GAAsBjf,IAAK5zD,EAAIggB,GAAK4+D,GAG/D,GAFAhM,GAAoB1c,EAAG8W,GACvB9W,EAAI8c,GAAiB9c,IAChBkoB,EAAK,OAAOloB,EACjB,IAAgD5T,EAA5C,EAAK5zC,EAAE,GAAI,EAAKC,EAAE,GAAI,EAAKD,EAAE,GAAI,EAAKC,EAAE,GACxC,EAAK,IAAI2zC,EAAI,EAAI,EAAK,EAAI,EAAKA,GACnC,IAAI,EAAK,EAAK,EAAIu8B,EAAQvjD,EAAI,EAAK,IAAK,GAExC,IADKujD,GAAS,EAAK,IAAIv8B,EAAI,EAAI,EAAK,EAAI,EAAKA,GADSu8B,GAAS,EAAK,GAErDA,EAAQ,EAAK,EAAK,EAAI3oB,EAAE,IAAM56B,EAAI46B,EAAE,GAAK,GAAM,GAAI,EAAK,GAAM,GAAMA,EAAE,IAAMA,EAAE,IAAM,EAAK,EAAK,IAAK,GAAMA,EAAE,IAAMA,EAAE,IAAM,GAAK,CAC3I,IAAI4oB,EAAKjM,GAAsBjf,IAAK5zD,EAAIggB,GAAK4+D,GAE7C,OADAhM,GAAoBkM,EAAI9R,GACjB,CAAE9W,EAAG8c,GAAiB8L,GAC/B,CAbkB,CAcpB,CACA,SAASb,EAAK,EAAG,GACf,IAAInlC,EAAI6kC,EAAc7kD,EAAS,GAAIA,EAAQmlD,EAAO,EAGlD,OAFI,GAAKnlC,EAAGmlC,GAAQ,EAAY,EAAInlC,IAAGmlC,GAAQ,GAC3C,GAAKnlC,EAAGmlC,GAAQ,EAAY,EAAInlC,IAAGmlC,GAAQ,GACxCA,CACT,CACF,CAqsBqEc,EAAmB1B,GAAav2B,GAAKmL,IAC/FurB,KAFuBH,CAGhC,EACAC,EAAWpE,WAAa,SAASpyB,GAC/B,OAAKxiD,UAAUjJ,QACf69E,EAAapyB,EACbs2B,EAAWt2B,EAAI2wB,GAAkB3wB,EAAE,GAAG,GAAIA,EAAE,GAAG,GAAIA,EAAE,GAAG,GAAIA,EAAE,GAAG,IAAMU,EAChEg2B,KAHuBtE,CAIhC,EACAoE,EAAWhgF,MAAQ,SAASwpD,GAC1B,OAAKxiD,UAAUjJ,QACfguC,GAAKyd,EACE5P,KAFuB7N,CAGhC,EACAi0C,EAAWtiD,UAAY,SAAS8rB,GAC9B,OAAKxiD,UAAUjJ,QACfsB,GAAKmqD,EAAE,GACPlqD,GAAKkqD,EAAE,GACA5P,KAHuB,CAAEv6C,EAAGC,EAIrC,EACA0gF,EAAWtuC,OAAS,SAAS8X,GAC3B,OAAKxiD,UAAUjJ,QACf,EAAIyrD,EAAE,GAAK,IAAMmL,GACjB,EAAInL,EAAE,GAAK,IAAMmL,GACV/a,KAHuB,CAAE,EAAIgb,GAAY,EAAIA,GAItD,EACAorB,EAAWh7E,OAAS,SAASwkD,GAC3B,OAAKxiD,UAAUjJ,QACf,EAAKyrD,EAAE,GAAK,IAAMmL,GAClB,EAAKnL,EAAE,GAAK,IAAMmL,GAClB,EAAKnL,EAAEzrD,OAAS,EAAIyrD,EAAE,GAAK,IAAMmL,GAAa,EACvC/a,KAJuB,CAAE,EAAKgb,GAAY,EAAKA,GAAY,EAAKA,GAKzE,EACA70D,EAAGqrD,OAAO40B,EAAYJ,EAAiB,aAYhC,WAGL,OAFApB,EAAUlD,EAAU35E,MAAM7B,KAAMkH,WAChCg5E,EAAWroB,OAAS6mB,EAAQ7mB,QAAUA,EAC/B/d,GACT,CACF,CACA,SAASumC,GAAyB1N,GAChC,OAAOqM,GAAsBrM,GAAQ,SAASpzE,EAAGC,GAC/CmzE,EAAO3f,MAAMzzD,EAAIs1D,GAAYr1D,EAAIq1D,GACnC,GACF,CACA,SAAS+sB,GAAuB,EAAG,GACjC,MAAO,CAAE,EAAG,EACd,CAgBA,SAASC,GAAwB,EAAG,GAClC,MAAO,CAAE,EAAI,GAAI,EAAI,GAAI,GAAK,GAAI,EAAI,GAAI,EAAG,EAC/C,CAEA,SAAS1B,GAAgB,EAAI,EAAI,GAC/B,OAAO,EAAK,GAAM,EAAK/I,GAAe,GAAiB,GAAK,GAAkB,EAAI,IAAO,GAAiB,GAAM,GAAM,EAAK,GAAkB,EAAI,GAAMyK,EACzJ,CACA,SAAS,GAAwB,GAC/B,OAAO,SAAS,EAAG,GACjB,MAAgB,EAAT,GAAK,GAAU,GAAI,EAAI,GAAI,GAAK,GAAI,EAAI,GAAI,EAAG,EACxD,CACF,CACA,SAAS,GAAiB,GACxB,IAAIC,EAAW,GAAwB,GAEvC,OADAA,EAASjqB,OAAS,IAAyB,GACpCiqB,CACT,CACA,SAAS,GAAkB,EAAI,GAC7B,IAAI,EAAQpkF,KAAKugC,IAAI,GAAK,EAAQvgC,KAAK4H,IAAI,GAAK,EAAQ5H,KAAKugC,IAAI,GAAK,EAAQvgC,KAAK4H,IAAI,GACvF,SAASw8E,EAAS,EAAG,GACnB,IAAI,EAAOpkF,KAAKugC,IAAI,GAAI1+B,EAAI7B,KAAKugC,IAAI,GAAK,EAAMz+B,EAAI9B,KAAK4H,IAAI,GAAK,EAAM4/C,EAAIxnD,KAAK4H,IAAI,GAAI2mC,EAAIiZ,EAAI,EAAQ3lD,EAAI,EAC7G,MAAO,CAAE7B,KAAK69D,MAAM/7D,EAAI,EAAQysC,EAAI,EAAO1sC,EAAI,EAAQ2lD,EAAI,GAAQiQ,GAAQlpB,EAAI,EAAQzsC,EAAI,GAC7F,CAKA,OAJAsiF,EAASjqB,OAAS,SAAS,EAAG,GAC5B,IAAI,EAAOn6D,KAAKugC,IAAI,GAAI1+B,EAAI7B,KAAKugC,IAAI,GAAK,EAAMz+B,EAAI9B,KAAK4H,IAAI,GAAK,EAAM4/C,EAAIxnD,KAAK4H,IAAI,GAAI2mC,EAAIiZ,EAAI,EAAQ1lD,EAAI,EAC7G,MAAO,CAAE9B,KAAK69D,MAAM/7D,EAAI,EAAQ0lD,EAAI,EAAO3lD,EAAI,EAAQ0sC,EAAI,GAAQkpB,GAAQlpB,EAAI,EAAQ1sC,EAAI,GAC7F,EACOuiF,CACT,CAiCA,SAASf,GAAyBrlD,EAAQ0uC,GACxC,IAAIkW,EAAK5iF,KAAKugC,IAAIvC,GAASqmD,EAAKrkF,KAAK4H,IAAIo2B,GACzC,OAAO,SAASq+C,EAAMnlD,EAAIolD,EAAWnuB,GACnC,IAAIjU,EAAOoiC,EAAY5P,EACX,MAAR2P,GACFA,EAAOiI,GAAmB1B,EAAIvG,GAC9BnlD,EAAKotD,GAAmB1B,EAAI1rD,IACxBolD,EAAY,EAAID,EAAOnlD,EAAKmlD,EAAOnlD,KAAImlD,GAAQC,EAAY,MAE/DD,EAAOr+C,EAASs+C,EAAY,GAC5BplD,EAAK8G,EAAS,GAAKkc,GAErB,IAAK,IAAIob,EAAOpwC,EAAIm3D,EAAMC,EAAY,EAAIp3D,EAAIgS,EAAKhS,EAAIgS,EAAIhS,GAAKg1B,EAC9DiU,EAASmH,OAAOA,EAAQ4iB,GAAiB,CAAE0K,GAAKyB,EAAKrkF,KAAKugC,IAAIrb,IAAKm/D,EAAKrkF,KAAK4H,IAAIsd,MAAO,GAAIowC,EAAM,GAEtG,CACF,CACA,SAASgvB,GAAmB1B,EAAIttB,GAC9B,IAAI1hD,EAAI8jE,GAAiBpiB,GACzB1hD,EAAE,IAAMgvE,EACR3K,GAA0BrkE,GAC1B,IAAIka,EAAQypC,IAAS3jD,EAAE,IACvB,SAAUA,EAAE,GAAK,GAAKka,EAAQA,GAAS,EAAI9tB,KAAK6H,GAAK,KAAM,EAAI7H,KAAK6H,GACtE,CA+EA,SAAS08E,GAAkB5kC,EAAI9hC,EAAI9V,GACjC,IAAIjG,EAAIS,EAAGG,MAAMi9C,EAAI9hC,EAAK,GAAG9V,GAAIjC,OAAO+X,GACxC,OAAO,SAAShc,GACd,OAAOC,EAAEmE,KAAI,SAASnE,GACpB,MAAO,CAAED,EAAGC,EACd,GACF,CACF,CACA,SAAS0iF,GAAkBvjC,EAAItjC,EAAIpU,GACjC,IAAI1H,EAAIU,EAAGG,MAAMu+C,EAAItjC,EAAK,GAAGpU,GAAIzD,OAAO6X,GACxC,OAAO,SAAS7b,GACd,OAAOD,EAAEoE,KAAI,SAASpE,GACpB,MAAO,CAAEA,EAAGC,EACd,GACF,CACF,CACA,SAAS2iF,GAAUpkF,GACjB,OAAOA,EAAE80B,MACX,CACA,SAASuvD,GAAUrkF,GACjB,OAAOA,EAAEpH,MACX,CAzYAsJ,EAAGkyE,IAAIlzE,KAAO,WACZ,IAAuBihF,EAAY1+B,EAAS6gC,EAAeC,EAAeC,EAAtEzE,EAAc,IAClB,SAAS7+E,EAAK8sC,GAMZ,OALIA,IACyB,mBAAhB+xC,GAA4BwE,EAAcxE,aAAaA,EAAYj8E,MAAM7B,KAAMkH,YACrFq7E,GAAgBA,EAAYvG,QAAOuG,EAAcF,EAAcC,IACpEriF,EAAGkyE,IAAIQ,OAAO5mC,EAAQw2C,IAEjBD,EAAcxc,QACvB,CAgCA,SAAShsB,IAEP,OADAyoC,EAAc,KACPtjF,CACT,CACA,OAnCAA,EAAK5F,KAAO,SAAS0yC,GAGnB,OAFA+wC,GAAqB,EACrB78E,EAAGkyE,IAAIQ,OAAO5mC,EAAQs2C,EAAcjF,KAC7BN,EACT,EACA79E,EAAKm+B,SAAW,SAAS2O,GAGvB,OAFAyoC,GAAoBC,GAAoBC,GAAoBC,GAAoBC,GAAoBC,GAAoBC,GAAoBC,GAAoBC,GAAoB,EACpL/0E,EAAGkyE,IAAIQ,OAAO5mC,EAAQs2C,EAAcrE,KAC7BhJ,GAAoB,CAAEF,GAAoBE,GAAmBD,GAAoBC,IAAsBH,GAAoB,CAAEF,GAAoBE,GAAmBD,GAAoBC,IAAsBH,GAAoB,CAAEF,GAAoBE,GAAmBD,GAAoBC,IAAsB,CAAE33D,IAAKA,IACrU,EACA9d,EAAK82E,OAAS,SAAShqC,GAGrB,OAFAmxC,GAAsBC,KAAwBH,GAAsBC,GAAsBp1E,KAC1F5H,EAAGkyE,IAAIQ,OAAO5mC,EAAQs2C,EAAc7E,KAC7B,CAAE,CAAER,GAAqBC,IAAuB,CAAEC,GAAqBC,IAChF,EACAl+E,EAAKihF,WAAa,SAASx2B,GACzB,OAAKxiD,UAAUjJ,QACfokF,GAAiBnC,EAAax2B,GAAKA,EAAEipB,SAoBP+L,EApB0Ch1B,EAqBtEm1B,EAAWJ,IAAgB,SAASl/E,EAAGC,GACzC,OAAOk/E,EAAQ,CAAEn/E,EAAIu1D,GAAYt1D,EAAIs1D,IACvC,IACO,SAAS6d,GACd,OAAO0N,GAAyBxB,EAASlM,GAC3C,GA1B+EvoB,EACtEtQ,KAFuBomC,EAqBlC,IAAkCxB,EAC5BG,CAnBJ,EACA5/E,EAAKuiD,QAAU,SAASkI,GACtB,OAAKxiD,UAAUjJ,QACfqkF,EAAiC,OAAhB9gC,EAAUkI,GAAa,IAAI+zB,GAAsB,IAAIY,GAAmB30B,GAC9D,mBAAhBo0B,GAA4BwE,EAAcxE,YAAYA,GAC1DhkC,KAHuB0H,CAIhC,EACAviD,EAAK6+E,YAAc,SAASp0B,GAC1B,OAAKxiD,UAAUjJ,QACf6/E,EAA2B,mBAANp0B,EAAmBA,GAAK44B,EAAcxE,aAAap0B,IAAKA,GACtEzqD,GAFuB6+E,CAGhC,EAKO7+E,EAAKihF,WAAWjgF,EAAGkyE,IAAIgK,aAAa36B,QAAQ,KACrD,EASAvhD,EAAGkyE,IAAI38C,UAAY,SAASgtD,GAC1B,MAAO,CACL7P,OAAQ,SAASA,GACf,IAAIn9C,EAAY,IAAImqD,GAAiBhN,GACrC,IAAK,IAAI1mC,KAAKu2C,EAAShtD,EAAUyW,GAAKu2C,EAAQv2C,GAC9C,OAAOzW,CACT,EAEJ,EAIAmqD,GAAiB/jF,UAAY,CAC3Bo3D,MAAO,SAASzzD,EAAGC,GACjBQ,KAAK2yE,OAAO3f,MAAMzzD,EAAGC,EACvB,EACA0zE,OAAQ,WACNlzE,KAAK2yE,OAAOO,QACd,EACAc,UAAW,WACTh0E,KAAK2yE,OAAOqB,WACd,EACAC,QAAS,WACPj0E,KAAK2yE,OAAOsB,SACd,EACAC,aAAc,WACZl0E,KAAK2yE,OAAOuB,cACd,EACAC,WAAY,WACVn0E,KAAK2yE,OAAOwB,YACd,GAsBFl0E,EAAGkyE,IAAI+N,WAAaN,GACpB3/E,EAAGkyE,IAAIsQ,kBAAoBhH,IAsF1Bx7E,EAAGkyE,IAAIuQ,gBAAkB,WACxB,OAAO9C,GAAkBgC,GAC3B,GAAG7mC,IAAM6mC,GAAuB/pB,OAAS+pB,GACzC3hF,EAAGkyE,IAAI2P,SAAW,SAAS58E,GAEzB,SAAS22E,EAAQzI,GAEf,OADAA,EAAcluE,EAAOkuE,EAAY,GAAKve,GAAYue,EAAY,GAAKve,KAChD,IAAMC,GAAYse,EAAY,IAAMte,GAAYse,CACrE,CAKA,OATAluE,EAASi7E,GAAgBj7E,EAAO,GAAK,IAAM2vD,GAAY3vD,EAAO,GAAK2vD,GAAY3vD,EAAOjH,OAAS,EAAIiH,EAAO,GAAK2vD,GAAa,GAK5HgnB,EAAQhkB,OAAS,SAASub,GAExB,OADAA,EAAcluE,EAAO2yD,OAAOub,EAAY,GAAKve,GAAYue,EAAY,GAAKve,KACvD,IAAMC,GAAYse,EAAY,IAAMte,GAAYse,CACrE,EACOyI,CACT,EAIAgG,GAAwBhqB,OAAS+pB,GA0BjC3hF,EAAGkyE,IAAIn5E,OAAS,WACd,IAAuBwyB,EAAsBuW,EAAzCkV,EAAS,CAAE,EAAG,GAAYmzB,EAAY,EAC1C,SAASpxE,IACP,IAAI44C,EAA2B,mBAAXqF,EAAwBA,EAAOp1C,MAAM7B,KAAMkH,WAAa+vC,EAAQ/xC,EAASi7E,IAAiBvuC,EAAO,GAAKijB,IAAajjB,EAAO,GAAKijB,GAAY,GAAGgD,OAAQghB,EAAO,GAOjL,OANA92C,EAAY,KAAM,KAAM,EAAG,CACzBixB,MAAO,SAASzzD,EAAGC,GACjBq5E,EAAK/2E,KAAKvC,EAAI2F,EAAO3F,EAAGC,IACxBD,EAAE,IAAMu1D,GAAYv1D,EAAE,IAAMu1D,EAC9B,IAEK,CACL15C,KAAM,UACNg4D,YAAa,CAAEyF,GAEnB,CAgBA,OAfA7/E,EAAOi+C,OAAS,SAAS13C,GACvB,OAAK2H,UAAUjJ,QACfg5C,EAAS13C,EACFvG,GAFuBi+C,CAGhC,EACAj+C,EAAOwyB,MAAQ,SAASjsB,GACtB,OAAK2H,UAAUjJ,QACf8jC,EAAcg/C,IAA0Bv1D,GAASjsB,GAAKs1D,GAAYuV,EAAYvV,IACvE77D,GAFuBwyB,CAGhC,EACAxyB,EAAOoxE,UAAY,SAAS1gB,GAC1B,OAAKxiD,UAAUjJ,QACf8jC,EAAcg/C,GAAyBv1D,EAAQqpC,IAAauV,GAAa1gB,GAAKmL,IACvE77D,GAFuBoxE,CAGhC,EACOpxE,EAAOwyB,MAAM,GACtB,EAyBAvrB,EAAGkyE,IAAIrkD,SAAW,SAASxc,EAAGC,GAC5B,IAAyNqR,EAArN,GAAMrR,EAAE,GAAKD,EAAE,IAAMujD,GAAY,EAAKvjD,EAAE,GAAKujD,GAAY,EAAKtjD,EAAE,GAAKsjD,GAAY,EAAQn3D,KAAK4H,IAAI,GAAK,EAAQ5H,KAAKugC,IAAI,GAAK,EAAQvgC,KAAK4H,IAAI,GAAK,EAAQ5H,KAAKugC,IAAI,GAAK,EAAQvgC,KAAK4H,IAAI,GAAK,EAAQ5H,KAAKugC,IAAI,GACpN,OAAOvgC,KAAK69D,MAAM79D,KAAKogC,MAAMlb,EAAI,EAAQ,GAASA,GAAKA,EAAI,EAAQ,EAAQ,EAAQ,EAAQ,GAASA,GAAI,EAAQ,EAAQ,EAAQ,EAAQ,EAC1I,EACA3iB,EAAGkyE,IAAIwQ,UAAY,WACjB,IAAItnE,EAAIsjC,EAAIikC,EAAIC,EAAItnE,EAAI8hC,EAAIylC,EAAIC,EAAyCxjF,EAAGC,EAAGurE,EAAGmF,EAA9CjpE,EAAK,GAAIxB,EAAKwB,EAAI+7E,EAAK,GAAIC,EAAK,IAAiB7Y,EAAY,IACjG,SAASuY,IACP,MAAO,CACLvnE,KAAM,kBACNg4D,YAAav6E,IAEjB,CACA,SAASA,IACP,OAAOoH,EAAGG,MAAM1C,KAAKC,KAAKklF,EAAKG,GAAMA,EAAIJ,EAAII,GAAIr/E,IAAIonE,GAAGvnE,OAAOvD,EAAGG,MAAM1C,KAAKC,KAAKolF,EAAKE,GAAMA,EAAIH,EAAIG,GAAIt/E,IAAIusE,IAAI1sE,OAAOvD,EAAGG,MAAM1C,KAAKC,KAAKghD,EAAK13C,GAAMA,EAAIoU,EAAIpU,GAAIkR,QAAO,SAAS5Y,GAChL,OAAO2+B,EAAI3+B,EAAIyjF,GAAM,EACvB,IAAGr/E,IAAIpE,IAAIiE,OAAOvD,EAAGG,MAAM1C,KAAKC,KAAK0/C,EAAK53C,GAAMA,EAAI8V,EAAI9V,GAAI0S,QAAO,SAAS3Y,GAC1E,OAAO0+B,EAAI1+B,EAAIyjF,GAAM,EACvB,IAAGt/E,IAAInE,GACT,CA0DA,OAzDAmjF,EAAU9pF,MAAQ,WAChB,OAAOA,IAAQ8K,KAAI,SAASyvE,GAC1B,MAAO,CACLh4D,KAAM,aACNg4D,YAAaA,EAEjB,GACF,EACAuP,EAAUO,QAAU,WAClB,MAAO,CACL9nE,KAAM,UACNg4D,YAAa,CAAErI,EAAE8X,GAAIr/E,OAAO0sE,EAAE4S,GAAIt+E,MAAM,GAAIumE,EAAE6X,GAAIxzC,UAAU5qC,MAAM,GAAI0rE,EAAE6S,GAAI3zC,UAAU5qC,MAAM,KAEhG,EACAm+E,EAAUhqE,OAAS,SAAS+wC,GAC1B,OAAKxiD,UAAUjJ,OACR0kF,EAAUQ,YAAYz5B,GAAG05B,YAAY15B,GADdi5B,EAAUS,aAE1C,EACAT,EAAUQ,YAAc,SAASz5B,GAC/B,OAAKxiD,UAAUjJ,QACf4kF,GAAMn5B,EAAE,GAAG,GAAIk5B,GAAMl5B,EAAE,GAAG,GAC1Bq5B,GAAMr5B,EAAE,GAAG,GAAIo5B,GAAMp5B,EAAE,GAAG,GACtBm5B,EAAKD,IAAIl5B,EAAIm5B,EAAIA,EAAKD,EAAIA,EAAKl5B,GAC/Bq5B,EAAKD,IAAIp5B,EAAIq5B,EAAIA,EAAKD,EAAIA,EAAKp5B,GAC5Bi5B,EAAUvY,UAAUA,IALG,CAAE,CAAEyY,EAAIE,GAAM,CAAEH,EAAIE,GAMpD,EACAH,EAAUS,YAAc,SAAS15B,GAC/B,OAAKxiD,UAAUjJ,QACf0gD,GAAM+K,EAAE,GAAG,GAAIruC,GAAMquC,EAAE,GAAG,GAC1BrM,GAAMqM,EAAE,GAAG,GAAInuC,GAAMmuC,EAAE,GAAG,GACtB/K,EAAKtjC,IAAIquC,EAAI/K,EAAIA,EAAKtjC,EAAIA,EAAKquC,GAC/BrM,EAAK9hC,IAAImuC,EAAIrM,EAAIA,EAAK9hC,EAAIA,EAAKmuC,GAC5Bi5B,EAAUvY,UAAUA,IALG,CAAE,CAAEzrB,EAAItB,GAAM,CAAEhiC,EAAIE,GAMpD,EACAonE,EAAU/qC,KAAO,SAAS8R,GACxB,OAAKxiD,UAAUjJ,OACR0kF,EAAUU,UAAU35B,GAAG45B,UAAU55B,GADVi5B,EAAUW,WAE1C,EACAX,EAAUU,UAAY,SAAS35B,GAC7B,OAAKxiD,UAAUjJ,QACf+kF,GAAMt5B,EAAE,GAAIu5B,GAAMv5B,EAAE,GACbi5B,GAFuB,CAAEK,EAAIC,EAGtC,EACAN,EAAUW,UAAY,SAAS55B,GAC7B,OAAKxiD,UAAUjJ,QACfgJ,GAAMyiD,EAAE,GAAIjkD,GAAMikD,EAAE,GACbi5B,GAFuB,CAAE17E,EAAIxB,EAGtC,EACAk9E,EAAUvY,UAAY,SAAS1gB,GAC7B,OAAKxiD,UAAUjJ,QACfmsE,GAAa1gB,EACbnqD,EAAI0iF,GAAkB5kC,EAAI9hC,EAAI,IAC9B/b,EAAI0iF,GAAkBvjC,EAAItjC,EAAI+uD,GAC9BW,EAAIkX,GAAkBc,EAAID,EAAI,IAC9B5S,EAAIgS,GAAkBW,EAAID,EAAIxY,GACvBuY,GANuBvY,CAOhC,EACOuY,EAAUQ,YAAY,CAAE,EAAG,KAAM,GAAK,IAAK,CAAE,IAAK,GAAK,MAAOC,YAAY,CAAE,EAAG,KAAM,GAAK,IAAK,CAAE,IAAK,GAAK,KACpH,EAuBAnjF,EAAGkyE,IAAIoR,SAAW,WAChB,IAAwBC,EAA6BC,EAAjD5wD,EAASsvD,GAAoBxrF,EAASyrF,GAC1C,SAASmB,IACP,MAAO,CACLnoE,KAAM,aACNg4D,YAAa,CAAEoQ,GAAW3wD,EAAOhxB,MAAM7B,KAAMkH,WAAYu8E,GAAW9sF,EAAOkL,MAAM7B,KAAMkH,YAE3F,CAiBA,OAhBAq8E,EAASz1D,SAAW,WAClB,OAAO7tB,EAAGkyE,IAAIrkD,SAAS01D,GAAW3wD,EAAOhxB,MAAM7B,KAAMkH,WAAYu8E,GAAW9sF,EAAOkL,MAAM7B,KAAMkH,WACjG,EACAq8E,EAAS1wD,OAAS,SAAS62B,GACzB,OAAKxiD,UAAUjJ,QACf40B,EAAS62B,EAAG85B,EAAuB,mBAAN95B,EAAmB,KAAOA,EAChD65B,GAFuB1wD,CAGhC,EACA0wD,EAAS5sF,OAAS,SAAS+yD,GACzB,OAAKxiD,UAAUjJ,QACftH,EAAS+yD,EAAG+5B,EAAuB,mBAAN/5B,EAAmB,KAAOA,EAChD65B,GAFuB5sF,CAGhC,EACA4sF,EAASnZ,UAAY,WACnB,OAAOljE,UAAUjJ,OAASslF,EAAW,CACvC,EACOA,CACT,EACAtjF,EAAGkyE,IAAIpwC,YAAc,SAASlP,EAAQl8B,GACpC,OAE0BgoD,EAFA9rB,EAAO,GAAKgiC,GAERxX,EAFoBxqB,EAAO,GAAKgiC,GAE5Bx5C,EAFwC1kB,EAAO,GAAKk+D,GAEhDt5C,EAF4D5kB,EAAO,GAAKk+D,GAG1G6uB,EAAMhmF,KAAKugC,IAAIof,GAAKsmC,EAAMjmF,KAAK4H,IAAI+3C,GAAKumC,EAAMlmF,KAAKugC,IAAI1iB,GAAKsoE,EAAMnmF,KAAK4H,IAAIiW,GAAKuoE,EAAMJ,EAAMhmF,KAAKugC,IAAI0gB,GAAKolC,EAAML,EAAMhmF,KAAK4H,IAAIq5C,GAAKqlC,EAAMJ,EAAMlmF,KAAKugC,IAAI5iB,GAAK4oE,EAAML,EAAMlmF,KAAK4H,IAAI+V,GAAKtd,EAAI,EAAIL,KAAK03D,KAAK13D,KAAKogC,KAAKy3B,GAAYh6C,EAAK8hC,GAAMqmC,EAAME,EAAMruB,GAAYl6C,EAAKsjC,KAAO1S,EAAI,EAAIvuC,KAAK4H,IAAIvH,IAChSgkC,EAAchkC,EAAI,SAAS6kB,GAC7B,IAAIitD,EAAInyE,KAAK4H,IAAIsd,GAAK7kB,GAAKkuC,EAAG2jC,EAAIlyE,KAAK4H,IAAIvH,EAAI6kB,GAAKqpB,EAAG1sC,EAAIqwE,EAAIkU,EAAMjU,EAAImU,EAAKxkF,EAAIowE,EAAImU,EAAMlU,EAAIoU,EAAK/+B,EAAI0qB,EAAI+T,EAAM9T,EAAIgU,EACvH,MAAO,CAAEnmF,KAAK69D,MAAM/7D,EAAGD,GAAKu1D,GAAYp3D,KAAK69D,MAAMrW,EAAGxnD,KAAKogC,KAAKv+B,EAAIA,EAAIC,EAAIA,IAAMs1D,GACpF,EAAI,WACF,MAAO,CAAEnW,EAAKmW,GAAYzX,EAAKyX,GACjC,GACYhnC,SAAW/vB,EAChBgkC,EATT,IAA4B4c,EAAItB,EAAIhiC,EAAIE,EAClCmoE,EAAoBC,EAAoBC,EAAoBC,EAAoBC,EAA0BC,EAA0BC,EAA0BC,EAA0BlmF,EAAuFkuC,EAC/QlK,CAHN,EAYA9hC,EAAGkyE,IAAIl0E,OAAS,SAAS8tC,GAGvB,OAFAgyC,GAAmB,EACnB99E,EAAGkyE,IAAIQ,OAAO5mC,EAAQm4C,IACfnG,EACT,EAEA,IAAImG,GAAgB,CAClBhR,OAAQ3nB,EACRyH,MAAOzH,EACPyoB,UAKF,WACE,IAAI,EAAI,EAAO,EAQf,SAASmB,EAAU,EAAG,GACpB,IAAI,EAAOz3E,KAAK4H,IAAI,GAAKuvD,IAAa,EAAOn3D,KAAKugC,IAAI,GAAIrb,EAAIsb,GAAK,GAAK22B,IAAc,GAAK,EAAQn3D,KAAKugC,IAAIrb,GAC5Gm7D,IAAoBrgF,KAAK69D,MAAM79D,KAAKogC,MAAMlb,EAAI,EAAOllB,KAAK4H,IAAIsd,IAAMA,GAAKA,EAAI,EAAQ,EAAO,EAAQ,EAAO,GAASA,GAAI,EAAQ,EAAO,EAAQ,EAAO,GACtJ,EAAK,EAAG,EAAQ,EAAM,EAAQ,CAChC,CAXAshE,GAAclxB,MAAQ,SAAS,EAAG,GAChC,EAAK,EAAI6B,GAAY,EAAQn3D,KAAK4H,IAAI,GAAKuvD,IAAa,EAAQn3D,KAAKugC,IAAI,GACzEimD,GAAclxB,MAAQmiB,CACxB,EACA+O,GAAcjQ,QAAU,WACtBiQ,GAAclxB,MAAQkxB,GAAcjQ,QAAU1oB,CAChD,CAMF,EAlBE0oB,QAAS1oB,EACT2oB,aAAc3oB,EACd4oB,WAAY5oB,GAiBd,SAAS44B,GAAiBjkF,EAAOsrB,GAC/B,SAAS44D,EAAU,EAAG,GACpB,IAAI,EAAO1mF,KAAKugC,IAAI,GAAI,EAAOvgC,KAAKugC,IAAI,GAAIgO,EAAI/rC,EAAM,EAAO,GAC7D,MAAO,CAAE+rC,EAAI,EAAOvuC,KAAK4H,IAAI,GAAI2mC,EAAIvuC,KAAK4H,IAAI,GAChD,CAKA,OAJA8+E,EAAUvsB,OAAS,SAASt4D,EAAGC,GAC7B,IAAI,EAAI9B,KAAKogC,KAAKv+B,EAAIA,EAAIC,EAAIA,GAAIs5B,EAAItN,EAAM,GAAI64D,EAAO3mF,KAAK4H,IAAIwzB,GAAIwrD,EAAO5mF,KAAKugC,IAAInF,GACpF,MAAO,CAAEp7B,KAAK69D,MAAMh8D,EAAI8kF,EAAM,EAAIC,GAAO5mF,KAAK03D,KAAK,GAAK51D,EAAI6kF,EAAO,GACrE,EACOD,CACT,CACA,IAAIG,GAA4BJ,IAAiB,SAAS,GACxD,OAAOzmF,KAAKogC,KAAK,GAAK,EAAI,GAC5B,IAAG,SAAS,GACV,OAAO,EAAIpgC,KAAK03D,KAAK,EAAI,EAC3B,KACCn1D,EAAGkyE,IAAIqS,mBAAqB,WAC3B,OAAO5E,GAAkB2E,GAC3B,GAAGxpC,IAAMwpC,GACT,IAAIE,GAA8BN,IAAiB,SAAS,GAC1D,IAAIrrD,EAAIp7B,KAAKw3D,KAAK,GAClB,OAAOp8B,GAAKA,EAAIp7B,KAAK4H,IAAIwzB,EAC3B,GAAGsxB,GAIH,SAASs6B,GAAsB,EAAI,GACjC,IAAI,EAAQhnF,KAAKugC,IAAI,GAAKrb,EAAI,SAAS,GACrC,OAAOllB,KAAKknE,IAAI,GAAI,EAAI,EAAI,EAC9B,EAAG/mE,EAAI,IAAO,EAAKH,KAAK4H,IAAI,GAAM5H,KAAKy4D,IAAI,EAAQz4D,KAAKugC,IAAI,IAAOvgC,KAAKy4D,IAAIvzC,EAAE,GAAMA,EAAE,IAAM+hE,EAAI,EAAQjnF,KAAKy0B,IAAIvP,EAAE,GAAK/kB,GAAKA,EAC7H,IAAKA,EAAG,OAAO+mF,GACf,SAAS/I,EAAQ,EAAG,GACd8I,EAAI,EACF,GAAK,GAAQ,KAAG,GAAK,GAAQ,IAE7B,EAAI,GAAQ,KAAG,EAAI,GAAQ,IAEjC,IAAI,EAAIA,EAAIjnF,KAAKy0B,IAAIvP,EAAE,GAAI/kB,GAC3B,MAAO,CAAE,EAAIH,KAAK4H,IAAIzH,EAAI,GAAI8mF,EAAI,EAAIjnF,KAAKugC,IAAIpgC,EAAI,GACrD,CAKA,OAJAg+E,EAAQhkB,OAAS,SAASt4D,EAAGC,GAC3B,IAAI,EAAOmlF,EAAInlF,EAAG,EAAIu1D,GAAOl3D,GAAKH,KAAKogC,KAAKv+B,EAAIA,EAAI,EAAO,GAC3D,MAAO,CAAE7B,KAAK69D,MAAMh8D,EAAG,GAAQ1B,EAAG,EAAIH,KAAKm8E,KAAKn8E,KAAKy0B,IAAIwyD,EAAI,EAAG,EAAI9mF,IAAM,GAC5E,EACOg+E,CACT,CAIA,SAASgJ,GAAwB,EAAI,GACnC,IAAI,EAAQnnF,KAAKugC,IAAI,GAAKpgC,EAAI,IAAO,EAAKH,KAAK4H,IAAI,IAAO,EAAQ5H,KAAKugC,IAAI,KAAQ,EAAK,GAAK6mD,EAAI,EAAQjnF,EAAI,EAC7G,GAAIqgC,EAAIrgC,GAAK,GAAG,OAAO+jF,GACvB,SAAS/F,EAAQ,EAAG,GAClB,IAAI,EAAIiJ,EAAI,EACZ,MAAO,CAAE,EAAIpnF,KAAK4H,IAAIzH,EAAI,GAAIinF,EAAI,EAAIpnF,KAAKugC,IAAIpgC,EAAI,GACrD,CAKA,OAJAg+E,EAAQhkB,OAAS,SAASt4D,EAAGC,GAC3B,IAAI,EAAOslF,EAAItlF,EACf,MAAO,CAAE9B,KAAK69D,MAAMh8D,EAAG,GAAQ1B,EAAGinF,EAAI/vB,GAAOl3D,GAAKH,KAAKogC,KAAKv+B,EAAIA,EAAI,EAAO,GAC7E,EACOs8E,CACT,EAtCC57E,EAAGkyE,IAAI4S,qBAAuB,WAC7B,OAAOnF,GAAkB6E,GAC3B,GAAG1pC,IAAM0pC,IAqBRxkF,EAAGkyE,IAAI6S,eAAiB,WACvB,OAAOzJ,GAAamJ,GACtB,GAAG3pC,IAAM2pC,IAcRzkF,EAAGkyE,IAAI8S,iBAAmB,WACzB,OAAO1J,GAAasJ,GACtB,GAAG9pC,IAAM8pC,GACT,IAAIK,GAAkBf,IAAiB,SAAS,GAC9C,OAAO,EAAI,CACb,GAAGzmF,KAAKm8E,MAIR,SAAS+K,GAAgB,EAAG,GAC1B,MAAO,CAAE,EAAGlnF,KAAKy4D,IAAIz4D,KAAKknE,IAAI,GAAI,EAAI,EAAI,IAC5C,CAIA,SAASugB,GAA0BzG,GACjC,IAAyG0G,EAArGr9B,EAAI63B,GAAkBlB,GAAUx+E,EAAQ6nD,EAAE7nD,MAAO09B,EAAYmqB,EAAEnqB,UAAWk+C,EAAa/zB,EAAE+zB,WAqB7F,OApBA/zB,EAAE7nD,MAAQ,WACR,IAAIjD,EAAIiD,EAAM2B,MAAMkmD,EAAG7gD,WACvB,OAAOjK,IAAM8qD,EAAIq9B,EAAWr9B,EAAE+zB,WAAW,MAAQ/zB,EAAI9qD,CACvD,EACA8qD,EAAEnqB,UAAY,WACZ,IAAI3gC,EAAI2gC,EAAU/7B,MAAMkmD,EAAG7gD,WAC3B,OAAOjK,IAAM8qD,EAAIq9B,EAAWr9B,EAAE+zB,WAAW,MAAQ/zB,EAAI9qD,CACvD,EACA8qD,EAAE+zB,WAAa,SAASpyB,GACtB,IAAIzsD,EAAI6+E,EAAWj6E,MAAMkmD,EAAG7gD,WAC5B,GAAIjK,IAAM8qD,GACR,GAAIq9B,EAAgB,MAAL17B,EAAW,CACxB,IAAIzd,EAAI,GAAI/rC,IAAS0iB,EAAIgb,IACzBk+C,EAAW,CAAE,CAAEl5D,EAAE,GAAKqpB,EAAGrpB,EAAE,GAAKqpB,GAAK,CAAErpB,EAAE,GAAKqpB,EAAGrpB,EAAE,GAAKqpB,IAC1D,OACSm5C,IACTnoF,EAAI,MAEN,OAAOA,CACT,EACO8qD,EAAE+zB,WAAW,KACtB,EAhCC77E,EAAGkyE,IAAIkT,SAAW,WACjB,OAAOzF,GAAkBsF,GAC3B,GAAGnqC,IAAMmqC,GAITN,GAAgB/sB,OAAS,SAASt4D,EAAGC,GACnC,MAAO,CAAED,EAAG,EAAI7B,KAAKm8E,KAAKn8E,KAAK43D,IAAI91D,IAAM,GAC3C,GAyBCS,EAAGkyE,IAAImT,SAAW,WACjB,OAAOH,GAA0BP,GACnC,GAAG7pC,IAAM6pC,GACT,IAAIW,GAAsBpB,IAAiB,WACzC,OAAO,CACT,GAAGzmF,KAAK03D,OACPn1D,EAAGkyE,IAAIqT,aAAe,WACrB,OAAO5F,GAAkB2F,GAC3B,GAAGxqC,IAAMwqC,GACT,IAAIE,GAAuBtB,IAAiB,SAAS,GACnD,OAAO,GAAK,EAAI,EAClB,IAAG,SAAS,GACV,OAAO,EAAIzmF,KAAKm8E,KAAK,EACvB,IAIA,SAAS6L,GAA0B,EAAG,GACpC,MAAO,CAAEhoF,KAAKy4D,IAAIz4D,KAAKknE,IAAI,GAAI,EAAI,EAAI,KAAM,EAC/C,CAgBA,SAAS+gB,GAAe5nF,GACtB,OAAOA,EAAE,EACX,CACA,SAAS6nF,GAAe7nF,GACtB,OAAOA,EAAE,EACX,CA0BA,SAAS8nF,GAAkBrzD,GAEzB,IADA,IAAI30B,EAAI20B,EAAOv0B,OAAQ6nF,EAAO,CAAE,EAAG,GAAKC,EAAK,EACpCpkF,EAAI,EAAGA,EAAI9D,EAAG8D,IAAK,CAC1B,KAAOokF,EAAK,GAAK/wB,GAAWxiC,EAAOszD,EAAKC,EAAK,IAAKvzD,EAAOszD,EAAKC,EAAK,IAAKvzD,EAAO7wB,KAAO,KAAKokF,EAC3FD,EAAKC,KAAQpkF,CACf,CACA,OAAOmkF,EAAKthF,MAAM,EAAGuhF,EACvB,CACA,SAASC,GAAkB10E,EAAGC,GAC5B,OAAOD,EAAE,GAAKC,EAAE,IAAMD,EAAE,GAAKC,EAAE,EACjC,EA9DCtR,EAAGkyE,IAAI8T,cAAgB,WACtB,OAAOrG,GAAkB6F,GAC3B,GAAG1qC,IAAM0qC,GAITC,GAA0B7tB,OAAS,SAASt4D,EAAGC,GAC7C,MAAO,EAAGA,EAAG,EAAI9B,KAAKm8E,KAAKn8E,KAAK43D,IAAI/1D,IAAM,GAC5C,GACCU,EAAGkyE,IAAI+T,mBAAqB,WAC3B,IAAIhG,EAAaiF,GAA0BO,IAA4B9zC,EAASsuC,EAAWtuC,OAAQ1sC,EAASg7E,EAAWh7E,OAQvH,OAPAg7E,EAAWtuC,OAAS,SAAS8X,GAC3B,OAAOA,EAAI9X,EAAO,EAAG8X,EAAE,GAAIA,EAAE,KAAuB,EAAdA,EAAI9X,KAAc,IAAK8X,EAAE,GACjE,EACAw2B,EAAWh7E,OAAS,SAASwkD,GAC3B,OAAOA,EAAIxkD,EAAO,CAAEwkD,EAAE,GAAIA,EAAE,GAAIA,EAAEzrD,OAAS,EAAIyrD,EAAE,GAAK,GAAK,KAC3D,EADoEA,EAAIxkD,KACpE,GAAIwkD,EAAE,GAAIA,EAAE,GAAK,GACvB,EACOxkD,EAAO,CAAE,EAAG,EAAG,IACxB,GAAG61C,IAAM2qC,GACTzlF,EAAGkmF,KAAO,CAAC,EAOXlmF,EAAGkmF,KAAKL,KAAO,SAASM,GACtB,IAAI7mF,EAAIomF,GAAgBnmF,EAAIomF,GAC5B,GAAI1+E,UAAUjJ,OAAQ,OAAO6nF,EAAKM,GAClC,SAASN,EAAK5/E,GACZ,GAAIA,EAAKjI,OAAS,EAAG,MAAO,GAC5B,IAA4C0D,EAAxC0kF,EAAK9gB,GAAWhmE,GAAI+mF,EAAK/gB,GAAW/lE,GAAO3B,EAAIqI,EAAKjI,OAAQu0B,EAAS,GAAI+zD,EAAgB,GAC7F,IAAK5kF,EAAI,EAAGA,EAAI9D,EAAG8D,IACjB6wB,EAAO1wB,KAAK,EAAGukF,EAAGvpF,KAAKkD,KAAMkG,EAAKvE,GAAIA,IAAK2kF,EAAGxpF,KAAKkD,KAAMkG,EAAKvE,GAAIA,GAAIA,IAGxE,IADA6wB,EAAOnhB,KAAK20E,IACPrkF,EAAI,EAAGA,EAAI9D,EAAG8D,IAAK4kF,EAAczkF,KAAK,CAAE0wB,EAAO7wB,GAAG,IAAK6wB,EAAO7wB,GAAG,KACtE,IAAI6kF,EAAQX,GAAkBrzD,GAASi0D,EAAQZ,GAAkBU,GAC7DG,EAAWD,EAAM,KAAOD,EAAM,GAAIG,EAAYF,EAAMA,EAAMxoF,OAAS,KAAOuoF,EAAMA,EAAMvoF,OAAS,GAAIs6E,EAAU,GACjH,IAAK52E,EAAI6kF,EAAMvoF,OAAS,EAAG0D,GAAK,IAAKA,EAAG42E,EAAQz2E,KAAKoE,EAAKssB,EAAOg0D,EAAM7kF,IAAI,KAC3E,IAAKA,GAAK+kF,EAAU/kF,EAAI8kF,EAAMxoF,OAAS0oF,IAAahlF,EAAG42E,EAAQz2E,KAAKoE,EAAKssB,EAAOi0D,EAAM9kF,IAAI,KAC1F,OAAO42E,CACT,CAOA,OANAuN,EAAKvmF,EAAI,SAASmqD,GAChB,OAAOxiD,UAAUjJ,QAAUsB,EAAImqD,EAAGo8B,GAAQvmF,CAC5C,EACAumF,EAAKtmF,EAAI,SAASkqD,GAChB,OAAOxiD,UAAUjJ,QAAUuB,EAAIkqD,EAAGo8B,GAAQtmF,CAC5C,EACOsmF,CACT,EAYA7lF,EAAGkmF,KAAK5N,QAAU,SAASnF,GAEzB,OADA1mB,EAAY0mB,EAAawT,IAClBxT,CACT,EACA,IAAIwT,GAA2B3mF,EAAGkmF,KAAK5N,QAAQ38E,UAAY,GA+C3D,SAASirF,GAAsBp2E,EAAGa,EAAGC,GACnC,OAAQA,EAAE,GAAKD,EAAE,KAAOb,EAAE,GAAKa,EAAE,KAAOC,EAAE,GAAKD,EAAE,KAAOb,EAAE,GAAKa,EAAE,GACnE,CACA,SAASw1E,GAAyBhuD,EAAG/6B,EAAGuT,EAAGC,GACzC,IAAI8J,EAAKyd,EAAE,GAAIiuD,EAAKz1E,EAAE,GAAI01E,EAAMjpF,EAAE,GAAKsd,EAAI4rE,EAAM11E,EAAE,GAAKw1E,EAAIxrE,EAAKud,EAAE,GAAIouD,EAAK51E,EAAE,GAAI61E,EAAMppF,EAAE,GAAKwd,EAAI6rE,EAAM71E,EAAE,GAAK21E,EAAIxiC,GAAMuiC,GAAO1rE,EAAK2rE,GAAME,GAAO/rE,EAAK0rE,KAAQK,EAAMJ,EAAMC,EAAME,GAClL,MAAO,CAAE9rE,EAAKqpC,EAAKsiC,EAAKzrE,EAAKmpC,EAAKyiC,EACpC,CACA,SAASE,GAAsBjU,GAC7B,IAAI9hE,EAAI8hE,EAAY,GAAI7hE,EAAI6hE,EAAYA,EAAYn1E,OAAS,GAC7D,QAASqT,EAAE,GAAKC,EAAE,IAAMD,EAAE,GAAKC,EAAE,GACnC,CAxDAq1E,GAAyBvtF,KAAO,WAE9B,IADA,IAA6BiY,EAAzB3P,GAAK,EAAG9D,EAAImC,KAAK/B,OAAWsT,EAAIvR,KAAKnC,EAAI,GAAIxE,EAAO,IAC/CsI,EAAI9D,GACXyT,EAAIC,EACJA,EAAIvR,KAAK2B,GACTtI,GAAQiY,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAEjC,MAAc,GAAPlY,CACT,EACAutF,GAAyBxpD,SAAW,SAAS6O,GAC3C,IAA2C36B,EAAoBwnB,EAA3Dn3B,GAAK,EAAG9D,EAAImC,KAAK/B,OAAQsB,EAAI,EAAGC,EAAI,EAAM+R,EAAIvR,KAAKnC,EAAI,GAE3D,IADKqJ,UAAUjJ,SAAQguC,GAAK,GAAK,EAAIjsC,KAAK3G,WACjCsI,EAAI9D,GACXyT,EAAIC,EACJA,EAAIvR,KAAK2B,GACTm3B,EAAIxnB,EAAE,GAAKC,EAAE,GAAKA,EAAE,GAAKD,EAAE,GAC3B/R,IAAM+R,EAAE,GAAKC,EAAE,IAAMunB,EACrBt5B,IAAM8R,EAAE,GAAKC,EAAE,IAAMunB,EAEvB,MAAO,CAAEv5B,EAAI0sC,EAAGzsC,EAAIysC,EACtB,EACA26C,GAAyBlP,KAAO,SAASxjB,GAEvC,IADA,IAAIozB,EAAuGlyD,EAAG2yB,EAAoBx2C,EAAGunB,EAAG/6B,EAA7H+1E,EAASuT,GAAsBnzB,GAAUvyD,GAAK,EAAG9D,EAAImC,KAAK/B,OAASopF,GAAsBrnF,MAAasR,EAAItR,KAAKnC,EAAI,KACrH8D,EAAI9D,GAAG,CAMd,IALAypF,EAAQpzB,EAAQ1vD,QAChB0vD,EAAQj2D,OAAS,EACjBsT,EAAIvR,KAAK2B,GACTm3B,EAAIwuD,GAAOv/B,EAAIu/B,EAAMrpF,OAAS61E,GAAU,GACxC1+C,GAAK,IACIA,EAAI2yB,GAEP8+B,GADJ9oF,EAAIupF,EAAMlyD,GACmB9jB,EAAGC,IACzBs1E,GAAsB/tD,EAAGxnB,EAAGC,IAC/B2iD,EAAQpyD,KAAKglF,GAAyBhuD,EAAG/6B,EAAGuT,EAAGC,IAEjD2iD,EAAQpyD,KAAK/D,IACJ8oF,GAAsB/tD,EAAGxnB,EAAGC,IACrC2iD,EAAQpyD,KAAKglF,GAAyBhuD,EAAG/6B,EAAGuT,EAAGC,IAEjDunB,EAAI/6B,EAEF+1E,GAAQ5f,EAAQpyD,KAAKoyD,EAAQ,IACjC5iD,EAAIC,CACN,CACA,OAAO2iD,CACT,EAYA,IAAIqzB,GAAsBC,GAAsBC,GAAuDC,GAA4BC,GAA3DC,GAA2B,GAAwDC,GAA4B,GACvL,SAASC,KACPC,GAA4B/nF,MAC5BA,KAAKgoF,KAAOhoF,KAAKioF,KAAOjoF,KAAKhH,OAAS,IACxC,CACA,SAASkvF,GAA2BD,GAClC,IAAIE,EAAQP,GAAyBnO,OAAS,IAAIqO,GAElD,OADAK,EAAMF,KAAOA,EACNE,CACT,CACA,SAASC,GAA2BD,GAClCE,GAA4BF,GAC5BV,GAAuBhhF,OAAO0hF,GAC9BP,GAAyB9lF,KAAKqmF,GAC9BJ,GAA4BI,EAC9B,CACA,SAASG,GAA2BH,GAClC,IAAInvF,EAASmvF,EAAMnvF,OAAQuG,EAAIvG,EAAOuG,EAAGC,EAAIxG,EAAOumB,GAAIgpE,EAAS,CAC/DhpF,EAAGA,EACHC,EAAGA,GACFgpF,EAAWL,EAAMM,EAAGx3B,EAAOk3B,EAAMvgB,EAAG8gB,EAAe,CAAEP,GACxDC,GAA2BD,GAE3B,IADA,IAAIQ,EAAOH,EACJG,EAAK3vF,QAAUklC,EAAI3+B,EAAIopF,EAAK3vF,OAAOuG,GAAK,IAAK2+B,EAAI1+B,EAAImpF,EAAK3vF,OAAOumB,IAAM,IAC5EipE,EAAWG,EAAKF,EAChBC,EAAa3mF,QAAQ4mF,GACrBP,GAA2BO,GAC3BA,EAAOH,EAETE,EAAa3mF,QAAQ4mF,GACrBN,GAA4BM,GAE5B,IADA,IAAIC,EAAO33B,EACJ23B,EAAK5vF,QAAUklC,EAAI3+B,EAAIqpF,EAAK5vF,OAAOuG,GAAK,IAAK2+B,EAAI1+B,EAAIopF,EAAK5vF,OAAOumB,IAAM,IAC5E0xC,EAAO23B,EAAKhhB,EACZ8gB,EAAa5mF,KAAK8mF,GAClBR,GAA2BQ,GAC3BA,EAAO33B,EAETy3B,EAAa5mF,KAAK8mF,GAClBP,GAA4BO,GAC5B,IAAiCC,EAA7BC,EAAQJ,EAAazqF,OACzB,IAAK4qF,EAAO,EAAGA,EAAOC,IAASD,EAC7BD,EAAOF,EAAaG,GACpBF,EAAOD,EAAaG,EAAO,GAC3BE,GAA0BH,EAAKZ,KAAMW,EAAKV,KAAMW,EAAKX,KAAMM,GAE7DI,EAAOD,EAAa,IACpBE,EAAOF,EAAaI,EAAQ,IACvBd,KAAOgB,GAA0BL,EAAKV,KAAMW,EAAKX,KAAM,KAAMM,GAClEU,GAA4BN,GAC5BM,GAA4BL,EAC9B,CACA,SAASM,GAAwBjB,GAE/B,IADA,IAAoCU,EAAMC,EAAMO,EAAKC,EAAjD7pF,EAAI0oF,EAAK1oF,EAAG8pF,EAAYpB,EAAKzoF,EAAyBmI,EAAO8/E,GAAuB/9B,EACjF/hD,GAEL,IADAwhF,EAAMG,GAA8B3hF,EAAM0hF,GAAa9pF,GAC7C,GAAGoI,EAAOA,EAAK8mE,MAAQ,CAE/B,MADA2a,EAAM7pF,EAAIgqF,GAA+B5hF,EAAM0hF,IACrC,IAMH,CACDF,GAAO,IACTR,EAAOhhF,EAAK8gF,EACZG,EAAOjhF,GACEyhF,GAAO,IAChBT,EAAOhhF,EACPihF,EAAOjhF,EAAKigE,GAEZ+gB,EAAOC,EAAOjhF,EAEhB,KACF,CAhBE,IAAKA,EAAK6hF,EAAG,CACXb,EAAOhhF,EACP,KACF,CACAA,EAAOA,EAAK6hF,CAahB,CAEF,IAAIvsD,EAASirD,GAA2BD,GAExC,GADAR,GAAuBphF,OAAOsiF,EAAM1rD,GAC/B0rD,GAASC,EAAd,CACA,GAAID,IAASC,EAOX,OANAP,GAA4BM,GAC5BC,EAAOV,GAA2BS,EAAKV,MACvCR,GAAuBphF,OAAO42B,EAAQ2rD,GACtC3rD,EAAO+qD,KAAOY,EAAKZ,KAAOgB,GAA0BL,EAAKV,KAAMhrD,EAAOgrD,MACtEgB,GAA4BN,QAC5BM,GAA4BL,GAG9B,GAAKA,EAAL,CAIAP,GAA4BM,GAC5BN,GAA4BO,GAC5B,IAAIa,EAAQd,EAAKV,KAAM/N,EAAKuP,EAAMlqF,EAAG46E,EAAKsP,EAAMjqF,EAAGkqF,EAAKzB,EAAK1oF,EAAI26E,EAAIyP,EAAK1B,EAAKzoF,EAAI26E,EAAIyP,EAAQhB,EAAKX,KAAM3oE,EAAKsqE,EAAMrqF,EAAI26E,EAAI36D,EAAKqqE,EAAMpqF,EAAI26E,EAAIp8E,EAAI,GAAK2rF,EAAKnqE,EAAKoqE,EAAKrqE,GAAKuqE,EAAKH,EAAKA,EAAKC,EAAKA,EAAIG,EAAKxqE,EAAKA,EAAKC,EAAKA,EAAIgpE,EAAS,CACpOhpF,GAAIggB,EAAKsqE,EAAKF,EAAKG,GAAM/rF,EAAIm8E,EAC7B16E,GAAIkqF,EAAKI,EAAKxqE,EAAKuqE,GAAM9rF,EAAIo8E,GAE/B4O,GAA0BH,EAAKZ,KAAMyB,EAAOG,EAAOrB,GACnDtrD,EAAO+qD,KAAOgB,GAA0BS,EAAOxB,EAAM,KAAMM,GAC3DK,EAAKZ,KAAOgB,GAA0Bf,EAAM2B,EAAO,KAAMrB,GACzDU,GAA4BN,GAC5BM,GAA4BL,EAX5B,MAFE3rD,EAAO+qD,KAAOgB,GAA0BL,EAAKV,KAAMhrD,EAAOgrD,KAXlC,CAyB5B,CACA,SAASqB,GAA8BpwF,EAAKmwF,GAC1C,IAAIpB,EAAO/uF,EAAI+uF,KAAM8B,EAAQ9B,EAAK1oF,EAAGyqF,EAAQ/B,EAAKzoF,EAAGyqF,EAAOD,EAAQX,EACpE,IAAKY,EAAM,OAAOF,EAClB,IAAIpB,EAAOzvF,EAAIuvF,EACf,IAAKE,EAAM,OAAQ9gF,IAEnB,IAAIqiF,GADJjC,EAAOU,EAAKV,MACK1oF,EAAG4qF,EAAQlC,EAAKzoF,EAAG4qF,EAAQD,EAAQd,EACpD,IAAKe,EAAO,OAAOF,EACnB,IAAIG,EAAKH,EAAQH,EAAOO,EAAO,EAAIL,EAAO,EAAIG,EAAO74E,EAAI84E,EAAKD,EAC9D,OAAIE,IAAe/4E,EAAI7T,KAAKogC,KAAKvsB,EAAIA,EAAI,EAAI+4E,GAAQD,EAAKA,IAAO,EAAID,GAASD,EAAQC,EAAQ,EAAIJ,EAAQC,EAAO,KAAOK,EAAOP,GACvHA,EAAQG,GAAS,CAC3B,CACA,SAASX,GAA+BrwF,EAAKmwF,GAC3C,IAAIT,EAAO1vF,EAAI0uE,EACf,GAAIghB,EAAM,OAAOU,GAA8BV,EAAMS,GACrD,IAAIpB,EAAO/uF,EAAI+uF,KACf,OAAOA,EAAKzoF,IAAM6pF,EAAYpB,EAAK1oF,EAAIsI,GACzC,CACA,SAAS0iF,GAAoBtC,GAC3BjoF,KAAKioF,KAAOA,EACZjoF,KAAKwqF,MAAQ,EACf,CAwCA,SAASC,GAA6Bn5E,EAAGC,GACvC,OAAOA,EAAEia,MAAQla,EAAEka,KACrB,CACA,SAASk/D,KACP3C,GAA4B/nF,MAC5BA,KAAKT,EAAIS,KAAKR,EAAIQ,KAAK9G,IAAM8G,KAAKioF,KAAOjoF,KAAKuf,GAAK,IACrD,CACA,SAAS0pE,GAA4B/vF,GACnC,IAAIyvF,EAAOzvF,EAAIuvF,EAAGG,EAAO1vF,EAAI0uE,EAC7B,GAAK+gB,GAASC,EAAd,CACA,IAAIa,EAAQd,EAAKV,KAAM0C,EAAQzxF,EAAI+uF,KAAM2B,EAAQhB,EAAKX,KACtD,GAAIwB,IAAUG,EAAd,CACA,IAAIF,EAAKiB,EAAMprF,EAAGoqF,EAAKgB,EAAMnrF,EAAG06E,EAAKuP,EAAMlqF,EAAImqF,EAAIvP,EAAKsP,EAAMjqF,EAAImqF,EAAIrqE,EAAKsqE,EAAMrqF,EAAImqF,EACjF3rF,EAAI,GAAKm8E,GAD4E36D,EAAKqqE,EAAMpqF,EAAImqF,GACjFxP,EAAK76D,GAC5B,KAAIvhB,IAAM,IAAV,CACA,IAAI6sF,EAAK1Q,EAAKA,EAAKC,EAAKA,EAAI2P,EAAKxqE,EAAKA,EAAKC,EAAKA,EAAIhgB,GAAKggB,EAAKqrE,EAAKzQ,EAAK2P,GAAM/rF,EAAGyB,GAAK06E,EAAK4P,EAAKxqE,EAAKsrE,GAAM7sF,EAAGwhB,EAAK/f,EAAImqF,EACnH3wF,EAAS6uF,GAA0BpO,OAAS,IAAIiR,GACpD1xF,EAAOE,IAAMA,EACbF,EAAOivF,KAAO0C,EACd3xF,EAAOuG,EAAIA,EAAImqF,EACf1wF,EAAOwG,EAAI+f,EAAK7hB,KAAKogC,KAAKv+B,EAAIA,EAAIC,EAAIA,GACtCxG,EAAOumB,GAAKA,EACZrmB,EAAIF,OAASA,EAEb,IADA,IAAIu3D,EAAS,KAAM5oD,EAAOggF,GAAuBj+B,EAC1C/hD,GACL,GAAI3O,EAAOwG,EAAImI,EAAKnI,GAAKxG,EAAOwG,IAAMmI,EAAKnI,GAAKxG,EAAOuG,GAAKoI,EAAKpI,EAAG,CAClE,IAAIoI,EAAK8mE,EAAuB,CAC9Ble,EAAS5oD,EAAK8gF,EACd,KACF,CAHY9gF,EAAOA,EAAK8mE,CAI1B,KAAO,CACL,IAAI9mE,EAAK6hF,EAAuB,CAC9Bj5B,EAAS5oD,EACT,KACF,CAHYA,EAAOA,EAAK6hF,CAI1B,CAEF7B,GAAuBthF,OAAOkqD,EAAQv3D,GACjCu3D,IAAQm3B,GAA6B1uF,EAxBtB,CAHO,CAFD,CA8B5B,CACA,SAASqvF,GAA4BnvF,GACnC,IAAIF,EAASE,EAAIF,OACbA,IACGA,EAAOyvF,IAAGf,GAA6B1uF,EAAO4uE,GACnD+f,GAAuBlhF,OAAOzN,GAC9B6uF,GAA0B/lF,KAAK9I,GAC/B+uF,GAA4B/uF,GAC5BE,EAAIF,OAAS,KAEjB,CAWA,SAAS6xF,GAA2B7C,EAAMrvE,GACxC,IAAImyE,EAAK9C,EAAKz2E,EACd,GAAIu5E,EAAI,OAAO,EACf,IAA6NC,EAAIC,EAA7NC,EAAKjD,EAAK12E,EAAGqtC,EAAKhmC,EAAO,GAAG,GAAI0C,EAAK1C,EAAO,GAAG,GAAI0kC,EAAK1kC,EAAO,GAAG,GAAI4C,EAAK5C,EAAO,GAAG,GAAI8wE,EAAQzB,EAAKtvC,EAAGkxC,EAAQ5B,EAAKtsC,EAAGwvC,EAAKzB,EAAMlqF,EAAG4rF,EAAK1B,EAAMjqF,EAAG4rF,EAAKxB,EAAMrqF,EAAG8rF,EAAKzB,EAAMpqF,EAAG6mF,GAAM6E,EAAKE,GAAM,EAAG9E,GAAM6E,EAAKE,GAAM,EAC1N,GAAIA,IAAOF,EAAI,CACb,GAAI9E,EAAK1nC,GAAM0nC,GAAMhrE,EAAI,OACzB,GAAI6vE,EAAKE,EAAI,CACX,GAAKH,GAGG,GAAIA,EAAGzrF,GAAK+b,EAAI,YAHf0vE,EAAK,CACZ1rF,EAAG8mF,EACH7mF,EAAG69C,GAELytC,EAAK,CACHvrF,EAAG8mF,EACH7mF,EAAG+b,EAEP,KAAO,CACL,GAAK0vE,GAGG,GAAIA,EAAGzrF,EAAI69C,EAAI,YAHd4tC,EAAK,CACZ1rF,EAAG8mF,EACH7mF,EAAG+b,GAELuvE,EAAK,CACHvrF,EAAG8mF,EACH7mF,EAAG69C,EAEP,CACF,MAGE,GADA2tC,EAAK1E,GADLyE,GAAMG,EAAKE,IAAOC,EAAKF,IACR9E,EACX0E,GAAM,GAAKA,EAAK,EAClB,GAAIG,EAAKE,EAAI,CACX,GAAKH,GAGG,GAAIA,EAAGzrF,GAAK+b,EAAI,YAHf0vE,EAAK,CACZ1rF,GAAI89C,EAAK2tC,GAAMD,EACfvrF,EAAG69C,GAELytC,EAAK,CACHvrF,GAAIgc,EAAKyvE,GAAMD,EACfvrF,EAAG+b,EAEP,KAAO,CACL,GAAK0vE,GAGG,GAAIA,EAAGzrF,EAAI69C,EAAI,YAHd4tC,EAAK,CACZ1rF,GAAIgc,EAAKyvE,GAAMD,EACfvrF,EAAG+b,GAELuvE,EAAK,CACHvrF,GAAI89C,EAAK2tC,GAAMD,EACfvrF,EAAG69C,EAEP,MAEA,GAAI8tC,EAAKE,EAAI,CACX,GAAKJ,GAGG,GAAIA,EAAG1rF,GAAK8b,EAAI,YAHf4vE,EAAK,CACZ1rF,EAAGo/C,EACHn/C,EAAGurF,EAAKpsC,EAAKqsC,GAEfF,EAAK,CACHvrF,EAAG8b,EACH7b,EAAGurF,EAAK1vE,EAAK2vE,EAEjB,KAAO,CACL,GAAKC,GAGG,GAAIA,EAAG1rF,EAAIo/C,EAAI,YAHdssC,EAAK,CACZ1rF,EAAG8b,EACH7b,EAAGurF,EAAK1vE,EAAK2vE,GAEfF,EAAK,CACHvrF,EAAGo/C,EACHn/C,EAAGurF,EAAKpsC,EAAKqsC,EAEjB,CAKJ,OAFAhD,EAAK12E,EAAI25E,EACTjD,EAAKz2E,EAAIu5E,GACF,CACT,CACA,SAASQ,GAAoB7B,EAAOG,GAClC5pF,KAAK04C,EAAI+wC,EACTzpF,KAAK07C,EAAIkuC,EACT5pF,KAAKsR,EAAItR,KAAKuR,EAAI,IACpB,CACA,SAASy3E,GAA0BS,EAAOG,EAAOqB,EAAIH,GACnD,IAAI9C,EAAO,IAAIsD,GAAoB7B,EAAOG,GAM1C,OALArC,GAAqBzlF,KAAKkmF,GACtBiD,GAAIlC,GAA0Bf,EAAMyB,EAAOG,EAAOqB,GAClDH,GAAI/B,GAA0Bf,EAAM4B,EAAOH,EAAOqB,GACtDtD,GAAqBiC,EAAM9nF,GAAG6oF,MAAM1oF,KAAK,IAAIypF,GAAwBvD,EAAMyB,EAAOG,IAClFpC,GAAqBoC,EAAMjoF,GAAG6oF,MAAM1oF,KAAK,IAAIypF,GAAwBvD,EAAM4B,EAAOH,IAC3EzB,CACT,CACA,SAASwD,GAAgC/B,EAAOwB,EAAIH,GAClD,IAAI9C,EAAO,IAAIsD,GAAoB7B,EAAO,MAI1C,OAHAzB,EAAK12E,EAAI25E,EACTjD,EAAKz2E,EAAIu5E,EACTvD,GAAqBzlF,KAAKkmF,GACnBA,CACT,CACA,SAASe,GAA0Bf,EAAMyB,EAAOG,EAAOrB,GAChDP,EAAK12E,GAAM02E,EAAKz2E,EAIVy2E,EAAKtvC,IAAMkxC,EACpB5B,EAAKz2E,EAAIg3E,EAETP,EAAK12E,EAAIi3E,GANTP,EAAK12E,EAAIi3E,EACTP,EAAKtvC,EAAI+wC,EACTzB,EAAKtsC,EAAIkuC,EAMb,CACA,SAAS2B,GAAwBvD,EAAMyB,EAAOG,GAC5C,IAAIqB,EAAKjD,EAAK12E,EAAGw5E,EAAK9C,EAAKz2E,EAC3BvR,KAAKgoF,KAAOA,EACZhoF,KAAKioF,KAAOwB,EACZzpF,KAAKwrB,MAAQo+D,EAAQlsF,KAAK69D,MAAMquB,EAAMpqF,EAAIiqF,EAAMjqF,EAAGoqF,EAAMrqF,EAAIkqF,EAAMlqF,GAAKyoF,EAAKtvC,IAAM+wC,EAAQ/rF,KAAK69D,MAAMuvB,EAAGvrF,EAAI0rF,EAAG1rF,EAAG0rF,EAAGzrF,EAAIsrF,EAAGtrF,GAAK9B,KAAK69D,MAAM0vB,EAAG1rF,EAAIurF,EAAGvrF,EAAGurF,EAAGtrF,EAAIyrF,EAAGzrF,EACtK,CASA,SAASisF,KACPzrF,KAAK0pD,EAAI,IACX,CACA,SAASq+B,GAA4BpgF,GACnCA,EAAKmnE,EAAInnE,EAAKi0E,EAAIj0E,EAAK8mE,EAAI9mE,EAAK6hF,EAAI7hF,EAAK8gF,EAAI9gF,EAAKigE,EAAI,IACxD,CAiKA,SAAS8jB,GAAkCC,EAAMhkF,GAC/C,IAAI8I,EAAI9I,EAAMmxD,EAAInxD,EAAK6hF,EAAGnlD,EAAS5zB,EAAEq+D,EACjCzqC,EACEA,EAAOoqC,IAAMh+D,EAAG4zB,EAAOoqC,EAAI3V,EAAQz0B,EAAOmlD,EAAI1wB,EAElD6yB,EAAKjiC,EAAIoP,EAEXA,EAAEgW,EAAIzqC,EACN5zB,EAAEq+D,EAAIhW,EACNroD,EAAE+4E,EAAI1wB,EAAE2V,EACJh+D,EAAE+4E,IAAG/4E,EAAE+4E,EAAE1a,EAAIr+D,GACjBqoD,EAAE2V,EAAIh+D,CACR,CACA,SAASm7E,GAAmCD,EAAMhkF,GAChD,IAAI8I,EAAI9I,EAAMmxD,EAAInxD,EAAK8mE,EAAGpqC,EAAS5zB,EAAEq+D,EACjCzqC,EACEA,EAAOoqC,IAAMh+D,EAAG4zB,EAAOoqC,EAAI3V,EAAQz0B,EAAOmlD,EAAI1wB,EAElD6yB,EAAKjiC,EAAIoP,EAEXA,EAAEgW,EAAIzqC,EACN5zB,EAAEq+D,EAAIhW,EACNroD,EAAEg+D,EAAI3V,EAAE0wB,EACJ/4E,EAAEg+D,IAAGh+D,EAAEg+D,EAAEK,EAAIr+D,GACjBqoD,EAAE0wB,EAAI/4E,CACR,CACA,SAASo7E,GAA6BlkF,GACpC,KAAOA,EAAK8mE,GAAG9mE,EAAOA,EAAK8mE,EAC3B,OAAO9mE,CACT,CACA,SAASmkF,GAAgBC,EAAOC,GAC9B,IAAyDrtC,EAAItB,EAAIrkD,EAA7DivF,EAAO8D,EAAM16E,KAAK46E,IAA4BxS,MAKlD,IAJA8N,GAAuB,GACvBC,GAAuB,IAAInqF,MAAM0uF,EAAM9tF,QACvCwpF,GAAyB,IAAIgE,GAC7B9D,GAAyB,IAAI8D,KAG3B,GADAzyF,EAAS0uF,GACLO,KAAUjvF,GAAUivF,EAAKzoF,EAAIxG,EAAOwG,GAAKyoF,EAAKzoF,IAAMxG,EAAOwG,GAAKyoF,EAAK1oF,EAAIvG,EAAOuG,GAC9E0oF,EAAK1oF,IAAMo/C,GAAMspC,EAAKzoF,IAAM69C,IAC9BmqC,GAAqBS,EAAKtmF,GAAK,IAAI4oF,GAAoBtC,GACvDiB,GAAwBjB,GACxBtpC,EAAKspC,EAAK1oF,EAAG89C,EAAK4qC,EAAKzoF,GAEzByoF,EAAO8D,EAAMtS,UACR,KAAIzgF,EAGT,MAFAsvF,GAA2BtvF,EAAOE,IAGpC,CAEE8yF,IA3VN,SAAkCrzE,GAEhC,IADA,IAAqI8H,EAAjI+pE,EAAQjD,GAAsB7P,EAAOuC,GAAiBthE,EAAO,GAAG,GAAIA,EAAO,GAAG,GAAIA,EAAO,GAAG,GAAIA,EAAO,GAAG,IAAKhX,EAAI6oF,EAAMvsF,OACtH0D,OAEAkpF,GADLpqE,EAAI+pE,EAAM7oF,GACyBgX,KAAY++D,EAAKj3D,IAAMyd,EAAIzd,EAAEnP,EAAE/R,EAAIkhB,EAAElP,EAAEhS,GAAK,IAAK2+B,EAAIzd,EAAEnP,EAAE9R,EAAIihB,EAAElP,EAAE/R,GAAK,MACvGihB,EAAEnP,EAAImP,EAAElP,EAAI,KACZi5E,EAAMvjE,OAAOtlB,EAAG,GAGtB,CAkVYuqF,CAAyBF,GA3arC,SAAmCrzE,GAEjC,IADA,IAAgF2C,EAAIhS,EAAIy9E,EAAIG,EAAwDiF,EAAMC,EAAWC,EAAWC,EAAY9qF,EAAOyP,EAA/L0tC,EAAKhmC,EAAO,GAAG,GAAI0C,EAAK1C,EAAO,GAAG,GAAI0kC,EAAK1kC,EAAO,GAAG,GAAI4C,EAAK5C,EAAO,GAAG,GAAoB4zE,EAAQ/E,GAAsBgF,EAAQD,EAAMtuF,OACrIuuF,KAEL,IADAL,EAAOI,EAAMC,KACCL,EAAKM,UAInB,IAFAH,GADAD,EAAYF,EAAK3B,OACMvsF,OACvBmuF,EAAY,EACLA,EAAYE,GACiBvF,GAAlC91E,EAAMo7E,EAAUD,GAAWn7E,OAAgB1R,EAAG2nF,EAAKj2E,EAAIzR,EACF8b,GAArD9Z,EAAQ6qF,IAAYD,EAAYE,GAAY9qF,SAAoBjC,EAAG+J,EAAK9H,EAAMhC,GAC1E0+B,EAAI6oD,EAAKzrE,GAAM,IAAK4iB,EAAIgpD,EAAK59E,GAAM,MACrC+iF,EAAUplE,OAAOmlE,EAAW,EAAG,IAAIb,GAAwBC,GAAgCW,EAAKlE,KAAMh3E,EAAKitB,EAAI6oD,EAAKpoC,GAAM,IAAKpjC,EAAK2rE,EAAK,GAAI,CAC3I3nF,EAAGo/C,EACHn/C,EAAG0+B,EAAI5iB,EAAKqjC,GAAM,GAAIr1C,EAAKiS,GACzB2iB,EAAIgpD,EAAK3rE,GAAM,IAAKF,EAAK0rE,EAAK,GAAI,CACpCxnF,EAAG2+B,EAAI50B,EAAKiS,GAAM,GAAID,EAAKD,EAC3B7b,EAAG+b,GACD2iB,EAAI6oD,EAAK1rE,GAAM,IAAK6rE,EAAK7pC,EAAK,GAAI,CACpC99C,EAAG8b,EACH7b,EAAG0+B,EAAI5iB,EAAKD,GAAM,GAAI/R,EAAK+zC,GACzBnf,EAAIgpD,EAAK7pC,GAAM,IAAK0pC,EAAKpoC,EAAK,GAAI,CACpCp/C,EAAG2+B,EAAI50B,EAAK+zC,GAAM,GAAI/hC,EAAKqjC,EAC3Bn/C,EAAG69C,GACD,MAAO8uC,EAAKlE,KAAM,SACpBqE,EAIV,CA8Y4CI,CAA0BV,IACpE,IAAIW,EAAU,CACZJ,MAAO/E,GACPgD,MAAOjD,IAGT,OADAE,GAAyBE,GAAyBJ,GAAuBC,GAAuB,KACzFmF,CACT,CACA,SAASV,GAA2B36E,EAAGC,GACrC,OAAOA,EAAE/R,EAAI8R,EAAE9R,GAAK+R,EAAEhS,EAAI+R,EAAE/R,CAC9B,CA9bAgrF,GAAoB3uF,UAAU6wF,QAAU,WAEtC,IADA,IAA0DzE,EAAtDqE,EAAYrsF,KAAKwqF,MAAO4B,EAAYC,EAAUpuF,OAC3CmuF,MACLpE,EAAOqE,EAAUD,GAAWpE,MAClBz2E,GAAMy2E,EAAK12E,GAAG+6E,EAAUplE,OAAOmlE,EAAW,GAGtD,OADAC,EAAUh7E,KAAKo5E,IACR4B,EAAUpuF,MACnB,EA2MAstF,GAAwB3vF,UAAY,CAClC4F,MAAO,WACL,OAAOxB,KAAKgoF,KAAKtvC,IAAM14C,KAAKioF,KAAOjoF,KAAKgoF,KAAK12E,EAAItR,KAAKgoF,KAAKz2E,CAC7D,EACAN,IAAK,WACH,OAAOjR,KAAKgoF,KAAKtvC,IAAM14C,KAAKioF,KAAOjoF,KAAKgoF,KAAKz2E,EAAIvR,KAAKgoF,KAAK12E,CAC7D,GAQFm6E,GAA4B7vF,UAAY,CACtCyK,OAAQ,SAASukE,EAAOjjE,GACtB,IAAI08B,EAAQuoD,EAASC,EACrB,GAAIjiB,EAAO,CAKT,GAJAjjE,EAAK8gF,EAAI7d,EACTjjE,EAAKigE,EAAIgD,EAAMhD,EACXgD,EAAMhD,IAAGgD,EAAMhD,EAAE6gB,EAAI9gF,GACzBijE,EAAMhD,EAAIjgE,EACNijE,EAAM4e,EAAG,CAEX,IADA5e,EAAQA,EAAM4e,EACP5e,EAAM6D,GAAG7D,EAAQA,EAAM6D,EAC9B7D,EAAM6D,EAAI9mE,CACZ,MACEijE,EAAM4e,EAAI7hF,EAEZ08B,EAASumC,CACX,MAAW5qE,KAAK0pD,GACdkhB,EAAQihB,GAA6B7rF,KAAK0pD,GAC1C/hD,EAAK8gF,EAAI,KACT9gF,EAAKigE,EAAIgD,EACTA,EAAM6d,EAAI7d,EAAM6D,EAAI9mE,EACpB08B,EAASumC,IAETjjE,EAAK8gF,EAAI9gF,EAAKigE,EAAI,KAClB5nE,KAAK0pD,EAAI/hD,EACT08B,EAAS,MAMX,IAJA18B,EAAK8mE,EAAI9mE,EAAK6hF,EAAI,KAClB7hF,EAAKmnE,EAAIzqC,EACT18B,EAAKi0E,GAAI,EACThR,EAAQjjE,EACD08B,GAAUA,EAAOu3C,GAElBv3C,KADJuoD,EAAUvoD,EAAOyqC,GACML,GACrBoe,EAAQD,EAAQpD,IACHqD,EAAMjR,GACjBv3C,EAAOu3C,EAAIiR,EAAMjR,GAAI,EACrBgR,EAAQhR,GAAI,EACZhR,EAAQgiB,IAEJhiB,IAAUvmC,EAAOmlD,IACnBkC,GAAkC1rF,KAAMqkC,GAExCA,GADAumC,EAAQvmC,GACOyqC,GAEjBzqC,EAAOu3C,GAAI,EACXgR,EAAQhR,GAAI,EACZgQ,GAAmC5rF,KAAM4sF,KAG3CC,EAAQD,EAAQne,IACHoe,EAAMjR,GACjBv3C,EAAOu3C,EAAIiR,EAAMjR,GAAI,EACrBgR,EAAQhR,GAAI,EACZhR,EAAQgiB,IAEJhiB,IAAUvmC,EAAOoqC,IACnBmd,GAAmC5rF,KAAMqkC,GAEzCA,GADAumC,EAAQvmC,GACOyqC,GAEjBzqC,EAAOu3C,GAAI,EACXgR,EAAQhR,GAAI,EACZ8P,GAAkC1rF,KAAM4sF,IAG5CvoD,EAASumC,EAAMkE,EAEjB9uE,KAAK0pD,EAAEkyB,GAAI,CACb,EACAn1E,OAAQ,SAASkB,GACXA,EAAKigE,IAAGjgE,EAAKigE,EAAE6gB,EAAI9gF,EAAK8gF,GACxB9gF,EAAK8gF,IAAG9gF,EAAK8gF,EAAE7gB,EAAIjgE,EAAKigE,GAC5BjgE,EAAKigE,EAAIjgE,EAAK8gF,EAAI,KAClB,IAAqBqE,EAAwC77B,EAAM0S,EAA/Dt/B,EAAS18B,EAAKmnE,EAAYxnE,EAAOK,EAAK8mE,EAAGrnE,EAAQO,EAAK6hF,EA6B1D,GA5B4Dv4B,EAAvD3pD,EAA8BF,EAAgCykF,GAA6BzkF,GAA/CE,EAA/BF,EACdi9B,EACEA,EAAOoqC,IAAM9mE,EAAM08B,EAAOoqC,EAAIxd,EAAW5sB,EAAOmlD,EAAIv4B,EAExDjxD,KAAK0pD,EAAIuH,EAEP3pD,GAAQF,GACVu8D,EAAM1S,EAAK2qB,EACX3qB,EAAK2qB,EAAIj0E,EAAKi0E,EACd3qB,EAAKwd,EAAInnE,EACTA,EAAKwnE,EAAI7d,EACLA,IAAS7pD,GACXi9B,EAAS4sB,EAAK6d,EACd7d,EAAK6d,EAAInnE,EAAKmnE,EACdnnE,EAAOspD,EAAKu4B,EACZnlD,EAAOoqC,EAAI9mE,EACXspD,EAAKu4B,EAAIpiF,EACTA,EAAM0nE,EAAI7d,IAEVA,EAAK6d,EAAIzqC,EACTA,EAAS4sB,EACTtpD,EAAOspD,EAAKu4B,KAGd7lB,EAAMh8D,EAAKi0E,EACXj0E,EAAOspD,GAELtpD,IAAMA,EAAKmnE,EAAIzqC,IACfs/B,EACJ,GAAIh8D,GAAQA,EAAKi0E,EACfj0E,EAAKi0E,GAAI,MADX,CAIA,EAAG,CACD,GAAIj0E,IAAS3H,KAAK0pD,EAAG,MACrB,GAAI/hD,IAAS08B,EAAOoqC,GAQlB,IAPAqe,EAAUzoD,EAAOmlD,GACL5N,IACVkR,EAAQlR,GAAI,EACZv3C,EAAOu3C,GAAI,EACX8P,GAAkC1rF,KAAMqkC,GACxCyoD,EAAUzoD,EAAOmlD,GAEfsD,EAAQre,GAAKqe,EAAQre,EAAEmN,GAAKkR,EAAQtD,GAAKsD,EAAQtD,EAAE5N,EAAG,CACnDkR,EAAQtD,GAAMsD,EAAQtD,EAAE5N,IAC3BkR,EAAQre,EAAEmN,GAAI,EACdkR,EAAQlR,GAAI,EACZgQ,GAAmC5rF,KAAM8sF,GACzCA,EAAUzoD,EAAOmlD,GAEnBsD,EAAQlR,EAAIv3C,EAAOu3C,EACnBv3C,EAAOu3C,EAAIkR,EAAQtD,EAAE5N,GAAI,EACzB8P,GAAkC1rF,KAAMqkC,GACxC18B,EAAO3H,KAAK0pD,EACZ,KACF,OASA,IAPAojC,EAAUzoD,EAAOoqC,GACLmN,IACVkR,EAAQlR,GAAI,EACZv3C,EAAOu3C,GAAI,EACXgQ,GAAmC5rF,KAAMqkC,GACzCyoD,EAAUzoD,EAAOoqC,GAEfqe,EAAQre,GAAKqe,EAAQre,EAAEmN,GAAKkR,EAAQtD,GAAKsD,EAAQtD,EAAE5N,EAAG,CACnDkR,EAAQre,GAAMqe,EAAQre,EAAEmN,IAC3BkR,EAAQtD,EAAE5N,GAAI,EACdkR,EAAQlR,GAAI,EACZ8P,GAAkC1rF,KAAM8sF,GACxCA,EAAUzoD,EAAOoqC,GAEnBqe,EAAQlR,EAAIv3C,EAAOu3C,EACnBv3C,EAAOu3C,EAAIkR,EAAQre,EAAEmN,GAAI,EACzBgQ,GAAmC5rF,KAAMqkC,GACzC18B,EAAO3H,KAAK0pD,EACZ,KACF,CAEFojC,EAAQlR,GAAI,EACZj0E,EAAO08B,EACPA,EAASA,EAAOyqC,CAClB,QAAUnnE,EAAKi0E,GACXj0E,IAAMA,EAAKi0E,GAAI,EAlDnB,CAmDF,GAgEF37E,EAAGkmF,KAAK4G,QAAU,SAASv6D,GACzB,IAAIjzB,EAAIomF,GAAgBnmF,EAAIomF,GAAgBS,EAAK9mF,EAAG+mF,EAAK9mF,EAAGs8E,EAAakR,GACzE,GAAIx6D,EAAQ,OAAOu6D,EAAQv6D,GAC3B,SAASu6D,EAAQ7mF,GACf,IAAI+mF,EAAW,IAAI5vF,MAAM6I,EAAKjI,QAAS0gD,EAAKm9B,EAAW,GAAG,GAAIz+B,EAAKy+B,EAAW,GAAG,GAAIzgE,EAAKygE,EAAW,GAAG,GAAIvgE,EAAKugE,EAAW,GAAG,GAQ/H,OAPAgQ,GAAgBC,EAAM7lF,GAAO41E,GAAYyQ,MAAM3tF,SAAQ,SAASutF,EAAMxqF,GACpE,IAAI6oF,EAAQ2B,EAAK3B,MAAOvC,EAAOkE,EAAKlE,MAAgBgF,EAAStrF,GAAK6oF,EAAMvsF,OAASusF,EAAM7mF,KAAI,SAAS8c,GAClG,IAAI7c,EAAI6c,EAAEjf,QACV,MAAO,CAAEoC,EAAErE,EAAGqE,EAAEpE,EAClB,IAAKyoF,EAAK1oF,GAAKo/C,GAAMspC,EAAK1oF,GAAK8b,GAAM4sE,EAAKzoF,GAAK69C,GAAM4qC,EAAKzoF,GAAK+b,EAAK,CAAE,CAAEojC,EAAIpjC,GAAM,CAAEF,EAAIE,GAAM,CAAEF,EAAIgiC,GAAM,CAAEsB,EAAItB,IAAS,IACjH2V,MAAQ9sD,EAAKvE,EACvB,IACOsrF,CACT,CACA,SAASlB,EAAM7lF,GACb,OAAOA,EAAKvC,KAAI,SAAS5F,EAAG4D,GAC1B,MAAO,CACLpC,EAAG7B,KAAKukC,MAAMokD,EAAGtoF,EAAG4D,GAAK,IAAK,GAC9BnC,EAAG9B,KAAKukC,MAAMqkD,EAAGvoF,EAAG4D,GAAK,IAAK,GAC9BA,EAAGA,EAEP,GACF,CA0CA,OAzCAorF,EAAQG,MAAQ,SAAShnF,GACvB,OAAO4lF,GAAgBC,EAAM7lF,IAAOskF,MAAMryE,QAAO,SAAS6vE,GACxD,OAAOA,EAAKtvC,GAAKsvC,EAAKtsC,CACxB,IAAG/3C,KAAI,SAASqkF,GACd,MAAO,CACLn1D,OAAQ3sB,EAAK8hF,EAAKtvC,EAAE/2C,GACpBhL,OAAQuP,EAAK8hF,EAAKtsC,EAAE/5C,GAExB,GACF,EACAorF,EAAQI,UAAY,SAASjnF,GAC3B,IAAIinF,EAAY,GAahB,OAZArB,GAAgBC,EAAM7lF,IAAOqmF,MAAM3tF,SAAQ,SAASutF,EAAMxqF,GAExD,IADA,IAA2GyrF,EA+B5E97E,EAAGC,EAAGunB,EA/BjCmvD,EAAOkE,EAAKlE,KAAMuC,EAAQ2B,EAAK3B,MAAMn5E,KAAKo5E,IAA+Br1D,GAAK,EAAG2yB,EAAIyiC,EAAMvsF,OAAgBouD,EAAKm+B,EAAMziC,EAAI,GAAGigC,KAAMqF,EAAKhhC,EAAG3T,IAAMuvC,EAAO57B,EAAG3Q,EAAI2Q,EAAG3T,IAC7JtjB,EAAI2yB,GAEXqlC,EAAKC,EAELA,GADAhhC,EAAKm+B,EAAMp1D,GAAG4yD,MACNtvC,IAAMuvC,EAAO57B,EAAG3Q,EAAI2Q,EAAG3T,EAC3B/2C,EAAIyrF,EAAGzrF,GAAKA,EAAI0rF,EAAG1rF,IAyBS4P,EAzB8B67E,EAyB3Bt0D,EAzB+Bu0D,IAyBrC/7E,EAzB2B22E,GA0BpD1oF,EAAIu5B,EAAEv5B,IAAMgS,EAAE/R,EAAI8R,EAAE9R,IAAM8R,EAAE/R,EAAIgS,EAAEhS,IAAMu5B,EAAEt5B,EAAI8R,EAAE9R,GA1BoB,IACtE2tF,EAAUrrF,KAAK,CAAEoE,EAAKvE,GAAIuE,EAAKknF,EAAGzrF,GAAIuE,EAAKmnF,EAAG1rF,IAGpD,IACOwrF,CACT,EACAJ,EAAQxtF,EAAI,SAASmqD,GACnB,OAAOxiD,UAAUjJ,QAAUooF,EAAK9gB,GAAWhmE,EAAImqD,GAAIqjC,GAAWxtF,CAChE,EACAwtF,EAAQvtF,EAAI,SAASkqD,GACnB,OAAOxiD,UAAUjJ,QAAUqoF,EAAK/gB,GAAW/lE,EAAIkqD,GAAIqjC,GAAWvtF,CAChE,EACAutF,EAAQjR,WAAa,SAASpyB,GAC5B,OAAKxiD,UAAUjJ,QACf69E,EAAkB,MAALpyB,EAAYsjC,GAA4BtjC,EAC9CqjC,GAFuBjR,IAAekR,GAA4B,KAAOlR,CAGlF,EACAiR,EAAQrqF,KAAO,SAASgnD,GACtB,OAAKxiD,UAAUjJ,OACR8uF,EAAQjR,WAAWpyB,GAAK,CAAE,CAAE,EAAG,GAAKA,IADboyB,IAAekR,GAA4B,KAAOlR,GAAcA,EAAW,EAE3G,EACOiR,CACT,EACA,IAAIC,GAA4B,CAAE,EAAG,KAAM,KAAO,CAAE,IAAK,MAkHzD,SAASM,GAAwBvvF,GAC/B,OAAOA,EAAEwB,CACX,CACA,SAASguF,GAAwBxvF,GAC/B,OAAOA,EAAEyB,CACX,CAUA,SAASguF,GAAsBxmE,EAAGrf,EAAM0T,EAAIE,EAAID,EAAIhS,GAClD,IAAK0d,EAAErf,EAAM0T,EAAIE,EAAID,EAAIhS,GAAK,CAC5B,IAAI0pC,EAAiB,IAAX33B,EAAKC,GAAU23B,EAAiB,IAAX13B,EAAKjS,GAAUmkF,EAAW9lF,EAAKmqD,MAC1D27B,EAAS,IAAID,GAAsBxmE,EAAGymE,EAAS,GAAIpyE,EAAIE,EAAIy3B,EAAIC,GAC/Dw6C,EAAS,IAAID,GAAsBxmE,EAAGymE,EAAS,GAAIz6C,EAAIz3B,EAAID,EAAI23B,GAC/Dw6C,EAAS,IAAID,GAAsBxmE,EAAGymE,EAAS,GAAIpyE,EAAI43B,EAAID,EAAI1pC,GAC/DmkF,EAAS,IAAID,GAAsBxmE,EAAGymE,EAAS,GAAIz6C,EAAIC,EAAI33B,EAAIhS,EACrE,CACF,CAsCA,SAASokF,GAAkBp8E,EAAGC,GAC5BD,EAAIrR,EAAG67C,IAAIxqC,GACXC,EAAItR,EAAG67C,IAAIvqC,GACX,IAAIo8E,EAAKr8E,EAAEoqC,EAAGkyC,EAAKt8E,EAAE5L,EAAGmoF,EAAKv8E,EAAEC,EAAGu8E,EAAKv8E,EAAEmqC,EAAIiyC,EAAII,EAAKx8E,EAAE7L,EAAIkoF,EAAII,EAAKz8E,EAAEA,EAAIs8E,EAC3E,OAAO,SAASjrE,GACd,MAAO,IAAMg5C,GAAWl+D,KAAKukC,MAAM0rD,EAAKG,EAAKlrE,IAAMg5C,GAAWl+D,KAAKukC,MAAM2rD,EAAKG,EAAKnrE,IAAMg5C,GAAWl+D,KAAKukC,MAAM4rD,EAAKG,EAAKprE,GAC3H,CACF,CAEA,SAASqrE,GAAqB38E,EAAGC,GAC/B,IAAoB06B,EAAhBtqC,EAAI,CAAC,EAAGm3B,EAAI,CAAC,EACjB,IAAKmT,KAAK36B,EACJ26B,KAAK16B,EACP5P,EAAEsqC,GAAKiiD,GAAe58E,EAAE26B,GAAI16B,EAAE06B,IAE9BnT,EAAEmT,GAAK36B,EAAE26B,GAGb,IAAKA,KAAK16B,EACF06B,KAAK36B,IACTwnB,EAAEmT,GAAK16B,EAAE06B,IAGb,OAAO,SAASrpB,GACd,IAAKqpB,KAAKtqC,EAAGm3B,EAAEmT,GAAKtqC,EAAEsqC,GAAGrpB,GACzB,OAAOkW,CACT,CACF,CAEA,SAASq1D,GAAqB78E,EAAGC,GAE/B,OADAD,GAAKA,EAAGC,GAAKA,EACN,SAASqR,GACd,OAAOtR,GAAK,EAAIsR,GAAKrR,EAAIqR,CAC3B,CACF,CAEA,SAASwrE,GAAqB98E,EAAGC,GAC/B,IAAkF88E,EAAIC,EAAIC,EAAtFC,EAAKC,GAAuBz/B,UAAY0/B,GAAuB1/B,UAAY,EAAertD,GAAK,EAAGiC,EAAI,GAAIk1D,EAAI,GAElH,IADAxnD,GAAQ,GAAIC,GAAQ,IACZ88E,EAAKI,GAAuB5yB,KAAKvqD,MAAQg9E,EAAKI,GAAuB7yB,KAAKtqD,MAC3Eg9E,EAAKD,EAAGzqF,OAAS2qF,IACpBD,EAAKh9E,EAAE/M,MAAMgqF,EAAID,GACb3qF,EAAEjC,GAAIiC,EAAEjC,IAAM4sF,EAAS3qF,IAAIjC,GAAK4sF,IAEjCF,EAAKA,EAAG,OAASC,EAAKA,EAAG,IACxB1qF,EAAEjC,GAAIiC,EAAEjC,IAAM2sF,EAAS1qF,IAAIjC,GAAK2sF,GAEpC1qF,IAAIjC,GAAK,KACTm3D,EAAEh3D,KAAK,CACLH,EAAGA,EACHpC,EAAG4uF,GAAqBE,EAAIC,MAGhCE,EAAKE,GAAuB1/B,UAM9B,OAJIw/B,EAAKj9E,EAAEtT,SACTswF,EAAKh9E,EAAE/M,MAAMgqF,GACT5qF,EAAEjC,GAAIiC,EAAEjC,IAAM4sF,EAAS3qF,IAAIjC,GAAK4sF,GAE/B3qF,EAAE3F,OAAS,EAAI66D,EAAE,IAAMvnD,EAAIunD,EAAE,GAAGv5D,EAAG,SAASqjB,GACjD,OAAOrR,EAAEqR,GAAK,EAChB,GAAK,WACH,OAAOrR,CACT,GAAKA,EAAIunD,EAAE76D,OAAQ,SAAS2kB,GAC1B,IAAK,IAAWzlB,EAAPwE,EAAI,EAAMA,EAAI4P,IAAK5P,EAAGiC,GAAGzG,EAAI27D,EAAEn3D,IAAIA,GAAKxE,EAAEoC,EAAEqjB,GACrD,OAAOhf,EAAE2jE,KAAK,GAChB,EACF,CA9OAtnE,EAAGkmF,KAAKwI,SAAW,SAASvI,GAC1B,OAAOnmF,EAAGkmF,KAAK4G,UAAUI,UAAU/G,EACrC,EACAnmF,EAAGkmF,KAAKyI,SAAW,SAASp8D,EAAQnX,EAAIE,EAAID,EAAIhS,GAC9C,IAA4CulF,EAAxCtvF,EAAIomF,GAAgBnmF,EAAIomF,GAC5B,GAAIiJ,EAAS3nF,UAAUjJ,OAQrB,OAPAsB,EAAI+tF,GACJ9tF,EAAI+tF,GACW,IAAXsB,IACFvlF,EAAKiS,EACLD,EAAKD,EACLE,EAAKF,EAAK,GAELuzE,EAASp8D,GAElB,SAASo8D,EAAS1oF,GAChB,IAAInI,EAA2Cia,EAAIq2B,EAAI1sC,EAAG9D,EAAGixF,EAAKC,EAAKC,EAAKC,EAArE5I,EAAK9gB,GAAWhmE,GAAI+mF,EAAK/gB,GAAW/lE,GAC3C,GAAU,MAAN6b,EACFyzE,EAAMzzE,EAAI0zE,EAAMxzE,EAAIyzE,EAAM1zE,EAAI2zE,EAAM3lF,OAKpC,GAHA0lF,EAAMC,IAAQH,EAAMC,EAAMlnF,KAC1BmQ,EAAK,GAAIq2B,EAAK,GACdxwC,EAAIqI,EAAKjI,OACL4wF,EAAQ,IAAKltF,EAAI,EAAGA,EAAI9D,IAAK8D,GAC/B5D,EAAImI,EAAKvE,IACHpC,EAAIuvF,IAAKA,EAAM/wF,EAAEwB,GACnBxB,EAAEyB,EAAIuvF,IAAKA,EAAMhxF,EAAEyB,GACnBzB,EAAEwB,EAAIyvF,IAAKA,EAAMjxF,EAAEwB,GACnBxB,EAAEyB,EAAIyvF,IAAKA,EAAMlxF,EAAEyB,GACvBwY,EAAGlW,KAAK/D,EAAEwB,GACV8uC,EAAGvsC,KAAK/D,EAAEyB,QACL,IAAKmC,EAAI,EAAGA,EAAI9D,IAAK8D,EAAG,CAC7B,IAAI84E,GAAM4L,EAAGtoF,EAAImI,EAAKvE,GAAIA,GAAI+4E,GAAM4L,EAAGvoF,EAAG4D,GACtC84E,EAAKqU,IAAKA,EAAMrU,GAChBC,EAAKqU,IAAKA,EAAMrU,GAChBD,EAAKuU,IAAKA,EAAMvU,GAChBC,EAAKuU,IAAKA,EAAMvU,GACpB1iE,EAAGlW,KAAK24E,GACRpsC,EAAGvsC,KAAK44E,EACV,CAEF,IAAIzzE,EAAK+nF,EAAMF,EAAKrpF,EAAKwpF,EAAMF,EAE/B,SAAS1oF,EAAOxI,EAAGE,EAAGwB,EAAGC,EAAG6b,EAAIE,EAAID,EAAIhS,GACtC,IAAIme,MAAMloB,KAAMkoB,MAAMjoB,GACtB,GAAI3B,EAAEqxF,KAAM,CACV,IAAIC,EAAKtxF,EAAE0B,EAAG6vF,EAAKvxF,EAAE2B,EACrB,GAAU,MAAN2vF,EACF,GAAIjxD,EAAIixD,EAAK5vF,GAAK2+B,EAAIkxD,EAAK5vF,GAAK,IAC9B6vF,EAAYxxF,EAAGE,EAAGwB,EAAGC,EAAG6b,EAAIE,EAAID,EAAIhS,OAC/B,CACL,IAAIgmF,EAASzxF,EAAEm1D,MACfn1D,EAAE0B,EAAI1B,EAAE2B,EAAI3B,EAAEm1D,MAAQ,KACtBq8B,EAAYxxF,EAAGyxF,EAAQH,EAAIC,EAAI/zE,EAAIE,EAAID,EAAIhS,GAC3C+lF,EAAYxxF,EAAGE,EAAGwB,EAAGC,EAAG6b,EAAIE,EAAID,EAAIhS,EACtC,MAEAzL,EAAE0B,EAAIA,EAAG1B,EAAE2B,EAAIA,EAAG3B,EAAEm1D,MAAQj1D,CAEhC,MACEsxF,EAAYxxF,EAAGE,EAAGwB,EAAGC,EAAG6b,EAAIE,EAAID,EAAIhS,EAExC,CACA,SAAS+lF,EAAYxxF,EAAGE,EAAGwB,EAAGC,EAAG6b,EAAIE,EAAID,EAAIhS,GAC3C,IAAIimF,EAAiB,IAAXl0E,EAAKC,GAAUk0E,EAAiB,IAAXj0E,EAAKjS,GAAUlC,EAAQ7H,GAAKgwF,EAAIE,EAAQjwF,GAAKgwF,EAAI7tF,EAAI8tF,GAAS,EAAIroF,EACjGvJ,EAAEqxF,MAAO,EAEL9nF,EAAOiU,EAAKk0E,EAASj0E,EAAKi0E,EAC1BE,EAAOl0E,EAAKi0E,EAASlmF,EAAKkmF,EAC9BnpF,EAHAxI,EAAIA,EAAEi0D,MAAMnwD,KAAO9D,EAAEi0D,MAAMnwD,GAmDxB,CACLutF,MAAM,EACNp9B,MAAO,GACPkB,MAAO,KACPzzD,EAAG,KACHC,EAAG,OArDSzB,EAAGwB,EAAGC,EAAG6b,EAAIE,EAAID,EAAIhS,EACjC,CA5BIrC,EAAKxB,EAAIwpF,EAAMF,EAAM9nF,EAAS+nF,EAAMF,EAAMrpF,EA6B9C,IAAIiqF,EA8CC,CACLR,MAAM,EACNp9B,MAAO,GACPkB,MAAO,KACPzzD,EAAG,KACHC,EAAG,KAlDHkwF,IAAW,SAAS3xF,GAClBsI,EAAOqpF,EAAM3xF,GAAIsoF,EAAGtoF,IAAK4D,IAAK2kF,EAAGvoF,EAAG4D,GAAImtF,EAAKC,EAAKC,EAAKC,EACzD,GAQA,GAPAS,EAAKC,MAAQ,SAAS3oE,GACpBwmE,GAAsBxmE,EAAG0oE,EAAMZ,EAAKC,EAAKC,EAAKC,EAChD,EACAS,EAAKtlD,KAAO,SAAS4oB,GACnB,OAuDN,SAA8B08B,EAAMnwF,EAAGC,EAAGm/C,EAAItB,EAAI0pC,EAAIG,GACpD,IAA6B0I,EAAzBC,EAAehoF,IAiCnB,OAhCA,SAAUuiC,EAAKziC,EAAM0T,EAAIE,EAAID,EAAIhS,GAC/B,KAAI+R,EAAK0rE,GAAMxrE,EAAK2rE,GAAM5rE,EAAKqjC,GAAMr1C,EAAK+zC,GAA1C,CACA,GAAI2V,EAAQrrD,EAAKqrD,MAAO,CACtB,IAAIA,EAAO/rD,EAAK1H,EAAIoI,EAAKpI,EAAGkG,EAAKjG,EAAImI,EAAKnI,EAAGswF,EAAY7oF,EAAKA,EAAKxB,EAAKA,EACxE,GAAIqqF,EAAYD,EAAc,CAC5B,IAAI/hE,EAAWpwB,KAAKogC,KAAK+xD,EAAeC,GACxCnxC,EAAKp/C,EAAIuuB,EAAUuvB,EAAK79C,EAAIsuB,EAC5Bi5D,EAAKxnF,EAAIuuB,EAAUo5D,EAAK1nF,EAAIsuB,EAC5B8hE,EAAe58B,CACjB,CACF,CAEA,IADA,IAAIy6B,EAAW9lF,EAAKmqD,MAAOy9B,EAAiB,IAAXl0E,EAAKC,GAAUk0E,EAAiB,IAAXj0E,EAAKjS,GAClD3H,GADqFnC,GAAKgwF,IAC7E,EADuDjwF,GAAKgwF,EACjDn6D,EAAIzzB,EAAI,EAAGA,EAAIyzB,IAAKzzB,EACnD,GAAIgG,EAAO8lF,EAAa,EAAJ9rF,GAAQ,OAAY,EAAJA,GACnC,KAAK,EACJyoC,EAAKziC,EAAM0T,EAAIE,EAAIg0E,EAAIC,GACvB,MAED,KAAK,EACJplD,EAAKziC,EAAM4nF,EAAIh0E,EAAID,EAAIk0E,GACvB,MAED,KAAK,EACJplD,EAAKziC,EAAM0T,EAAIm0E,EAAID,EAAIjmF,GACvB,MAED,KAAK,EACJ8gC,EAAKziC,EAAM4nF,EAAIC,EAAIl0E,EAAIhS,GA1ByB,CA8BrD,CA/BD,CA+BGomF,EAAM/wC,EAAItB,EAAI0pC,EAAIG,GACd0I,CACT,CA1FaG,CAAqBL,EAAM18B,EAAM,GAAIA,EAAM,GAAI87B,EAAKC,EAAKC,EAAKC,EACvE,EACAttF,GAAK,EACK,MAAN0Z,EAAY,CACd,OAAS1Z,EAAI9D,GACXwI,EAAOqpF,EAAMxpF,EAAKvE,GAAIqW,EAAGrW,GAAI0sC,EAAG1sC,GAAImtF,EAAKC,EAAKC,EAAKC,KAEnDttF,CACJ,MAAOuE,EAAKtH,QAAQ8wF,EAAK7sE,KAEzB,OADA7K,EAAKq2B,EAAKnoC,EAAOnI,EAAI,KACd2xF,CACT,CAkBA,OAjBAd,EAASrvF,EAAI,SAASmqD,GACpB,OAAOxiD,UAAUjJ,QAAUsB,EAAImqD,EAAGklC,GAAYrvF,CAChD,EACAqvF,EAASpvF,EAAI,SAASkqD,GACpB,OAAOxiD,UAAUjJ,QAAUuB,EAAIkqD,EAAGklC,GAAYpvF,CAChD,EACAovF,EAASj2E,OAAS,SAAS+wC,GACzB,OAAKxiD,UAAUjJ,QACN,MAALyrD,EAAWruC,EAAKE,EAAKD,EAAKhS,EAAK,MAAW+R,GAAMquC,EAAE,GAAG,GAAInuC,GAAMmuC,EAAE,GAAG,GAAIpuC,GAAMouC,EAAE,GAAG,GACvFpgD,GAAMogD,EAAE,GAAG,IACJklC,GAH6B,MAANvzE,EAAa,KAAO,CAAE,CAAEA,EAAIE,GAAM,CAAED,EAAIhS,GAIxE,EACAslF,EAASlsF,KAAO,SAASgnD,GACvB,OAAKxiD,UAAUjJ,QACN,MAALyrD,EAAWruC,EAAKE,EAAKD,EAAKhS,EAAK,MAAW+R,EAAKE,EAAK,EAAGD,GAAMouC,EAAE,GAAIpgD,GAAMogD,EAAE,IACxEklC,GAF6B,MAANvzE,EAAa,KAAO,CAAEC,EAAKD,EAAI/R,EAAKiS,EAGpE,EACOqzE,CACT,EA6DA3uF,EAAG+vF,eAAiBtC,GASpBztF,EAAGgwF,kBAAoBhC,GAoBvBhuF,EAAGiwF,kBAAoB/B,GAOvBluF,EAAGkwF,kBAAoB/B,GAiCvB,IAAIK,GAAyB,8CAA+CC,GAAyB,IAAIhgC,OAAO+/B,GAAuB57D,OAAQ,KAE/I,SAASq7D,GAAe58E,EAAGC,GAEzB,IADA,IAAiCyV,EAA7BrlB,EAAI1B,EAAGmwF,cAAcnyF,SAChB0D,GAAK,KAAOqlB,EAAI/mB,EAAGmwF,cAAczuF,GAAG2P,EAAGC,MAChD,OAAOyV,CACT,CAMA,SAASqpE,GAAoB/+E,EAAGC,GAC9B,IAAqF5P,EAAjFpC,EAAI,GAAIu5B,EAAI,GAAIw3D,EAAKh/E,EAAErT,OAAQsyF,EAAKh/E,EAAEtT,OAAQ0yD,EAAKjzD,KAAK+B,IAAI6R,EAAErT,OAAQsT,EAAEtT,QAC5E,IAAK0D,EAAI,EAAGA,EAAIgvD,IAAMhvD,EAAGpC,EAAEuC,KAAKosF,GAAe58E,EAAE3P,GAAI4P,EAAE5P,KACvD,KAAMA,EAAI2uF,IAAM3uF,EAAGm3B,EAAEn3B,GAAK2P,EAAE3P,GAC5B,KAAMA,EAAI4uF,IAAM5uF,EAAGm3B,EAAEn3B,GAAK4P,EAAE5P,GAC5B,OAAO,SAASihB,GACd,IAAKjhB,EAAI,EAAGA,EAAIgvD,IAAMhvD,EAAGm3B,EAAEn3B,GAAKpC,EAAEoC,GAAGihB,GACrC,OAAOkW,CACT,CACF,CApBA74B,EAAG8hC,YAAcmsD,GAMjBjuF,EAAGmwF,cAAgB,CAAE,SAAS9+E,EAAGC,GAC/B,IAAIqR,SAAWrR,EACf,OAAc,WAANqR,EAAiBo5C,GAAavX,IAAIlzC,EAAE4yB,gBAAkB,oBAAoB8qB,KAAK19C,GAAKm8E,GAAoBU,GAAuB78E,aAAaooD,GAAW+zB,GAAoBrwF,MAAMD,QAAQmU,GAAK8+E,GAA4B,WAANztE,GAAkB6E,MAAMlW,GAAK08E,GAAuBE,IAAsB78E,EAAGC,EAC3S,GACAtR,EAAGuwF,iBAAmBH,GAWtB,IAAII,GAAkB,WACpB,OAAOrmC,CACT,EACIsmC,GAAUzwF,EAAG0D,IAAI,CACnBxD,OAAQswF,GACRE,KA+DF,SAAsBlwE,GACpB,OAAO,SAASmC,GACd,OAAOllB,KAAKy0B,IAAIvP,EAAGnC,EACrB,CACF,EAlEEmwE,KAAM,WACJ,OAAOC,EACT,EACAC,MAAO,WACL,OAAOC,EACT,EACAzrF,IAAK,WACH,OAAO0rF,EACT,EACA17B,IAAK,WACH,OAAO27B,EACT,EACAj4F,OAAQ,WACN,OAAOk4F,EACT,EACAC,QA6DF,SAAyB7/E,EAAGb,GAC1B,IAAI7M,EACAsD,UAAUjJ,OAAS,IAAGwS,EAAI,KAC1BvJ,UAAUjJ,OAAQ2F,EAAI6M,EAAI,GAAI/S,KAAK03D,KAAK,EAAI9jD,IAASA,EAAI,EAAG1N,EAAI6M,EAAI,GACxE,OAAO,SAASmS,GACd,OAAO,EAAItR,EAAI5T,KAAKy0B,IAAI,GAAI,GAAKvP,GAAKllB,KAAK4H,KAAKsd,EAAIhf,GAAK,GAAI6M,EAC/D,CACF,EAnEE2gF,KAoEF,SAAsBxtF,GACfA,IAAGA,EAAI,SACZ,OAAO,SAASgf,GACd,OAAOA,EAAIA,IAAMhf,EAAI,GAAKgf,EAAIhf,EAChC,CACF,EAxEEytF,OAAQ,WACN,OAAOC,EACT,IAEEC,GAAetxF,EAAG0D,IAAI,CACxB,GAAMymD,EACNonC,IAAKC,GACL,SAAUC,GACV,SAAU,SAAS1qE,GACjB,OAAO0qE,GAAgBD,GAAgBzqE,GACzC,IAaF,SAASyqE,GAAgBzqE,GACvB,OAAO,SAASpE,GACd,OAAO,EAAIoE,EAAE,EAAIpE,EACnB,CACF,CACA,SAAS8uE,GAAgB1qE,GACvB,OAAO,SAASpE,GACd,MAAO,IAAMA,EAAI,GAAKoE,EAAE,EAAIpE,GAAK,EAAIoE,EAAE,EAAI,EAAIpE,GACjD,CACF,CACA,SAASiuE,GAAajuE,GACpB,OAAOA,EAAIA,CACb,CACA,SAASmuE,GAAcnuE,GACrB,OAAOA,EAAIA,EAAIA,CACjB,CACA,SAAS+uE,GAAmB/uE,GAC1B,GAAIA,GAAK,EAAG,OAAO,EACnB,GAAIA,GAAK,EAAG,OAAO,EACnB,IAAIisB,EAAKjsB,EAAIA,EAAGgvE,EAAK/iD,EAAKjsB,EAC1B,OAAO,GAAKA,EAAI,GAAKgvE,EAAK,GAAKhvE,EAAIisB,GAAM+iD,EAAK,IAChD,CAMA,SAASZ,GAAYpuE,GACnB,OAAO,EAAIllB,KAAKugC,IAAIrb,EAAI,GAC1B,CACA,SAASquE,GAAYruE,GACnB,OAAOllB,KAAKy0B,IAAI,EAAG,IAAMvP,EAAI,GAC/B,CACA,SAASsuE,GAAetuE,GACtB,OAAO,EAAIllB,KAAKogC,KAAK,EAAIlb,EAAIA,EAC/B,CAeA,SAAS0uE,GAAe1uE,GACtB,OAAOA,EAAI,EAAI,KAAO,OAASA,EAAIA,EAAIA,EAAI,EAAI,KAAO,QAAUA,GAAK,IAAM,MAAQA,EAAI,IAAMA,EAAI,IAAM,KAAO,QAAUA,GAAK,KAAO,MAAQA,EAAI,MAAQ,QAAUA,GAAK,MAAQ,MAAQA,EAAI,OAC7L,CAiCA,SAASivE,GAAoBvgF,EAAGC,GAE9B,OADAA,GAAKD,EACE,SAASsR,GACd,OAAOllB,KAAKukC,MAAM3wB,EAAIC,EAAIqR,EAC5B,CACF,CAWA,SAASkvE,GAAa/pC,GACpB,IA0B2Bz2C,EAAGC,EAAG06B,EA1B7BqqB,EAAK,CAAEvO,EAAEz2C,EAAGy2C,EAAEx2C,GAAK+Z,EAAK,CAAEy8B,EAAEjvB,EAAGivB,EAAEhqD,GAAKg0F,EAAKC,GAAsB17B,GAAK27B,EAAKC,GAAgB57B,EAAIhrC,GAAK6mE,EAAKH,KA0BlF1gF,EA1B4Hga,GA2BrJ,KAD+B2gB,GA1B+HgmD,IA0BlI1gF,EA1B6H+kD,GA2B7I,GACdhlD,EAAE,IAAM26B,EAAI16B,EAAE,GACPD,KA7BiK,EACpKglD,EAAG,GAAKhrC,EAAG,GAAKA,EAAG,GAAKgrC,EAAG,KAC7BA,EAAG,KAAO,EACVA,EAAG,KAAO,EACVy7B,IAAO,EACPE,IAAO,GAETjyF,KAAKkF,QAAU6sF,EAAKr0F,KAAK69D,MAAMjF,EAAG,GAAIA,EAAG,IAAM54D,KAAK69D,OAAOjwC,EAAG,GAAIA,EAAG,KAAOwpC,GAC5E90D,KAAK49B,UAAY,CAAEmqB,EAAEtnC,EAAGsnC,EAAE/gC,GAC1BhnB,KAAKE,MAAQ,CAAE6xF,EAAII,GACnBnyF,KAAKoyF,KAAOD,EAAKz0F,KAAK69D,MAAM02B,EAAIE,GAAMr9B,GAAa,CACrD,CAIA,SAASo9B,GAAgB5gF,EAAGC,GAC1B,OAAOD,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,EAChC,CACA,SAASygF,GAAsB1gF,GAC7B,IAAI26B,EAAIvuC,KAAKogC,KAAKo0D,GAAgB5gF,EAAGA,IAKrC,OAJI26B,IACF36B,EAAE,IAAM26B,EACR36B,EAAE,IAAM26B,GAEHA,CACT,CA1IAhsC,EAAGw2B,KAAO,SAASiX,GACjB,IAKqB1mB,EALjBrlB,EAAI+rC,EAAKvgC,QAAQ,KAAMyV,EAAIjhB,GAAK,EAAI+rC,EAAKlpC,MAAM,EAAG7C,GAAK+rC,EAAMqa,EAAIpmD,GAAK,EAAI+rC,EAAKlpC,MAAM7C,EAAI,GAAK,KAGlG,OAFAihB,EAAI8tE,GAAQlmE,IAAI5H,IAAM6tE,GACtB1oC,EAAIwpC,GAAa/mE,IAAIu9B,IAAMqC,EAGNpjC,EAFA+gC,EAAEnlC,EAAE/gB,MAAM,KAAMujD,EAActoD,KAAKoK,UAAW,KAG5D,SAAS0b,GACd,OAAOA,GAAK,EAAI,EAAIA,GAAK,EAAI,EAAIoE,EAAEpE,EACrC,CAJF,EA2DA3iB,EAAGoyF,eACH,SAA2B/gF,EAAGC,GAC5BD,EAAIrR,EAAG06D,IAAIrpD,GACXC,EAAItR,EAAG06D,IAAIppD,GACX,IAAI+gF,EAAKhhF,EAAE3O,EAAG4vF,EAAKjhF,EAAEwnB,EAAG05D,EAAKlhF,EAAEonC,EAAG+5C,EAAKlhF,EAAE5O,EAAI2vF,EAAII,EAAKnhF,EAAEunB,EAAIy5D,EAAII,EAAKphF,EAAEmnC,EAAI85C,EACvE/qE,MAAMirE,KAAKA,EAAK,EAAGH,EAAK9qE,MAAM8qE,GAAMhhF,EAAEunB,EAAIy5D,GAC1C9qE,MAAMgrE,IAAKA,EAAK,EAAGH,EAAK7qE,MAAM6qE,GAAM/gF,EAAE5O,EAAI2vF,GAAaG,EAAK,IAAKA,GAAM,IAAcA,GAAM,MAAKA,GAAM,KAC1G,OAAO,SAAS7vE,GACd,OAAOi4C,GAAWy3B,EAAKG,EAAK7vE,EAAG2vE,EAAKG,EAAK9vE,EAAG4vE,EAAKG,EAAK/vE,GAAK,EAC7D,CACF,EACA3iB,EAAG2yF,eACH,SAA2BthF,EAAGC,GAC5BD,EAAIrR,EAAG85D,IAAIzoD,GACXC,EAAItR,EAAG85D,IAAIxoD,GACX,IAAI+gF,EAAKhhF,EAAE3O,EAAGkwF,EAAKvhF,EAAE1N,EAAG4uF,EAAKlhF,EAAEonC,EAAG+5C,EAAKlhF,EAAE5O,EAAI2vF,EAAI/D,EAAKh9E,EAAE3N,EAAIivF,EAAIF,EAAKphF,EAAEmnC,EAAI85C,EACvE/qE,MAAM8mE,KAAKA,EAAK,EAAGsE,EAAKprE,MAAMorE,GAAMthF,EAAE3N,EAAIivF,GAC1CprE,MAAMgrE,IAAKA,EAAK,EAAGH,EAAK7qE,MAAM6qE,GAAM/gF,EAAE5O,EAAI2vF,GAAaG,EAAK,IAAKA,GAAM,IAAcA,GAAM,MAAKA,GAAM,KAC1G,OAAO,SAAS7vE,GACd,OAAOq3C,GAAWq4B,EAAKG,EAAK7vE,EAAGiwE,EAAKtE,EAAK3rE,EAAG4vE,EAAKG,EAAK/vE,GAAK,EAC7D,CACF,EACA3iB,EAAG6yF,eACH,SAA2BxhF,EAAGC,GAC5BD,EAAIrR,EAAG86D,IAAIzpD,GACXC,EAAItR,EAAG86D,IAAIxpD,GACX,IAAIihF,EAAKlhF,EAAEonC,EAAGq6C,EAAKzhF,EAAEA,EAAGu8E,EAAKv8E,EAAEC,EAAGohF,EAAKphF,EAAEmnC,EAAI85C,EAAIQ,EAAKzhF,EAAED,EAAIyhF,EAAI/E,EAAKz8E,EAAEA,EAAIs8E,EAC3E,OAAO,SAASjrE,GACd,OAAOw4C,GAAWo3B,EAAKG,EAAK/vE,EAAGmwE,EAAKC,EAAKpwE,EAAGirE,EAAKG,EAAKprE,GAAK,EAC7D,CACF,EACA3iB,EAAGgzF,iBAAmBpB,GAOtB5xF,EAAGu1B,UAAY,SAAStF,GACtB,IAAIxqB,EAAI6/C,EAAYt3B,gBAAgBhuB,EAAGkuD,GAAG3rB,OAAOlzB,IAAK,KACtD,OAAQrP,EAAGu1B,UAAY,SAAStF,GAC9B,GAAc,MAAVA,EAAgB,CAClBxqB,EAAEwoB,aAAa,YAAagC,GAC5B,IAAItN,EAAIld,EAAE8vB,UAAU09D,QAAQC,aAC9B,CACA,OAAO,IAAIrB,GAAalvE,EAAIA,EAAEomC,OAASoqC,GACzC,GAAGljE,EACL,EAcA4hE,GAAal2F,UAAUwI,SAAW,WAChC,MAAO,aAAepE,KAAK49B,UAAY,WAAa59B,KAAKkF,OAAS,UAAYlF,KAAKoyF,KAAO,UAAYpyF,KAAKE,MAAQ,GACrH,EAiBA,IAAIkzF,GAAuB,CACzB9hF,EAAG,EACHC,EAAG,EACHunB,EAAG,EACH/6B,EAAG,EACH0iB,EAAG,EACHuG,EAAG,GAGL,SAASqsE,GAA2BzvF,GAClC,OAAOA,EAAE3F,OAAS2F,EAAE61E,MAAQ,IAAM,EACpC,CAkDA,SAAS6Z,GAAwBhiF,EAAGC,GAClC,IAAI3N,EAAI,GAAIk1D,EAAI,GAOhB,OANAxnD,EAAIrR,EAAGu1B,UAAUlkB,GAAIC,EAAItR,EAAGu1B,UAAUjkB,GAnDxC,SAAiCgiF,EAAIC,EAAI5vF,EAAGk1D,GAC1C,GAAIy6B,EAAG,KAAOC,EAAG,IAAMD,EAAG,KAAOC,EAAG,GAAI,CACtC,IAAI7xF,EAAIiC,EAAE9B,KAAK,aAAc,KAAM,IAAK,KAAM,KAC9Cg3D,EAAEh3D,KAAK,CACLH,EAAGA,EAAI,EACPpC,EAAG4uF,GAAqBoF,EAAG,GAAIC,EAAG,KACjC,CACD7xF,EAAGA,EAAI,EACPpC,EAAG4uF,GAAqBoF,EAAG,GAAIC,EAAG,KAEtC,MAAWA,EAAG,IAAMA,EAAG,KACrB5vF,EAAE9B,KAAK,aAAe0xF,EAAK,IAE/B,CAuCEC,CAAwBniF,EAAEssB,UAAWrsB,EAAEqsB,UAAWh6B,EAAGk1D,GAtCvD,SAA8B46B,EAAIC,EAAI/vF,EAAGk1D,GACnC46B,IAAOC,GACLD,EAAKC,EAAK,IAAKA,GAAM,IAAcA,EAAKD,EAAK,MAAKA,GAAM,KAC5D56B,EAAEh3D,KAAK,CACLH,EAAGiC,EAAE9B,KAAKuxF,GAA2BzvF,GAAK,UAAW,KAAM,KAAO,EAClErE,EAAG4uF,GAAqBuF,EAAIC,MAErBA,GACT/vF,EAAE9B,KAAKuxF,GAA2BzvF,GAAK,UAAY+vF,EAAK,IAE5D,CA6BEC,CAAqBtiF,EAAEpM,OAAQqM,EAAErM,OAAQtB,EAAGk1D,GA5B9C,SAA4B+6B,EAAIC,EAAIlwF,EAAGk1D,GACjC+6B,IAAOC,EACTh7B,EAAEh3D,KAAK,CACLH,EAAGiC,EAAE9B,KAAKuxF,GAA2BzvF,GAAK,SAAU,KAAM,KAAO,EACjErE,EAAG4uF,GAAqB0F,EAAIC,KAErBA,GACTlwF,EAAE9B,KAAKuxF,GAA2BzvF,GAAK,SAAWkwF,EAAK,IAE3D,CAoBEC,CAAmBziF,EAAE8gF,KAAM7gF,EAAE6gF,KAAMxuF,EAAGk1D,GAnBxC,SAA6Bk7B,EAAIC,EAAIrwF,EAAGk1D,GACtC,GAAIk7B,EAAG,KAAOC,EAAG,IAAMD,EAAG,KAAOC,EAAG,GAAI,CACtC,IAAItyF,EAAIiC,EAAE9B,KAAKuxF,GAA2BzvF,GAAK,SAAU,KAAM,IAAK,KAAM,KAC1Ek1D,EAAEh3D,KAAK,CACLH,EAAGA,EAAI,EACPpC,EAAG4uF,GAAqB6F,EAAG,GAAIC,EAAG,KACjC,CACDtyF,EAAGA,EAAI,EACPpC,EAAG4uF,GAAqB6F,EAAG,GAAIC,EAAG,KAEtC,MAAqB,IAAVA,EAAG,IAAsB,IAAVA,EAAG,IAC3BrwF,EAAE9B,KAAKuxF,GAA2BzvF,GAAK,SAAWqwF,EAAK,IAE3D,CAOEC,CAAoB5iF,EAAEpR,MAAOqR,EAAErR,MAAO0D,EAAGk1D,GACzCxnD,EAAIC,EAAI,KACD,SAASqR,GAEd,IADA,IAA0BzlB,EAAtBwE,GAAK,EAAG9D,EAAIi7D,EAAE76D,SACT0D,EAAI9D,GAAG+F,GAAGzG,EAAI27D,EAAEn3D,IAAIA,GAAKxE,EAAEoC,EAAEqjB,GACtC,OAAOhf,EAAE2jE,KAAK,GAChB,CACF,CACA,SAAS4sB,GAAuB7iF,EAAGC,GAEjC,OADAA,GAAKA,GAAKD,GAAKA,IAAM,EAAIC,EAClB,SAAShS,GACd,OAAQA,EAAI+R,GAAKC,CACnB,CACF,CACA,SAAS6iF,GAAsB9iF,EAAGC,GAEhC,OADAA,GAAKA,GAAKD,GAAKA,IAAM,EAAIC,EAClB,SAAShS,GACd,OAAO7B,KAAK+G,IAAI,EAAG/G,KAAK+B,IAAI,GAAIF,EAAI+R,GAAKC,GAC3C,CACF,CASA,SAAS8iF,GAAqBC,GAE5B,IADA,IAAI9yF,EAAQ8yF,EAAKzhE,OAAQ5hB,EAAMqjF,EAAK39F,OAAQ49F,EAsB9C,SAA6CjjF,EAAGC,GAC9C,GAAID,IAAMC,EAAG,OAAOD,EACpB,IAAIkjF,EAASC,GAA0BnjF,GAAIojF,EAASD,GAA0BljF,GAAIojF,EAAQH,EAAO/a,MAAOmb,EAAQF,EAAOjb,MAAOob,EAAa,KAC3I,KAAOF,IAAUC,GACfC,EAAaF,EACbA,EAAQH,EAAO/a,MACfmb,EAAQF,EAAOjb,MAEjB,OAAOob,CACT,CA/BoDC,CAAoCtzF,EAAOyP,GAAMuhB,EAAS,CAAEhxB,GACvGA,IAAU+yF,GACf/yF,EAAQA,EAAM6iC,OACd7R,EAAO1wB,KAAKN,GAGd,IADA,IAAIyqC,EAAIzZ,EAAOv0B,OACRgT,IAAQsjF,GACb/hE,EAAOvL,OAAOglB,EAAG,EAAGh7B,GACpBA,EAAMA,EAAIozB,OAEZ,OAAO7R,CACT,CACA,SAASiiE,GAA0B9sF,GAEjC,IADA,IAAIotF,EAAY,GAAI1wD,EAAS18B,EAAK08B,OACjB,MAAVA,GACL0wD,EAAUjzF,KAAK6F,GACfA,EAAO08B,EACPA,EAASA,EAAOA,OAGlB,OADA0wD,EAAUjzF,KAAK6F,GACRotF,CACT,CAsVA,SAASC,GAAyBj3F,GAChCA,EAAEk3F,OAAS,CACb,CACA,SAASC,GAAuBn3F,GAC9BA,EAAEk3F,QAAS,CACb,CACA,SAASE,GAAyBp3F,GAChCA,EAAEk3F,OAAS,EACXl3F,EAAEq3F,GAAKr3F,EAAEwB,EAAGxB,EAAEs3F,GAAKt3F,EAAEyB,CACvB,CACA,SAAS81F,GAAwBv3F,GAC/BA,EAAEk3F,QAAS,CACb,CACA,SAASM,GAA0B3E,EAAM4E,EAAOC,GAC9C,IAAIn2E,EAAK,EAAGC,EAAK,EAEjB,GADAqxE,EAAK8E,OAAS,GACT9E,EAAK1B,KAER,IADA,IAAkDp2D,EAA9Cg5B,EAAQ8+B,EAAK9+B,MAAOj0D,EAAIi0D,EAAM7zD,OAAQ0D,GAAK,IACtCA,EAAI9D,GAEF,OADTi7B,EAAIg5B,EAAMnwD,MAEV4zF,GAA0Bz8D,EAAG08D,EAAOC,GACpC7E,EAAK8E,QAAU58D,EAAE48D,OACjBp2E,GAAMwZ,EAAE48D,OAAS58D,EAAExZ,GACnBC,GAAMuZ,EAAE48D,OAAS58D,EAAEvZ,IAGvB,GAAIqxE,EAAK59B,MAAO,CACT49B,EAAK1B,OACR0B,EAAK59B,MAAMzzD,GAAK7B,KAAKy+C,SAAW,GAChCy0C,EAAK59B,MAAMxzD,GAAK9B,KAAKy+C,SAAW,IAElC,IAAIlQ,EAAIupD,EAAQC,EAAQ7E,EAAK59B,MAAMnvD,OACnC+sF,EAAK8E,QAAU9E,EAAK+E,YAAc1pD,EAClC3sB,GAAM2sB,EAAI2kD,EAAK59B,MAAMzzD,EACrBggB,GAAM0sB,EAAI2kD,EAAK59B,MAAMxzD,CACvB,CACAoxF,EAAKtxE,GAAKA,EAAKsxE,EAAK8E,OACpB9E,EAAKrxE,GAAKA,EAAKqxE,EAAK8E,MACtB,CA1eAz1F,EAAG21F,qBAAuBtC,GA+E1BrzF,EAAGk7B,OAAS,CAAC,EACbl7B,EAAGk7B,OAAO06D,OAAS,WACjB,OAAO,SAAS3I,GAEd,IADA,IAAI4I,EAAQ,GAAIn0F,GAAK,EAAG9D,EAAIqvF,EAAMjvF,SACzB0D,EAAI9D,GAAGi4F,EAAMh0F,KAAKuyF,GAAqBnH,EAAMvrF,KACtD,OAAOm0F,CACT,CACF,EAkCA71F,EAAGk7B,OAAO46D,MAAQ,WAChB,IAAgBC,EAAQl+D,EAAQkxB,EAAQnrD,EAAgBo4F,EAAYC,EAAeC,EAA/EJ,EAAQ,CAAC,EAA8BxlF,EAAU,EACrD,SAAS6lF,IACP,IAAkFnqD,EAAG1sC,EAAGo/C,EAAIh9C,EAAGyzB,EAA3Fu4B,EAAY,CAAC,EAAG0oC,EAAY,GAAIC,EAAar2F,EAAGG,MAAMvC,GAAI04F,EAAgB,GAI9E,IAHAP,EAAS,GACTl+D,EAAS,GACTmU,EAAI,EAAGtqC,GAAK,IACHA,EAAI9D,GAAG,CAEd,IADA0B,EAAI,EAAG61B,GAAK,IACHA,EAAIv3B,GACX0B,GAAKypD,EAAOrnD,GAAGyzB,GAEjBihE,EAAUv0F,KAAKvC,GACfg3F,EAAcz0F,KAAK7B,EAAGG,MAAMvC,IAC5BouC,GAAK1sC,CACP,CAeA,IAdI02F,GACFK,EAAWjlF,MAAK,SAASC,EAAGC,GAC1B,OAAO0kF,EAAWI,EAAU/kF,GAAI+kF,EAAU9kF,GAC5C,IAEE2kF,GACFK,EAAc33F,SAAQ,SAASb,EAAG4D,GAChC5D,EAAEsT,MAAK,SAASC,EAAGC,GACjB,OAAO2kF,EAAcltC,EAAOrnD,GAAG2P,GAAI03C,EAAOrnD,GAAG4P,GAC/C,GACF,IAEF06B,GAAK,GAAI17B,EAAU1S,GAAKouC,EACxB1sC,EAAI,EAAGoC,GAAK,IACHA,EAAI9D,GAAG,CAEd,IADA8gD,EAAKp/C,EAAG61B,GAAK,IACJA,EAAIv3B,GAAG,CACd,IAAI24F,EAAKF,EAAW30F,GAAI80F,EAAKF,EAAcC,GAAIphE,GAAIn4B,EAAI+rD,EAAOwtC,GAAIC,GAAKrX,EAAK7/E,EAAG27E,EAAK37E,GAAKtC,EAAIgvC,EAC7F0hB,EAAU6oC,EAAK,IAAMC,GAAM,CACzB5yF,MAAO2yF,EACPE,SAAUD,EACVj6D,WAAY4iD,EACZ3iD,SAAUy+C,EACV5+E,MAAOW,EAEX,CACA66B,EAAO0+D,GAAM,CACX3yF,MAAO2yF,EACPh6D,WAAYmiB,EACZliB,SAAUl9B,EACVjD,MAAO+5F,EAAUG,IAEnBj3F,GAAKgR,CACP,CAEA,IADA5O,GAAK,IACIA,EAAI9D,GAEX,IADAu3B,EAAIzzB,EAAI,IACCyzB,EAAIv3B,GAAG,CACd,IAAIg1B,EAAS86B,EAAUhsD,EAAI,IAAMyzB,GAAIz+B,EAASg3D,EAAUv4B,EAAI,IAAMzzB,IAC9DkxB,EAAOv2B,OAAS3F,EAAO2F,QACzB05F,EAAOl0F,KAAK+wB,EAAOv2B,MAAQ3F,EAAO2F,MAAQ,CACxCu2B,OAAQl8B,EACRA,OAAQk8B,GACN,CACFA,OAAQA,EACRl8B,OAAQA,GAGd,CAEEw/F,GAAYQ,GAClB,CACA,SAASA,IACPX,EAAO3kF,MAAK,SAASC,EAAGC,GACtB,OAAO4kF,GAAY7kF,EAAEuhB,OAAOv2B,MAAQgV,EAAE3a,OAAO2F,OAAS,GAAIiV,EAAEshB,OAAOv2B,MAAQiV,EAAE5a,OAAO2F,OAAS,EAC/F,GACF,CAuCA,OAtCAy5F,EAAM/sC,OAAS,SAASzpD,GACtB,OAAK2H,UAAUjJ,QACfJ,GAAKmrD,EAASzpD,IAAMypD,EAAO/qD,OAC3B+3F,EAASl+D,EAAS,KACXi+D,GAHuB/sC,CAIhC,EACA+sC,EAAMxlF,QAAU,SAAShR,GACvB,OAAK2H,UAAUjJ,QACfsS,EAAUhR,EACVy2F,EAASl+D,EAAS,KACXi+D,GAHuBxlF,CAIhC,EACAwlF,EAAME,WAAa,SAAS12F,GAC1B,OAAK2H,UAAUjJ,QACfg4F,EAAa12F,EACby2F,EAASl+D,EAAS,KACXi+D,GAHuBE,CAIhC,EACAF,EAAMG,cAAgB,SAAS32F,GAC7B,OAAK2H,UAAUjJ,QACfi4F,EAAgB32F,EAChBy2F,EAAS,KACFD,GAHuBG,CAIhC,EACAH,EAAMI,WAAa,SAAS52F,GAC1B,OAAK2H,UAAUjJ,QACfk4F,EAAa52F,EACTy2F,GAAQW,IACLZ,GAHuBI,CAIhC,EACAJ,EAAMC,OAAS,WAEb,OADKA,GAAQI,IACNJ,CACT,EACAD,EAAMj+D,OAAS,WAEb,OADKA,GAAQs+D,IACNt+D,CACT,EACOi+D,CACT,EACA91F,EAAGk7B,OAAOqC,MAAQ,WAChB,IAA6DpW,EAAwB2rB,EAAMyiD,EAAkOoB,EAAWC,EAAWpB,EAA/Uj4D,EAAQ,CAAC,EAAG4Z,EAAQn3C,EAAGyrD,SAAS,QAAS,OAAQ,OAAehpD,EAAO,CAAE,EAAG,GAAkBo0F,EAAW,GAAIC,EAAeC,GAA6BC,EAAeC,GAA6BxB,GAAU,GAAIyB,EAAkBC,GAAgCC,EAAU,GAAIC,EAAS,IAAKxlC,EAAQ,GAAIo7B,EAAQ,GACzT,SAASqK,EAAQ5vF,GACf,OAAO,SAASipF,EAAMv1E,EAAIquC,EAAGpuC,GAC3B,GAAIs1E,EAAK59B,QAAUrrD,EAAM,CACvB,IAAIV,EAAK2pF,EAAKtxE,GAAK3X,EAAKpI,EAAGkG,EAAKmrF,EAAKrxE,GAAK5X,EAAKnI,EAAGg4F,EAAKl8E,EAAKD,EAAIo8E,EAAKxwF,EAAKA,EAAKxB,EAAKA,EACpF,GAAI+xF,EAAKA,EAAKF,EAASG,EAAI,CACzB,GAAIA,EAAKN,EAAiB,CACxB,IAAIlrD,EAAI2kD,EAAK8E,OAAS+B,EACtB9vF,EAAKytF,IAAMnuF,EAAKglC,EAChBtkC,EAAK0tF,IAAM5vF,EAAKwmC,CAClB,CACA,OAAO,CACT,CACA,GAAI2kD,EAAK59B,OAASykC,GAAMA,EAAKN,EAAiB,CACxClrD,EAAI2kD,EAAK+E,YAAc8B,EAC3B9vF,EAAKytF,IAAMnuF,EAAKglC,EAChBtkC,EAAK0tF,IAAM5vF,EAAKwmC,CAClB,CACF,CACA,OAAQ2kD,EAAK8E,MACf,CACF,CA8LA,SAASgC,EAAS35F,GAChBA,EAAEq3F,GAAKn1F,EAAGm3C,MAAM73C,EAAGxB,EAAEs3F,GAAKp1F,EAAGm3C,MAAM53C,EACnCg+B,EAAMm6D,QACR,CACA,OAjMAn6D,EAAM/6B,KAAO,WACX,IAAK+yF,GAAS,KAAO,KAMnB,OALApuE,EAAQ,KACRgwB,EAAMnmC,IAAI,CACRmK,KAAM,MACNo6E,MAAOA,EAAQ,KAEV,EAET,IAAwC18B,EAAGn3D,EAAGxE,EAAGyG,EAAGgf,EAAG81B,EAAGzM,EAAG1sC,EAAGC,EAA5D3B,EAAIi0D,EAAM7zD,OAAQ8pD,EAAImlC,EAAMjvF,OAChC,IAAK0D,EAAI,EAAGA,EAAIomD,IAAKpmD,EAEnBiC,GADAzG,EAAI+vF,EAAMvrF,IACJkxB,QAIF6lB,GAFJn5C,GADAqjB,EAAIzlB,EAAExG,QACA4I,EAAIqE,EAAErE,GAEAA,GADZC,EAAIojB,EAAEpjB,EAAIoE,EAAEpE,GACQA,KAElBD,GADAm5C,EAAI88C,EAAQqB,EAAUl1F,KAAO+2C,EAAIh7C,KAAKogC,KAAK4a,IAAMk+C,EAAUj1F,IAAM+2C,EAEjEl5C,GAAKk5C,EACL91B,EAAErjB,GAAKA,GAAK0sC,EAAIroC,EAAEg0F,OAASh1E,EAAEg1E,OAASh0F,EAAEg0F,QAAUh0F,EAAEg0F,OAASh1E,EAAEg1E,QAAU,IACzEh1E,EAAEpjB,GAAKA,EAAIysC,EACXroC,EAAErE,GAAKA,GAAK0sC,EAAI,EAAIA,GACpBroC,EAAEpE,GAAKA,EAAIysC,GAGf,IAAIA,EAAIupD,EAAQ6B,KACd93F,EAAImD,EAAK,GAAK,EACdlD,EAAIkD,EAAK,GAAK,EACdf,GAAK,EACDsqC,GAAG,OAAStqC,EAAI9D,IAClBV,EAAI20D,EAAMnwD,IACRpC,IAAMA,EAAIpC,EAAEoC,GAAK0sC,EACnB9uC,EAAEqC,IAAMA,EAAIrC,EAAEqC,GAAKysC,EAGvB,GAAIypD,EAGF,IAFAH,GAA0Bz8B,EAAI74D,EAAGkmF,KAAKyI,SAAS98B,GAAQ0jC,EAAOC,GAC9D9zF,GAAK,IACIA,EAAI9D,IACLV,EAAI20D,EAAMnwD,IAAIszF,OAClBn8B,EAAE62B,MAAM4H,EAAQp6F,IAKtB,IADAwE,GAAK,IACIA,EAAI9D,IACXV,EAAI20D,EAAMnwD,IACJszF,OACJ93F,EAAEoC,EAAIpC,EAAEi4F,GACRj4F,EAAEqC,EAAIrC,EAAEk4F,KAERl4F,EAAEoC,IAAMpC,EAAEi4F,IAAMj4F,EAAEi4F,GAAKj4F,EAAEoC,IAAMu3F,EAC/B35F,EAAEqC,IAAMrC,EAAEk4F,IAAMl4F,EAAEk4F,GAAKl4F,EAAEqC,IAAMs3F,GAGnC1/C,EAAM30C,KAAK,CACT2Y,KAAM,OACNo6E,MAAOA,GAEX,EACAh4D,EAAMs0B,MAAQ,SAASvyD,GACrB,OAAK2H,UAAUjJ,QACf6zD,EAAQvyD,EACDi+B,GAFuBs0B,CAGhC,EACAt0B,EAAM0vD,MAAQ,SAAS3tF,GACrB,OAAK2H,UAAUjJ,QACfivF,EAAQ3tF,EACDi+B,GAFuB0vD,CAGhC,EACA1vD,EAAM96B,KAAO,SAASnD,GACpB,OAAK2H,UAAUjJ,QACfyE,EAAOnD,EACAi+B,GAFuB96B,CAGhC,EACA86B,EAAMu5D,aAAe,SAASx3F,GAC5B,OAAK2H,UAAUjJ,QACf84F,EAA4B,mBAANx3F,EAAmBA,GAAKA,EACvCi+B,GAFuBu5D,CAGhC,EACAv5D,EAAM1P,SAAW0P,EAAMu5D,aACvBv5D,EAAMy5D,aAAe,SAAS13F,GAC5B,OAAK2H,UAAUjJ,QACfg5F,EAA4B,mBAAN13F,EAAmBA,GAAKA,EACvCi+B,GAFuBy5D,CAGhC,EACAz5D,EAAMs5D,SAAW,SAASv3F,GACxB,OAAK2H,UAAUjJ,QACf64F,GAAYv3F,EACLi+B,GAFuBs5D,CAGhC,EACAt5D,EAAMk4D,OAAS,SAASn2F,GACtB,OAAK2H,UAAUjJ,QACfy3F,EAAsB,mBAANn2F,EAAmBA,GAAKA,EACjCi+B,GAFuBk4D,CAGhC,EACAl4D,EAAMq6D,eAAiB,SAASt4F,GAC9B,OAAK2H,UAAUjJ,QACfk5F,EAAkB53F,EAAIA,EACfi+B,GAFuB9/B,KAAKogC,KAAKq5D,EAG1C,EACA35D,EAAM65D,QAAU,SAAS93F,GACvB,OAAK2H,UAAUjJ,QACfo5F,GAAW93F,EACJi+B,GAFuB65D,CAGhC,EACA75D,EAAMs6D,MAAQ,SAASv4F,GACrB,OAAK2H,UAAUjJ,QACfq5F,EAAS/3F,EAAIA,EACNi+B,GAFuB9/B,KAAKogC,KAAKw5D,EAG1C,EACA95D,EAAMg4D,MAAQ,SAASj2F,GACrB,OAAK2H,UAAUjJ,QACfsB,GAAKA,EACDi2F,EACEj2F,EAAI,EACNi2F,EAAQj2F,GAER6nB,EAAM0R,EAAI,KAAM1R,EAAMxE,EAAI7F,IAAKqK,EAAQ,KACvCgwB,EAAMnmC,IAAI,CACRmK,KAAM,MACNo6E,MAAOA,EAAQ,KAGVj2F,EAAI,IACb63C,EAAM51C,MAAM,CACV4Z,KAAM,QACNo6E,MAAOA,EAAQj2F,IAEjB6nB,EAAQohD,GAAShrC,EAAM/6B,OAElB+6B,GAnBuBg4D,CAoBhC,EACAh4D,EAAMh8B,MAAQ,WACZ,IAAIG,EAAiEo2F,EAAW56F,EAAzEU,EAAIi0D,EAAM7zD,OAAQ8pD,EAAImlC,EAAMjvF,OAAQ2E,EAAIF,EAAK,GAAIC,EAAID,EAAK,GACjE,IAAKf,EAAI,EAAGA,EAAI9D,IAAK8D,GAClBxE,EAAI20D,EAAMnwD,IAAIkC,MAAQlC,EACvBxE,EAAEy6F,OAAS,EAEb,IAAKj2F,EAAI,EAAGA,EAAIomD,IAAKpmD,EAEI,iBADvBxE,EAAI+vF,EAAMvrF,IACGkxB,SAAoB11B,EAAE01B,OAASi/B,EAAM30D,EAAE01B,SAC7B,iBAAZ11B,EAAExG,SAAoBwG,EAAExG,OAASm7D,EAAM30D,EAAExG,WAClDwG,EAAE01B,OAAO+kE,SACTz6F,EAAExG,OAAOihG,OAEb,IAAKj2F,EAAI,EAAGA,EAAI9D,IAAK8D,EACnBxE,EAAI20D,EAAMnwD,GACN8lB,MAAMtqB,EAAEoC,KAAIpC,EAAEoC,EAAI0N,EAAS,IAAKrK,IAChC6kB,MAAMtqB,EAAEqC,KAAIrC,EAAEqC,EAAIyN,EAAS,IAAKtK,IAChC8kB,MAAMtqB,EAAEi4F,MAAKj4F,EAAEi4F,GAAKj4F,EAAEoC,GACtBkoB,MAAMtqB,EAAEk4F,MAAKl4F,EAAEk4F,GAAKl4F,EAAEqC,GAG5B,GADAo3F,EAAY,GACgB,mBAAjBG,EAA6B,IAAKp1F,EAAI,EAAGA,EAAIomD,IAAKpmD,EAAGi1F,EAAUj1F,IAAMo1F,EAAaj6F,KAAKkD,KAAMktF,EAAMvrF,GAAIA,QAAS,IAAKA,EAAI,EAAGA,EAAIomD,IAAKpmD,EAAGi1F,EAAUj1F,GAAKo1F,EAElK,GADAF,EAAY,GACgB,mBAAjBI,EAA6B,IAAKt1F,EAAI,EAAGA,EAAIomD,IAAKpmD,EAAGk1F,EAAUl1F,IAAMs1F,EAAan6F,KAAKkD,KAAMktF,EAAMvrF,GAAIA,QAAS,IAAKA,EAAI,EAAGA,EAAIomD,IAAKpmD,EAAGk1F,EAAUl1F,GAAKs1F,EAElK,GADAxB,EAAU,GACY,mBAAXC,EAAuB,IAAK/zF,EAAI,EAAGA,EAAI9D,IAAK8D,EAAG8zF,EAAQ9zF,IAAM+zF,EAAO54F,KAAKkD,KAAM8xD,EAAMnwD,GAAIA,QAAS,IAAKA,EAAI,EAAGA,EAAI9D,IAAK8D,EAAG8zF,EAAQ9zF,GAAK+zF,EAClJ,SAASzoF,EAAS+qF,EAAWt1F,GAC3B,IAAKq1F,EAAW,CAEd,IADAA,EAAY,IAAI16F,MAAMQ,GACjBu3B,EAAI,EAAGA,EAAIv3B,IAAKu3B,EACnB2iE,EAAU3iE,GAAK,GAEjB,IAAKA,EAAI,EAAGA,EAAI2yB,IAAK3yB,EAAG,CACtB,IAAIj4B,EAAI+vF,EAAM93D,GACd2iE,EAAU56F,EAAE01B,OAAOhvB,OAAO/B,KAAK3E,EAAExG,QACjCohG,EAAU56F,EAAExG,OAAOkN,OAAO/B,KAAK3E,EAAE01B,OACnC,CACF,CAEA,IADA,IAA8DtzB,EAA1Dw3B,EAAaghE,EAAUp2F,GAAIyzB,GAAK,EAAGsjB,EAAI3hB,EAAW94B,SAC7Cm3B,EAAIsjB,OAAQjxB,MAAMloB,EAAIw3B,EAAW3B,GAAG4iE,IAAa,OAAOz4F,EACjE,OAAO7B,KAAKy+C,SAAWz5C,CACzB,CACA,OAAO86B,EAAMm6D,QACf,EACAn6D,EAAMm6D,OAAS,WACb,OAAOn6D,EAAMg4D,MAAM,GACrB,EACAh4D,EAAM/7B,KAAO,WACX,OAAO+7B,EAAMg4D,MAAM,EACrB,EACAh4D,EAAMuV,KAAO,WAEX,GADKA,IAAMA,EAAO9yC,EAAG+2C,SAASjE,OAAOkE,OAAOmT,GAAalxC,GAAG,kBAAmB87E,IAA0B97E,GAAG,aAAcw+E,GAAUx+E,GAAG,gBAAiBg8E,MACnJhuF,UAAUjJ,OAAQ,OAAO80C,EAC9B/yC,KAAKkZ,GAAG,kBAAmBi8E,IAA0Bj8E,GAAG,iBAAkBo8E,IAAyBx4F,KAAKi2C,EAC1G,EAKO9yC,EAAGqrD,OAAO9tB,EAAO4Z,EAAO,KACjC,EAyCA,IAAI4/C,GAA8B,GAAIE,GAA8B,EAAGE,GAAiCvvF,IA2DxG,SAASowF,GAA0BlsD,EAAQmsD,GAIzC,OAHAj4F,EAAGqrD,OAAOvf,EAAQmsD,EAAW,OAAQ,WAAY,SACjDnsD,EAAO+lB,MAAQ/lB,EACfA,EAAOmhD,MAAQiL,GACRpsD,CACT,CACA,SAASqsD,GAA+BzwF,EAAMwf,GAE5C,IADA,IAAI2qC,EAAQ,CAAEnqD,GACiB,OAAvBA,EAAOmqD,EAAM2nB,QAEnB,GADAtyD,EAASxf,IACJ8lF,EAAW9lF,EAAK8lF,YAAc5vF,EAAI4vF,EAASxvF,QAE9C,IADA,IAAIJ,EAAG4vF,IACE5vF,GAAK,GAAGi0D,EAAMhwD,KAAK2rF,EAAS5vF,GAG3C,CACA,SAASw6F,GAA8B1wF,EAAMwf,GAE3C,IADA,IAAI2qC,EAAQ,CAAEnqD,GAAQ2wF,EAAS,GACA,OAAvB3wF,EAAOmqD,EAAM2nB,QAEnB,GADA6e,EAAOx2F,KAAK6F,IACP8lF,EAAW9lF,EAAK8lF,YAAc5vF,EAAI4vF,EAASxvF,QAE9C,IADA,IAAYJ,EAAG4vF,EAAX9rF,GAAK,IACAA,EAAI9D,GAAGi0D,EAAMhwD,KAAK2rF,EAAS9rF,IAGxC,KAAgC,OAAxBgG,EAAO2wF,EAAO7e,QACpBtyD,EAASxf,EAEb,CACA,SAAS4wF,GAA4Bx6F,GACnC,OAAOA,EAAE0vF,QACX,CACA,SAAS+K,GAAyBz6F,GAChC,OAAOA,EAAEzB,KACX,CACA,SAASm8F,GAAwBnnF,EAAGC,GAClC,OAAOA,EAAEjV,MAAQgV,EAAEhV,KACrB,CACA,SAAS67F,GAAyBrmC,GAChC,OAAO7xD,EAAG+4B,MAAM84B,EAAMnuD,KAAI,SAAS0gC,GACjC,OAAQA,EAAOopD,UAAY,IAAI9pF,KAAI,SAAS+0F,GAC1C,MAAO,CACL7lE,OAAQwR,EACR1tC,OAAQ+hG,EAEZ,GACF,IACF,CAzGAz4F,EAAGk7B,OAAO+8D,UAAY,WACpB,IAAI7mF,EAAOonF,GAAyBhL,EAAW8K,GAA6Bj8F,EAAQk8F,GACpF,SAASN,EAAUxI,GACjB,IAAkC/nF,EAA9BgxF,EAAQ,CAAEjJ,GAAQ59B,EAAQ,GAE9B,IADA49B,EAAK1kC,MAAQ,EACkB,OAAvBrjD,EAAOgxF,EAAMlf,QAEnB,GADA3nB,EAAMhwD,KAAK6F,IACNixF,EAASnL,EAAS3wF,KAAKo7F,EAAWvwF,EAAMA,EAAKqjD,UAAYntD,EAAI+6F,EAAO36F,QAAS,CAEhF,IADA,IAAIJ,EAAG+6F,EAAQF,IACN76F,GAAK,GACZ86F,EAAM72F,KAAK42F,EAAQE,EAAO/6F,IAC1B66F,EAAMr0D,OAAS18B,EACf+wF,EAAM1tC,MAAQrjD,EAAKqjD,MAAQ,EAEzB1uD,IAAOqL,EAAKrL,MAAQ,GACxBqL,EAAK8lF,SAAWmL,CAClB,MACMt8F,IAAOqL,EAAKrL,OAASA,EAAMQ,KAAKo7F,EAAWvwF,EAAMA,EAAKqjD,QAAU,UAC7DrjD,EAAK8lF,SAQhB,OALA4K,GAA8B3I,GAAM,SAAS/nF,GAC3C,IAAIixF,EAAQv0D,EACRhzB,IAASunF,EAASjxF,EAAK8lF,WAAWmL,EAAOvnF,KAAKA,GAC9C/U,IAAU+nC,EAAS18B,EAAK08B,UAASA,EAAO/nC,OAASqL,EAAKrL,MAC5D,IACOw1D,CACT,CA6BA,OA5BAomC,EAAU7mF,KAAO,SAAS9R,GACxB,OAAK2H,UAAUjJ,QACfoT,EAAO9R,EACA24F,GAFuB7mF,CAGhC,EACA6mF,EAAUzK,SAAW,SAASluF,GAC5B,OAAK2H,UAAUjJ,QACfwvF,EAAWluF,EACJ24F,GAFuBzK,CAGhC,EACAyK,EAAU57F,MAAQ,SAASiD,GACzB,OAAK2H,UAAUjJ,QACf3B,EAAQiD,EACD24F,GAFuB57F,CAGhC,EACA47F,EAAUW,QAAU,SAASnJ,GAW3B,OAVIpzF,IACF87F,GAA+B1I,GAAM,SAAS/nF,GACxCA,EAAK8lF,WAAU9lF,EAAKrL,MAAQ,EAClC,IACA+7F,GAA8B3I,GAAM,SAAS/nF,GAC3C,IAAI08B,EACC18B,EAAK8lF,WAAU9lF,EAAKrL,OAASA,EAAMQ,KAAKo7F,EAAWvwF,EAAMA,EAAKqjD,QAAU,IACzE3mB,EAAS18B,EAAK08B,UAAQA,EAAO/nC,OAASqL,EAAKrL,MACjD,KAEKozF,CACT,EACOwI,CACT,EAiDAj4F,EAAGk7B,OAAO29D,UAAY,WACpB,IAAIZ,EAAYj4F,EAAGk7B,OAAO+8D,YAAax1F,EAAO,CAAE,EAAG,GACnD,SAASuK,EAAStF,EAAMpI,EAAG0H,EAAIxB,GAC7B,IAAIgoF,EAAW9lF,EAAK8lF,SAKpB,GAJA9lF,EAAKpI,EAAIA,EACToI,EAAKnI,EAAImI,EAAKqjD,MAAQvlD,EACtBkC,EAAKV,GAAKA,EACVU,EAAKlC,GAAKA,EACNgoF,IAAa5vF,EAAI4vF,EAASxvF,QAAS,CACrC,IAAYJ,EAAGi7B,EAAG/6B,EAAd4D,GAAK,EAET,IADAsF,EAAKU,EAAKrL,MAAQ2K,EAAKU,EAAKrL,MAAQ,IAC3BqF,EAAI9D,GACXoP,EAAS6rB,EAAI20D,EAAS9rF,GAAIpC,EAAGxB,EAAI+6B,EAAEx8B,MAAQ2K,EAAIxB,GAC/ClG,GAAKxB,CAET,CACF,CACA,SAASitD,EAAMrjD,GACb,IAAI8lF,EAAW9lF,EAAK8lF,SAAU1vF,EAAI,EAClC,GAAI0vF,IAAa5vF,EAAI4vF,EAASxvF,QAE5B,IADA,IAAYJ,EAAR8D,GAAK,IACAA,EAAI9D,GAAGE,EAAIL,KAAK+G,IAAI1G,EAAGitD,EAAMyiC,EAAS9rF,KAEjD,OAAO,EAAI5D,CACb,CACA,SAAS+6F,EAAU/6F,EAAG4D,GACpB,IAAImwD,EAAQomC,EAAUp7F,KAAKkD,KAAMjC,EAAG4D,GAEpC,OADAsL,EAAS6kD,EAAM,GAAI,EAAGpvD,EAAK,GAAIA,EAAK,GAAKsoD,EAAM8G,EAAM,KAC9CA,CACT,CAMA,OALAgnC,EAAUp2F,KAAO,SAASnD,GACxB,OAAK2H,UAAUjJ,QACfyE,EAAOnD,EACAu5F,GAFuBp2F,CAGhC,EACOu1F,GAA0Ba,EAAWZ,EAC9C,EACAj4F,EAAGk7B,OAAOD,IAAM,WACd,IAAI5+B,EAAQwN,OAAQuH,EAAO0nF,GAA0Bv8D,EAAa,EAAGC,EAAW,GAAGu8D,EAAW,EAC9F,SAAS99D,EAAIh1B,GACX,IAE2ZjJ,EAFvZY,EAAIqI,EAAKjI,OAAQ4S,EAAS3K,EAAKvC,KAAI,SAAS5F,EAAG4D,GACjD,OAAQrF,EAAMQ,KAAKo+B,EAAKn9B,EAAG4D,EAC7B,IAAI2P,IAA4B,mBAAfkrB,EAA4BA,EAAW36B,MAAM7B,KAAMkH,WAAas1B,GAAay8D,GAA0B,mBAAbx8D,EAA0BA,EAAS56B,MAAM7B,KAAMkH,WAAau1B,GAAYnrB,EAAGb,EAAI/S,KAAK+B,IAAI/B,KAAKwgC,IAAI+6D,GAAMp7F,IAAyB,mBAAbm7F,EAA0BA,EAASn3F,MAAM7B,KAAMkH,WAAa8xF,IAAYE,EAAKzoF,GAAKwoF,EAAK,GAAK,EAAI,GAAI1xC,EAAMtnD,EAAGsnD,IAAI12C,GAASo7B,EAAIsb,GAAO0xC,EAAKp7F,EAAIq7F,GAAM3xC,EAAM,EAAG1jD,EAAQ5D,EAAGG,MAAMvC,GAAIzE,EAAO,GAevZ,OAdY,MAARiY,GAAcxN,EAAMwN,KAAKA,IAAS0nF,GAA2B,SAASp3F,EAAGyzB,GAC3E,OAAOvkB,EAAOukB,GAAKvkB,EAAOlP,EAC5B,EAAI,SAASA,EAAGyzB,GACd,OAAO/jB,EAAKnL,EAAKvE,GAAIuE,EAAKkvB,GAC5B,GACAvxB,EAAMjF,SAAQ,SAAS+C,GACrBvI,EAAKuI,GAAK,CACRuE,KAAMA,EAAKvE,GACXrF,MAAOW,EAAI4T,EAAOlP,GAClB66B,WAAYlrB,EACZmrB,SAAUnrB,GAAKrU,EAAIgvC,EAAIitD,EACvBF,SAAUvoF,EAEd,IACOrX,CACT,CA0BA,OAzBA8hC,EAAI5+B,MAAQ,SAASotD,GACnB,OAAKxiD,UAAUjJ,QACf3B,EAAQotD,EACDxuB,GAFuB5+B,CAGhC,EACA4+B,EAAI7pB,KAAO,SAASq4C,GAClB,OAAKxiD,UAAUjJ,QACfoT,EAAOq4C,EACAxuB,GAFuB7pB,CAGhC,EACA6pB,EAAIsB,WAAa,SAASktB,GACxB,OAAKxiD,UAAUjJ,QACfu+B,EAAaktB,EACNxuB,GAFuBsB,CAGhC,EACAtB,EAAIuB,SAAW,SAASitB,GACtB,OAAKxiD,UAAUjJ,QACfw+B,EAAWitB,EACJxuB,GAFuBuB,CAGhC,EACAvB,EAAI89D,SAAW,SAAStvC,GACtB,OAAKxiD,UAAUjJ,QACf+6F,EAAWtvC,EACJxuB,GAFuB89D,CAGhC,EACO99D,CACT,EACA,IAAI69D,GAA2B,CAAC,EA0DhC,SAASI,GAAiBp7F,GACxB,OAAOA,EAAEwB,CACX,CACA,SAAS65F,GAAiBr7F,GACxB,OAAOA,EAAEyB,CACX,CACA,SAAS65F,GAAmBt7F,EAAGs/C,EAAI79C,GACjCzB,EAAEs/C,GAAKA,EACPt/C,EAAEyB,EAAIA,CACR,CAlEAS,EAAGk7B,OAAOw9D,MAAQ,WAChB,IAAI9nF,EAASu5C,EAAanb,EAAQqqD,GAA6Bz+C,EAAS0+C,GAA2B/H,EAAM6H,GAAoB95F,EAAI45F,GAAkB35F,EAAI45F,GACvJ,SAAST,EAAMzyF,EAAMrC,GACnB,KAAMhG,EAAIqI,EAAKjI,QAAS,OAAOiI,EAC/B,IAAIszF,EAAStzF,EAAKvC,KAAI,SAAS5F,EAAG4D,GAChC,OAAOkP,EAAO/T,KAAK67F,EAAO56F,EAAG4D,EAC/B,IACI6wB,EAASgnE,EAAO71F,KAAI,SAAS5F,GAC/B,OAAOA,EAAE4F,KAAI,SAAS1G,EAAG0E,GACvB,MAAO,CAAEpC,EAAEzC,KAAK67F,EAAO17F,EAAG0E,GAAInC,EAAE1C,KAAK67F,EAAO17F,EAAG0E,GACjD,GACF,IACI83F,EAASxqD,EAAMnyC,KAAK67F,EAAOnmE,EAAQ3uB,GACvC21F,EAASv5F,EAAGyoD,QAAQ8wC,EAAQC,GAC5BjnE,EAASvyB,EAAGyoD,QAAQl2B,EAAQinE,GAC5B,IAC0B57F,EAAG8D,EAAGyzB,EAAGj4B,EAD/Bg8C,EAAU0B,EAAO/9C,KAAK67F,EAAOnmE,EAAQ3uB,GACrCkkD,EAAIyxC,EAAO,GAAGv7F,OAClB,IAAKm3B,EAAI,EAAGA,EAAI2yB,IAAK3yB,EAEnB,IADAo8D,EAAI10F,KAAK67F,EAAOa,EAAO,GAAGpkE,GAAIj4B,EAAIg8C,EAAQ/jB,GAAI5C,EAAO,GAAG4C,GAAG,IACtDzzB,EAAI,EAAGA,EAAI9D,IAAK8D,EACnB6vF,EAAI10F,KAAK67F,EAAOa,EAAO73F,GAAGyzB,GAAIj4B,GAAKq1B,EAAO7wB,EAAI,GAAGyzB,GAAG,GAAI5C,EAAO7wB,GAAGyzB,GAAG,IAGzE,OAAOlvB,CACT,CA+BA,OA9BAyyF,EAAM9nF,OAAS,SAAStR,GACtB,OAAK2H,UAAUjJ,QACf4S,EAAStR,EACFo5F,GAFuB9nF,CAGhC,EACA8nF,EAAM1pD,MAAQ,SAAS1vC,GACrB,OAAK2H,UAAUjJ,QACfgxC,EAAqB,mBAAN1vC,EAAmBA,EAAIm6F,GAAsBlvE,IAAIjrB,IAAM+5F,GAC/DX,GAFuB1pD,CAGhC,EACA0pD,EAAM99C,OAAS,SAASt7C,GACtB,OAAK2H,UAAUjJ,QACf48C,EAAsB,mBAANt7C,EAAmBA,EAAIo6F,GAAuBnvE,IAAIjrB,IAAMg6F,GACjEZ,GAFuB99C,CAGhC,EACA89C,EAAMp5F,EAAI,SAAS2lD,GACjB,OAAKh+C,UAAUjJ,QACfsB,EAAI2lD,EACGyzC,GAFuBp5F,CAGhC,EACAo5F,EAAMn5F,EAAI,SAAS0lD,GACjB,OAAKh+C,UAAUjJ,QACfuB,EAAI0lD,EACGyzC,GAFuBn5F,CAGhC,EACAm5F,EAAMnH,IAAM,SAAStsC,GACnB,OAAKh+C,UAAUjJ,QACfuzF,EAAMtsC,EACCyzC,GAFuBnH,CAGhC,EACOmH,CACT,EAWA,IAAIe,GAAwBz5F,EAAG0D,IAAI,CACjC,aAAc,SAASuC,GACrB,IAAqBvE,EAAGyzB,EAApBv3B,EAAIqI,EAAKjI,OAAcwG,EAAMyB,EAAKvC,IAAIi2F,IAA0BC,EAAO3zF,EAAKvC,IAAIm2F,IAA2Bj2F,EAAQ5D,EAAGG,MAAMvC,GAAGwT,MAAK,SAASC,EAAGC,GAClJ,OAAO9M,EAAI6M,GAAK7M,EAAI8M,EACtB,IAAIpK,EAAM,EAAGE,EAAS,EAAG0yF,EAAO,GAAIC,EAAU,GAC9C,IAAKr4F,EAAI,EAAGA,EAAI9D,IAAK8D,EACnByzB,EAAIvxB,EAAMlC,GACNwF,EAAME,GACRF,GAAO0yF,EAAKzkE,GACZ2kE,EAAKj4F,KAAKszB,KAEV/tB,GAAUwyF,EAAKzkE,GACf4kE,EAAQl4F,KAAKszB,IAGjB,OAAO4kE,EAAQ5qD,UAAU5rC,OAAOu2F,EAClC,EACA3qD,QAAS,SAASlpC,GAChB,OAAOjG,EAAGG,MAAM8F,EAAKjI,QAAQmxC,SAC/B,EACA,QAAWkqD,KAETK,GAAyB15F,EAAG0D,IAAI,CAClCs2F,WAAY,SAAS/zF,GACnB,IAA6DvE,EAAGyzB,EAAGj4B,EAA/DU,EAAIqI,EAAKjI,OAAQ8pD,EAAI7hD,EAAK,GAAGjI,OAAQ47F,EAAO,GAAIp1F,EAAM,EAAY44C,EAAK,GAC3E,IAAKjoB,EAAI,EAAGA,EAAI2yB,IAAK3yB,EAAG,CACtB,IAAKzzB,EAAI,EAAGxE,EAAI,EAAGwE,EAAI9D,EAAG8D,IAAKxE,GAAK+I,EAAKvE,GAAGyzB,GAAG,GAC3Cj4B,EAAIsH,IAAKA,EAAMtH,GACnB08F,EAAK/3F,KAAK3E,EACZ,CACA,IAAKi4B,EAAI,EAAGA,EAAI2yB,IAAK3yB,EACnBioB,EAAGjoB,IAAM3wB,EAAMo1F,EAAKzkE,IAAM,EAE5B,OAAOioB,CACT,EACA68C,OAAQ,SAASh0F,GACf,IAAgDvE,EAAGyzB,EAAG6W,EAAGohD,EAAI8M,EAAIC,EAAInzF,EAAI9J,EAAGk9F,EAAxEx8F,EAAIqI,EAAKjI,OAAQsB,EAAI2G,EAAK,GAAI6hD,EAAIxoD,EAAEtB,OAAwCo/C,EAAK,GAErF,IADAA,EAAG,GAAKlgD,EAAIk9F,EAAK,EACZjlE,EAAI,EAAGA,EAAI2yB,IAAK3yB,EAAG,CACtB,IAAKzzB,EAAI,EAAG0rF,EAAK,EAAG1rF,EAAI9D,IAAK8D,EAAG0rF,GAAMnnF,EAAKvE,GAAGyzB,GAAG,GACjD,IAAKzzB,EAAI,EAAGw4F,EAAK,EAAGlzF,EAAK1H,EAAE61B,GAAG,GAAK71B,EAAE61B,EAAI,GAAG,GAAIzzB,EAAI9D,IAAK8D,EAAG,CAC1D,IAAKsqC,EAAI,EAAGmuD,GAAMl0F,EAAKvE,GAAGyzB,GAAG,GAAKlvB,EAAKvE,GAAGyzB,EAAI,GAAG,KAAO,EAAInuB,GAAKglC,EAAItqC,IAAKsqC,EACxEmuD,IAAOl0F,EAAK+lC,GAAG7W,GAAG,GAAKlvB,EAAK+lC,GAAG7W,EAAI,GAAG,IAAMnuB,EAE9CkzF,GAAMC,EAAKl0F,EAAKvE,GAAGyzB,GAAG,EACxB,CACAioB,EAAGjoB,GAAKj4B,GAAKkwF,EAAK8M,EAAK9M,EAAKpmF,EAAK,EAC7B9J,EAAIk9F,IAAIA,EAAKl9F,EACnB,CACA,IAAKi4B,EAAI,EAAGA,EAAI2yB,IAAK3yB,EAAGioB,EAAGjoB,IAAMilE,EACjC,OAAOh9C,CACT,EACAi9C,OAAQ,SAASp0F,GACf,IAAoDvE,EAAGyzB,EAAGj4B,EAAtDU,EAAIqI,EAAKjI,OAAQ8pD,EAAI7hD,EAAK,GAAGjI,OAAQguC,EAAI,EAAIpuC,EAAYw/C,EAAK,GAClE,IAAKjoB,EAAI,EAAGA,EAAI2yB,IAAK3yB,EAAG,CACtB,IAAKzzB,EAAI,EAAGxE,EAAI,EAAGwE,EAAI9D,EAAG8D,IAAKxE,GAAK+I,EAAKvE,GAAGyzB,GAAG,GAC/C,GAAIj4B,EAAG,IAAKwE,EAAI,EAAGA,EAAI9D,EAAG8D,IAAKuE,EAAKvE,GAAGyzB,GAAG,IAAMj4B,OAAQ,IAAKwE,EAAI,EAAGA,EAAI9D,EAAG8D,IAAKuE,EAAKvE,GAAGyzB,GAAG,GAAK6W,CAClG,CACA,IAAK7W,EAAI,EAAGA,EAAI2yB,IAAK3yB,EAAGioB,EAAGjoB,GAAK,EAChC,OAAOioB,CACT,EACAk9C,KAAMhB,KAER,SAASD,GAA4BpzF,GACnC,OAAOjG,EAAGG,MAAM8F,EAAKjI,OACvB,CACA,SAASs7F,GAA0BrzF,GAEjC,IADA,IAAIkvB,GAAK,EAAG2yB,EAAI7hD,EAAK,GAAGjI,OAAQo/C,EAAK,KAC5BjoB,EAAI2yB,GAAG1K,EAAGjoB,GAAK,EACxB,OAAOioB,CACT,CACA,SAASu8C,GAAwB7zC,GAE/B,IADA,IAAmC9Z,EAA/BtqC,EAAI,EAAGyzB,EAAI,EAAGn4B,EAAI8oD,EAAM,GAAG,GAAOloD,EAAIkoD,EAAM9nD,OAC1C0D,EAAI9D,IAAK8D,GACRsqC,EAAI8Z,EAAMpkD,GAAG,IAAM1E,IACtBm4B,EAAIzzB,EACJ1E,EAAIgvC,GAGR,OAAO7W,CACT,CACA,SAAS0kE,GAAyB/7F,GAChC,OAAOA,EAAEq9B,OAAOo/D,GAAoB,EACtC,CACA,SAASA,GAAmB/pF,EAAG1S,GAC7B,OAAO0S,EAAI1S,EAAE,EACf,CA+CA,SAAS08F,GAA8Br6F,EAAOyQ,GAC5C,OAAO6pF,GAA4Bt6F,EAAO1C,KAAKC,KAAKD,KAAKy4D,IAAItlD,EAAO5S,QAAUP,KAAKm7D,IAAM,GAC3F,CACA,SAAS6hC,GAA4Bt6F,EAAOvC,GAE1C,IADA,IAAI0B,GAAK,EAAGgS,GAAKnR,EAAM,GAAI2nD,GAAK3nD,EAAM,GAAKmR,GAAK1T,EAAGmpB,EAAI,KAC9CznB,GAAK1B,GAAGmpB,EAAEznB,GAAKwoD,EAAIxoD,EAAIgS,EAChC,OAAOyV,CACT,CACA,SAAS2zE,GAAyB9pF,GAChC,MAAO,CAAE5Q,EAAGR,IAAIoR,GAAS5Q,EAAGwE,IAAIoM,GAClC,CA0CA,SAAS+pF,GAAmBtpF,EAAGC,GAC7B,OAAOD,EAAEhV,MAAQiV,EAAEjV,KACrB,CACA,SAASu+F,GAAqBvpF,EAAGC,GAC/B,IAAIunB,EAAIxnB,EAAEwpF,WACVxpF,EAAEwpF,WAAavpF,EACfA,EAAEwpF,WAAazpF,EACfC,EAAEupF,WAAahiE,EACfA,EAAEiiE,WAAaxpF,CACjB,CACA,SAASypF,GAAqB1pF,EAAGC,GAC/BD,EAAEwpF,WAAavpF,EACfA,EAAEwpF,WAAazpF,CACjB,CACA,SAAS2pF,GAAyB3pF,EAAGC,GACnC,IAAItK,EAAKsK,EAAEhS,EAAI+R,EAAE/R,EAAGkG,EAAK8L,EAAE/R,EAAI8R,EAAE9R,EAAG07F,EAAK5pF,EAAEoqC,EAAInqC,EAAEmqC,EACjD,MAAO,KAAOw/C,EAAKA,EAAKj0F,EAAKA,EAAKxB,EAAKA,CACzC,CACA,SAAS01F,GAAuBxzF,GAC9B,IAAMmqD,EAAQnqD,EAAK8lF,YAAe5vF,EAAIi0D,EAAM7zD,QAA5C,CACA,IAAI6zD,EAA6ExgD,EAAGC,EAAGunB,EAAGn3B,EAAGyzB,EAAG6W,EAAGpuC,EAAxFs9C,EAAOtzC,IAAUuzC,GAAQvzC,IAAU2pC,EAAO3pC,IAAU4pC,GAAQ5pC,IAYvE,GALAiqD,EAAMlzD,QAAQw8F,KACd9pF,EAAIwgD,EAAM,IACRvyD,GAAK+R,EAAEoqC,EACTpqC,EAAE9R,EAAI,EACNy2E,EAAM3kE,GACFzT,EAAI,KACN0T,EAAIugD,EAAM,IACRvyD,EAAIgS,EAAEmqC,EACRnqC,EAAE/R,EAAI,EACNy2E,EAAM1kE,GACF1T,EAAI,GAQN,IANAw9F,GAAoB/pF,EAAGC,EADvBunB,EAAIg5B,EAAM,IAEVmkB,EAAMn9C,GACN+hE,GAAqBvpF,EAAGwnB,GACxBxnB,EAAEypF,WAAajiE,EACf+hE,GAAqB/hE,EAAGvnB,GACxBA,EAAID,EAAEwpF,WACDn5F,EAAI,EAAGA,EAAI9D,EAAG8D,IAAK,CACtB05F,GAAoB/pF,EAAGC,EAAGunB,EAAIg5B,EAAMnwD,IACpC,IAAI25F,EAAQ,EAAGjO,EAAK,EAAG8M,EAAK,EAC5B,IAAK/kE,EAAI7jB,EAAEupF,WAAY1lE,IAAM7jB,EAAG6jB,EAAIA,EAAE0lE,WAAYzN,IAChD,GAAI4N,GAAyB7lE,EAAG0D,GAAI,CAClCwiE,EAAQ,EACR,KACF,CAEF,GAAa,GAATA,EACF,IAAKrvD,EAAI36B,EAAEypF,WAAY9uD,IAAM7W,EAAE2lE,aACzBE,GAAyBhvD,EAAGnT,GADSmT,EAAIA,EAAE8uD,WAAYZ,KAM3DmB,GACEjO,EAAK8M,GAAM9M,GAAM8M,GAAM5oF,EAAEmqC,EAAIpqC,EAAEoqC,EAAGs/C,GAAqB1pF,EAAGC,EAAI6jB,GAAS4lE,GAAqB1pF,EAAI26B,EAAG16B,GACvG5P,MAEAk5F,GAAqBvpF,EAAGwnB,GACxBvnB,EAAIunB,EACJm9C,EAAMn9C,GAEV,CAGJ,IAAIxZ,GAAM67B,EAAOC,GAAQ,EAAG77B,GAAMiyB,EAAOC,GAAQ,EAAG6uC,EAAK,EACzD,IAAK3+E,EAAI,EAAGA,EAAI9D,EAAG8D,KACjBm3B,EAAIg5B,EAAMnwD,IACRpC,GAAK+f,EACPwZ,EAAEt5B,GAAK+f,EACP+gE,EAAK5iF,KAAK+G,IAAI67E,EAAIxnD,EAAE4iB,EAAIh+C,KAAKogC,KAAKhF,EAAEv5B,EAAIu5B,EAAEv5B,EAAIu5B,EAAEt5B,EAAIs5B,EAAEt5B,IAExDmI,EAAK+zC,EAAI4kC,EACTxuB,EAAMlzD,QAAQ28F,GA7D6C,CAE3D,SAAStlB,EAAMtuE,GACbwzC,EAAOz9C,KAAK+B,IAAIkI,EAAKpI,EAAIoI,EAAK+zC,EAAGP,GACjCC,EAAO19C,KAAK+G,IAAIkD,EAAKpI,EAAIoI,EAAK+zC,EAAGN,GACjC5J,EAAO9zC,KAAK+B,IAAIkI,EAAKnI,EAAImI,EAAK+zC,EAAGlK,GACjCC,EAAO/zC,KAAK+G,IAAIkD,EAAKnI,EAAImI,EAAK+zC,EAAGjK,EACnC,CAuDF,CACA,SAAS2pD,GAAmBzzF,GAC1BA,EAAKmzF,WAAanzF,EAAKozF,WAAapzF,CACtC,CACA,SAAS4zF,GAAqB5zF,UACrBA,EAAKmzF,kBACLnzF,EAAKozF,UACd,CACA,SAASS,GAAwB7zF,EAAMpI,EAAGC,EAAGysC,GAC3C,IAAIwhD,EAAW9lF,EAAK8lF,SAIpB,GAHA9lF,EAAKpI,EAAIA,GAAK0sC,EAAItkC,EAAKpI,EACvBoI,EAAKnI,EAAIA,GAAKysC,EAAItkC,EAAKnI,EACvBmI,EAAK+zC,GAAKzP,EACNwhD,EAEF,IADA,IAAI9rF,GAAK,EAAG9D,EAAI4vF,EAASxvF,SAChB0D,EAAI9D,GAAG29F,GAAwB/N,EAAS9rF,GAAIpC,EAAGC,EAAGysC,EAE/D,CACA,SAASovD,GAAoB/pF,EAAGC,EAAGunB,GACjC,IAAI2iE,EAAKnqF,EAAEoqC,EAAI5iB,EAAE4iB,EAAGz0C,EAAKsK,EAAEhS,EAAI+R,EAAE/R,EAAGkG,EAAK8L,EAAE/R,EAAI8R,EAAE9R,EACjD,GAAIi8F,IAAOx0F,GAAMxB,GAAK,CACpB,IAAIwzF,EAAK1nF,EAAEmqC,EAAI5iB,EAAE4iB,EAAGggD,EAAKz0F,EAAKA,EAAKxB,EAAKA,EAGpClG,EAAI,KADRk8F,GAAMA,IADNxC,GAAMA,KAEoB,EAAIyC,GAAKl8F,EAAI9B,KAAKogC,KAAKpgC,KAAK+G,IAAI,EAAG,EAAIw0F,GAAMwC,EAAKC,IAAOD,GAAMC,GAAMD,EAAKxC,EAAKA,KAAQ,EAAIyC,GACrH5iE,EAAEv5B,EAAI+R,EAAE/R,EAAIA,EAAI0H,EAAKzH,EAAIiG,EACzBqzB,EAAEt5B,EAAI8R,EAAE9R,EAAID,EAAIkG,EAAKjG,EAAIyH,CAC3B,MACE6xB,EAAEv5B,EAAI+R,EAAE/R,EAAIk8F,EACZ3iE,EAAEt5B,EAAI8R,EAAE9R,CAEZ,CAqHA,SAASm8F,GAAyBrqF,EAAGC,GACnC,OAAOD,EAAE+yB,QAAU9yB,EAAE8yB,OAAS,EAAI,CACpC,CACA,SAASu3D,GAAmB3+F,GAC1B,IAAIwwF,EAAWxwF,EAAEwwF,SACjB,OAAOA,EAASxvF,OAASwvF,EAAS,GAAKxwF,EAAE2lB,CAC3C,CACA,SAASi5E,GAAoB5+F,GAC3B,IAA2BY,EAAvB4vF,EAAWxwF,EAAEwwF,SACjB,OAAQ5vF,EAAI4vF,EAASxvF,QAAUwvF,EAAS5vF,EAAI,GAAKZ,EAAE2lB,CACrD,CACA,SAASk5E,GAAmBC,EAAIC,EAAI3xD,GAClC,IAAI4xD,EAAS5xD,GAAS2xD,EAAGr6F,EAAIo6F,EAAGp6F,GAChCq6F,EAAGljE,GAAKmjE,EACRD,EAAGp4F,GAAKymC,EACR0xD,EAAGjjE,GAAKmjE,EACRD,EAAG92C,GAAK7a,EACR2xD,EAAGj0C,GAAK1d,CACV,CAUA,SAAS6xD,GAAuBC,EAAKl/F,EAAGm/F,GACtC,OAAOD,EAAI7qF,EAAE+yB,SAAWpnC,EAAEonC,OAAS83D,EAAI7qF,EAAI8qF,CAC7C,CAqDA,SAASC,GAAsB10F,GAC7B,IAAI8lF,EAAW9lF,EAAK8lF,SACpB,OAAOA,GAAYA,EAASxvF,OAASo+F,GAAsB5O,EAAS,IAAM9lF,CAC5E,CACA,SAAS20F,GAAuB30F,GAC9B,IAA8B9J,EAA1B4vF,EAAW9lF,EAAK8lF,SACpB,OAAOA,IAAa5vF,EAAI4vF,EAASxvF,QAAUq+F,GAAuB7O,EAAS5vF,EAAI,IAAM8J,CACvF,CAmJA,SAAS40F,GAAyB50F,GAChC,MAAO,CACLpI,EAAGoI,EAAKpI,EACRC,EAAGmI,EAAKnI,EACRyH,GAAIU,EAAKV,GACTxB,GAAIkC,EAAKlC,GAEb,CACA,SAAS+2F,GAAqB70F,EAAM4I,GAClC,IAAIhR,EAAIoI,EAAKpI,EAAIgR,EAAQ,GAAI/Q,EAAImI,EAAKnI,EAAI+Q,EAAQ,GAAItJ,EAAKU,EAAKV,GAAKsJ,EAAQ,GAAKA,EAAQ,GAAI9K,EAAKkC,EAAKlC,GAAK8K,EAAQ,GAAKA,EAAQ,GASlI,OARItJ,EAAK,IACP1H,GAAK0H,EAAK,EACVA,EAAK,GAEHxB,EAAK,IACPjG,GAAKiG,EAAK,EACVA,EAAK,GAEA,CACLlG,EAAGA,EACHC,EAAGA,EACHyH,GAAIA,EACJxB,GAAIA,EAER,CAoCA,SAASg3F,GAAel7F,GACtB,IAAIC,EAAQD,EAAO,GAAIE,EAAOF,EAAOA,EAAOtD,OAAS,GACrD,OAAOuD,EAAQC,EAAO,CAAED,EAAOC,GAAS,CAAEA,EAAMD,EAClD,CACA,SAASk7F,GAAcx8F,GACrB,OAAOA,EAAMqC,YAAcrC,EAAMqC,cAAgBk6F,GAAev8F,EAAME,QACxE,CACA,SAASu8F,GAAkBp7F,EAAQnB,EAAOw8F,EAAe76D,GACvD,IAAIy0B,EAAIomC,EAAcr7F,EAAO,GAAIA,EAAO,IAAKI,EAAIogC,EAAY3hC,EAAM,GAAIA,EAAM,IAC7E,OAAO,SAASb,GACd,OAAOoC,EAAE60D,EAAEj3D,GACb,CACF,CACA,SAASs9F,GAAct7F,EAAQu7F,GAC7B,IAAsE71F,EAAlEuhD,EAAK,EAAGC,EAAKlnD,EAAOtD,OAAS,EAAG0gD,EAAKp9C,EAAOinD,GAAKntC,EAAK9Z,EAAOknD,GAOjE,OANIptC,EAAKsjC,IACP13C,EAAKuhD,EAAIA,EAAKC,EAAIA,EAAKxhD,EACvBA,EAAK03C,EAAIA,EAAKtjC,EAAIA,EAAKpU,GAEzB1F,EAAOinD,GAAMs0C,EAAKn1C,MAAMhJ,GACxBp9C,EAAOknD,GAAMq0C,EAAKn/F,KAAK0d,GAChB9Z,CACT,CACA,SAASw7F,GAAkBnlD,GACzB,OAAOA,EAAO,CACZ+P,MAAO,SAASpoD,GACd,OAAO7B,KAAKiqD,MAAMpoD,EAAIq4C,GAAQA,CAChC,EACAj6C,KAAM,SAAS4B,GACb,OAAO7B,KAAKC,KAAK4B,EAAIq4C,GAAQA,CAC/B,GACEolD,EACN,CAhpBA/8F,EAAGk7B,OAAO8hE,UAAY,WACpB,IAAIC,GAAY,EAAMC,EAASrzF,OAAQszF,EAASzC,GAA0B0C,EAAS5C,GACnF,SAASwC,EAAU/2F,EAAMvE,GAEvB,IADA,IAAwI27F,EAAsF/9F,EAA1Ng+F,EAAO,GAAI1sF,EAAS3K,EAAKvC,IAAIw5F,EAAQn9F,MAAOI,EAAQg9F,EAAOtgG,KAAKkD,KAAM6Q,EAAQlP,GAAI67F,EAAaH,EAAOvgG,KAAKkD,KAAMI,EAAOyQ,EAAQlP,GAAiB9D,GAAR8D,GAAK,EAAOkP,EAAO5S,QAAQ8pD,EAAIy1C,EAAWv/F,OAAS,EAAGguC,EAAIixD,EAAY,EAAI,EAAIr/F,IAClN8D,EAAIomD,IACXu1C,EAAMC,EAAK57F,GAAK,IACZsF,GAAKu2F,EAAW77F,EAAI,IAAM27F,EAAI/9F,EAAIi+F,EAAW77F,IACjD27F,EAAI99F,EAAI,EAEV,GAAIuoD,EAAI,EAEN,IADApmD,GAAK,IACIA,EAAI9D,IACX0B,EAAIsR,EAAOlP,KACFvB,EAAM,IAAMb,GAAKa,EAAM,MAC9Bk9F,EAAMC,EAAKt9F,EAAGmoD,OAAOo1C,EAAYj+F,EAAG,EAAGwoD,GAAK,IACxCvoD,GAAKysC,EACTqxD,EAAIx7F,KAAKoE,EAAKvE,KAIpB,OAAO47F,CACT,CAuBA,OAtBAN,EAAU3gG,MAAQ,SAASiD,GACzB,OAAK2H,UAAUjJ,QACfk/F,EAAS59F,EACF09F,GAFuBE,CAGhC,EACAF,EAAU78F,MAAQ,SAASb,GACzB,OAAK2H,UAAUjJ,QACfm/F,EAAS73B,GAAWhmE,GACb09F,GAFuBG,CAGhC,EACAH,EAAUM,KAAO,SAASh+F,GACxB,OAAK2H,UAAUjJ,QACfo/F,EAAsB,iBAAN99F,EAAiB,SAASa,GACxC,OAAOs6F,GAA4Bt6F,EAAOb,EAC5C,EAAIgmE,GAAWhmE,GACR09F,GAJuBI,CAKhC,EACAJ,EAAUC,UAAY,SAAS39F,GAC7B,OAAK2H,UAAUjJ,QACfi/F,IAAc39F,EACP09F,GAFuBC,CAGhC,EACOD,CACT,EAYAh9F,EAAGk7B,OAAOsiE,KAAO,WACf,IAA8F/hE,EAA1Fw8D,EAAYj4F,EAAGk7B,OAAO+8D,YAAY7mF,KAAKupF,IAAqBrqF,EAAU,EAAG7N,EAAO,CAAE,EAAG,GACzF,SAAS+6F,EAAK1/F,EAAG4D,GACf,IAAImwD,EAAQomC,EAAUp7F,KAAKkD,KAAMjC,EAAG4D,GAAI+tF,EAAO59B,EAAM,GAAIlvD,EAAIF,EAAK,GAAIC,EAAID,EAAK,GAAIg5C,EAAc,MAAVhgB,EAAiBh+B,KAAKogC,KAAyB,mBAAXpC,EAAwBA,EAAS,WAC1J,OAAOA,CACT,EAMA,GALAg0D,EAAKnwF,EAAImwF,EAAKlwF,EAAI,EAClB64F,GAA8B3I,GAAM,SAAS3xF,GAC3CA,EAAE29C,GAAKA,EAAE39C,EAAEzB,MACb,IACA+7F,GAA8B3I,EAAMyL,IAChC5qF,EAAS,CACX,IAAI2qF,EAAK3qF,GAAWmrB,EAAS,EAAIh+B,KAAK+G,IAAI,EAAIirF,EAAKh0C,EAAI94C,EAAG,EAAI8sF,EAAKh0C,EAAI/4C,IAAM,EAC7E01F,GAA8B3I,GAAM,SAAS3xF,GAC3CA,EAAE29C,GAAKw/C,CACT,IACA7C,GAA8B3I,EAAMyL,IACpC9C,GAA8B3I,GAAM,SAAS3xF,GAC3CA,EAAE29C,GAAKw/C,CACT,GACF,CAEA,OADAM,GAAwB9L,EAAM9sF,EAAI,EAAGD,EAAI,EAAG+4B,EAAS,EAAI,EAAIh+B,KAAK+G,IAAI,EAAIirF,EAAKh0C,EAAI94C,EAAG,EAAI8sF,EAAKh0C,EAAI/4C,IAC5FmvD,CACT,CAgBA,OAfA2rC,EAAK/6F,KAAO,SAASgnD,GACnB,OAAKxiD,UAAUjJ,QACfyE,EAAOgnD,EACA+zC,GAFuB/6F,CAGhC,EACA+6F,EAAK/hE,OAAS,SAASguB,GACrB,OAAKxiD,UAAUjJ,QACfy9B,EAAc,MAALguB,GAA0B,mBAANA,EAAmBA,GAAKA,EAC9C+zC,GAFuB/hE,CAGhC,EACA+hE,EAAKltF,QAAU,SAASm5C,GACtB,OAAKxiD,UAAUjJ,QACfsS,GAAWm5C,EACJ+zC,GAFuBltF,CAGhC,EACO0nF,GAA0BwF,EAAMvF,EACzC,EAkHAj4F,EAAGk7B,OAAOwwD,KAAO,WACf,IAAIuM,EAAYj4F,EAAGk7B,OAAO+8D,YAAY7mF,KAAK,MAAM/U,MAAM,MAAOohG,EAAa/B,GAA0Bj5F,EAAO,CAAE,EAAG,GAAKi7F,EAAW,KACjI,SAAShS,EAAK5tF,EAAG4D,GACf,IAAImwD,EAAQomC,EAAUp7F,KAAKkD,KAAMjC,EAAG4D,GAAIi8F,EAAQ9rC,EAAM,GAAI+rC,EAkB5D,SAAkBD,GAChB,IAGsBE,EAHlBD,EAAQ,CACVjuB,EAAG,KACH6d,SAAU,CAAEmQ,IACXG,EAAQ,CAAEF,GACb,KAAgC,OAAxBC,EAAQC,EAAMtkB,QACpB,IAAK,IAA+Bif,EAA3BjL,EAAWqQ,EAAMrQ,SAAiB9rF,EAAI,EAAG9D,EAAI4vF,EAASxvF,OAAQ0D,EAAI9D,IAAK8D,EAC9Eo8F,EAAMj8F,MAAM2rF,EAAS9rF,GAAK+2F,EAAQ,CAChChvC,EAAG+jC,EAAS9rF,GACZ0iC,OAAQy5D,EACRrQ,UAAWiL,EAAQjL,EAAS9rF,GAAG8rF,WAAaiL,EAAMl0F,SAAW,GAC7DorE,EAAG,KACHt+D,EAAG,KACH4zC,EAAG,EACH6C,EAAG,EACHjvB,EAAG,EACHl1B,EAAG,EACHgf,EAAG,KACHjhB,EAAGA,IACF2P,EAAIonF,GAGX,OAAOmF,EAAMpQ,SAAS,EACxB,CAzCoEuQ,CAASJ,GAG3E,GAFAvF,GAA8BwF,EAAOI,GAAYJ,EAAMx5D,OAAO0jB,GAAK81C,EAAM34C,EACzEkzC,GAA+ByF,EAAOK,GAClCP,EAAUvF,GAA+BwF,EAAOO,OAAgB,CAClE,IAAI72F,EAAOs2F,EAAOx2F,EAAQw2F,EAAOv2F,EAASu2F,EAC1CxF,GAA+BwF,GAAO,SAASj2F,GACzCA,EAAKpI,EAAI+H,EAAK/H,IAAG+H,EAAOK,GACxBA,EAAKpI,EAAI6H,EAAM7H,IAAG6H,EAAQO,GAC1BA,EAAKqjD,MAAQ3jD,EAAO2jD,QAAO3jD,EAASM,EAC1C,IACA,IAAIy2F,EAAKV,EAAWp2F,EAAMF,GAAS,EAAIE,EAAK/H,EAAGwyF,EAAKrvF,EAAK,IAAM0E,EAAM7H,EAAIm+F,EAAWt2F,EAAOE,GAAQ,EAAI82F,GAAKjM,EAAKzvF,EAAK,IAAM2E,EAAO2jD,OAAS,GAC5IotC,GAA+BwF,GAAO,SAASj2F,GAC7CA,EAAKpI,GAAKoI,EAAKpI,EAAI6+F,GAAMrM,EACzBpqF,EAAKnI,EAAImI,EAAKqjD,MAAQmnC,CACxB,GACF,CACA,OAAOrgC,CACT,CAyBA,SAASmsC,EAAUhhG,GACjB,IAAIwwF,EAAWxwF,EAAEwwF,SAAU4Q,EAAWphG,EAAEonC,OAAOopD,SAAU7qF,EAAI3F,EAAE0E,EAAI08F,EAASphG,EAAE0E,EAAI,GAAK,KACvF,GAAI8rF,EAASxvF,OAAQ,EAwFzB,SAA6BhB,GAC3B,IAAuE2F,EAAnEynC,EAAQ,EAAG4xD,EAAS,EAAGxO,EAAWxwF,EAAEwwF,SAAU9rF,EAAI8rF,EAASxvF,OAC/D,OAAS0D,GAAK,IACZiB,EAAI6qF,EAAS9rF,IACXujD,GAAK7a,EACPznC,EAAEmlD,GAAK1d,EACPA,GAASznC,EAAEgB,GAAKq4F,GAAUr5F,EAAEk2B,EAEhC,CA/FMwlE,CAAoBrhG,GACpB,IAAIshG,GAAY9Q,EAAS,GAAGvoC,EAAIuoC,EAASA,EAASxvF,OAAS,GAAGinD,GAAK,EAC/DtiD,GACF3F,EAAEioD,EAAItiD,EAAEsiD,EAAIw4C,EAAWzgG,EAAEysD,EAAG9mD,EAAE8mD,GAC9BzsD,EAAE8qD,EAAI9qD,EAAEioD,EAAIq5C,GAEZthG,EAAEioD,EAAIq5C,CAEV,MAAW37F,IACT3F,EAAEioD,EAAItiD,EAAEsiD,EAAIw4C,EAAWzgG,EAAEysD,EAAG9mD,EAAE8mD,IAEhCzsD,EAAEonC,OAAOurC,EAMX,SAAmB3yE,EAAG2F,EAAGw5F,GACvB,GAAIx5F,EAAG,CAEL,IADA,IAAiHynC,EAA7Gm0D,EAAMvhG,EAAGwhG,EAAMxhG,EAAGk/F,EAAMv5F,EAAG87F,EAAMF,EAAIn6D,OAAOopD,SAAS,GAAIkR,EAAMH,EAAIz2C,EAAG62C,EAAMH,EAAI12C,EAAG82C,EAAM1C,EAAIp0C,EAAG+2C,EAAMJ,EAAI32C,EACvGo0C,EAAMN,GAAoBM,GAAMqC,EAAM5C,GAAmB4C,GAAMrC,GAAOqC,GAC3EE,EAAM9C,GAAmB8C,IACzBD,EAAM5C,GAAoB4C,IACtBntF,EAAIrU,GACRotC,EAAQ8xD,EAAIj3C,EAAI25C,EAAML,EAAIt5C,EAAIy5C,EAAMjB,EAAWvB,EAAIzyC,EAAG80C,EAAI90C,IAC9C,IACVoyC,GAAmBI,GAAuBC,EAAKl/F,EAAGm/F,GAAWn/F,EAAGotC,GAChEs0D,GAAOt0D,EACPu0D,GAAOv0D,GAETw0D,GAAO1C,EAAIp0C,EACX42C,GAAOH,EAAIz2C,EACX+2C,GAAOJ,EAAI32C,EACX62C,GAAOH,EAAI12C,EAETo0C,IAAQN,GAAoB4C,KAC9BA,EAAI77E,EAAIu5E,EACRsC,EAAI12C,GAAK82C,EAAMD,GAEbJ,IAAQ5C,GAAmB8C,KAC7BA,EAAI97E,EAAI47E,EACRE,EAAI32C,GAAK42C,EAAMG,EACf1C,EAAWn/F,EAEf,CACA,OAAOm/F,CACT,CAnCe2C,CAAU9hG,EAAG2F,EAAG3F,EAAEonC,OAAOurC,GAAKyuB,EAAS,GACtD,CACA,SAASH,EAAWjhG,GAClBA,EAAEysD,EAAEnqD,EAAItC,EAAEioD,EAAIjoD,EAAEonC,OAAO0jB,EACvB9qD,EAAE8qD,GAAK9qD,EAAEonC,OAAO0jB,CAClB,CA+BA,SAASo2C,EAASx2F,GAChBA,EAAKpI,GAAKmD,EAAK,GACfiF,EAAKnI,EAAImI,EAAKqjD,MAAQtoD,EAAK,EAC7B,CAgBA,OAfAipF,EAAK+R,WAAa,SAASn+F,GACzB,OAAK2H,UAAUjJ,QACfy/F,EAAan+F,EACNosF,GAFuB+R,CAGhC,EACA/R,EAAKjpF,KAAO,SAASnD,GACnB,OAAK2H,UAAUjJ,QACf0/F,EAAyB,OAAbj7F,EAAOnD,GAAa4+F,EAAW,KACpCxS,GAFuBgS,EAAW,KAAOj7F,CAGlD,EACAipF,EAAKgS,SAAW,SAASp+F,GACvB,OAAK2H,UAAUjJ,QACf0/F,EAAyB,OAAbj7F,EAAOnD,GAAa,KAAO4+F,EAChCxS,GAFuBgS,EAAWj7F,EAAO,IAGlD,EACOu1F,GAA0BtM,EAAMuM,EACzC,EAgCAj4F,EAAGk7B,OAAO6jE,QAAU,WAClB,IAAI9G,EAAYj4F,EAAGk7B,OAAO+8D,YAAY7mF,KAAK,MAAM/U,MAAM,MAAOohG,EAAa/B,GAA0Bj5F,EAAO,CAAE,EAAG,GAAKi7F,GAAW,EACjI,SAASqB,EAAQjhG,EAAG4D,GAClB,IAAyDs9F,EAArDntC,EAAQomC,EAAUp7F,KAAKkD,KAAMjC,EAAG4D,GAAI+tF,EAAO59B,EAAM,GAAkBvyD,EAAI,EAC3E84F,GAA8B3I,GAAM,SAAS/nF,GAC3C,IAAI8lF,EAAW9lF,EAAK8lF,SAChBA,GAAYA,EAASxvF,QACvB0J,EAAKpI,EAwCb,SAA4BkuF,GAC1B,OAAOA,EAASryD,QAAO,SAAS77B,EAAGm5F,GACjC,OAAOn5F,EAAIm5F,EAAMn5F,CACnB,GAAG,GAAKkuF,EAASxvF,MACnB,CA5CiBihG,CAAmBzR,GAC5B9lF,EAAKnI,EAkCb,SAA4BiuF,GAC1B,OAAO,EAAIxtF,EAAGwE,IAAIgpF,GAAU,SAASiL,GACnC,OAAOA,EAAMl5F,CACf,GACF,CAtCiB2/F,CAAmB1R,KAE5B9lF,EAAKpI,EAAI0/F,EAAe1/F,GAAKm+F,EAAW/1F,EAAMs3F,GAAgB,EAC9Dt3F,EAAKnI,EAAI,EACTy/F,EAAet3F,EAEnB,IACA,IAAIL,EAAO+0F,GAAsB3M,GAAOtoF,EAAQk1F,GAAuB5M,GAAO/wC,EAAKr3C,EAAK/H,EAAIm+F,EAAWp2F,EAAMF,GAAS,EAAGiU,EAAKjU,EAAM7H,EAAIm+F,EAAWt2F,EAAOE,GAAQ,EAQlK,OAPA+wF,GAA8B3I,EAAMiO,EAAW,SAASh2F,GACtDA,EAAKpI,GAAKoI,EAAKpI,EAAImwF,EAAKnwF,GAAKmD,EAAK,GAClCiF,EAAKnI,GAAKkwF,EAAKlwF,EAAImI,EAAKnI,GAAKkD,EAAK,EACpC,EAAI,SAASiF,GACXA,EAAKpI,GAAKoI,EAAKpI,EAAIo/C,IAAOtjC,EAAKsjC,GAAMj8C,EAAK,GAC1CiF,EAAKnI,GAAK,GAAKkwF,EAAKlwF,EAAImI,EAAKnI,EAAIkwF,EAAKlwF,EAAI,IAAMkD,EAAK,EACvD,GACOovD,CACT,CAgBA,OAfAktC,EAAQtB,WAAa,SAASn+F,GAC5B,OAAK2H,UAAUjJ,QACfy/F,EAAan+F,EACNy/F,GAFuBtB,CAGhC,EACAsB,EAAQt8F,KAAO,SAASnD,GACtB,OAAK2H,UAAUjJ,QACf0/F,EAAyB,OAAbj7F,EAAOnD,GACZy/F,GAFuBrB,EAAW,KAAOj7F,CAGlD,EACAs8F,EAAQrB,SAAW,SAASp+F,GAC1B,OAAK2H,UAAUjJ,QACf0/F,EAAyB,OAAbj7F,EAAOnD,GACZy/F,GAFuBrB,EAAWj7F,EAAO,IAGlD,EACOu1F,GAA0B+G,EAAS9G,EAC5C,EAmBAj4F,EAAGk7B,OAAOikE,QAAU,WAClB,IAA4IC,EAAxInH,EAAYj4F,EAAGk7B,OAAO+8D,YAAaj2D,EAAQvkC,KAAKukC,MAAOv/B,EAAO,CAAE,EAAG,GAAK6N,EAAU,KAAM+uF,EAAM/C,GAA0BgD,GAAS,EAAiBC,EAAO,WAAY7hE,EAAQ,IAAM,EAAIjgC,KAAKogC,KAAK,IACrM,SAAS59B,EAAMutF,EAAUxhD,GAEvB,IADA,IAAiCysD,EAAOr/F,EAApCsI,GAAK,EAAG9D,EAAI4vF,EAASxvF,SAChB0D,EAAI9D,GACXxE,GAAQq/F,EAAQjL,EAAS9rF,IAAIrF,OAAS2vC,EAAI,EAAI,EAAIA,GAClDysD,EAAMr/F,KAAOouB,MAAMpuB,IAASA,GAAQ,EAAI,EAAIA,CAEhD,CACA,SAASomG,EAAS93F,GAChB,IAAI8lF,EAAW9lF,EAAK8lF,SACpB,GAAIA,GAAYA,EAASxvF,OAAQ,CAC/B,IAA8Dy6F,EAAwBgH,EAA6J7hG,EAA/O6kD,EAAO48C,EAAI33F,GAAOshD,EAAM,GAAItkD,EAAY8oF,EAASjpF,QAAgBmyE,EAAO9uE,IAAiB2uD,EAAa,UAATgpC,EAAmB98C,EAAKz7C,GAAc,SAATu4F,EAAkB98C,EAAKj9C,GAAc,eAAT+5F,EAAqC,EAAb73F,EAAKqjD,MAAYtI,EAAKj9C,GAAKi9C,EAAKz7C,GAAKvJ,KAAK+B,IAAIijD,EAAKz7C,GAAIy7C,EAAKj9C,IAG9O,IAFAvF,EAAMyE,EAAW+9C,EAAKz7C,GAAKy7C,EAAKj9C,GAAKkC,EAAKrL,OAC1C2sD,EAAI5vD,KAAO,GACHwE,EAAI8G,EAAU1G,QAAU,GAC9BgrD,EAAInnD,KAAK42F,EAAQ/zF,EAAU9G,EAAI,IAC/BorD,EAAI5vD,MAAQq/F,EAAMr/F,KACL,aAATmmG,IAAwBE,EAAQC,EAAM12C,EAAKuN,KAAOmgB,GACpDhyE,EAAU80E,MACV9C,EAAO+oB,IAEPz2C,EAAI5vD,MAAQ4vD,EAAIwwB,MAAMpgF,KACtB4T,EAASg8C,EAAKuN,EAAG9T,GAAM,GACvB8T,EAAI94D,KAAK+B,IAAIijD,EAAKz7C,GAAIy7C,EAAKj9C,IAC3BwjD,EAAIhrD,OAASgrD,EAAI5vD,KAAO,EACxBs9E,EAAO9uE,KAGPohD,EAAIhrD,SACNgP,EAASg8C,EAAKuN,EAAG9T,GAAM,GACvBuG,EAAIhrD,OAASgrD,EAAI5vD,KAAO,GAE1Bo0F,EAAS7uF,QAAQ6gG,EACnB,CACF,CACA,SAASG,EAASj4F,GAChB,IAAI8lF,EAAW9lF,EAAK8lF,SACpB,GAAIA,GAAYA,EAASxvF,OAAQ,CAC/B,IAAoDy6F,EAAhDh2C,EAAO48C,EAAI33F,GAAOhD,EAAY8oF,EAASjpF,QAAgBykD,EAAM,GAGjE,IAFA/oD,EAAMyE,EAAW+9C,EAAKz7C,GAAKy7C,EAAKj9C,GAAKkC,EAAKrL,OAC1C2sD,EAAI5vD,KAAO,EACJq/F,EAAQ/zF,EAAU80E,OACvBxwB,EAAInnD,KAAK42F,GACTzvC,EAAI5vD,MAAQq/F,EAAMr/F,KACH,MAAXq/F,EAAMxzC,IACRj4C,EAASg8C,EAAKyvC,EAAMxzC,EAAIxC,EAAKz7C,GAAKy7C,EAAKj9C,GAAIi9C,GAAO/9C,EAAU1G,QAC5DgrD,EAAIhrD,OAASgrD,EAAI5vD,KAAO,GAG5Bo0F,EAAS7uF,QAAQghG,EACnB,CACF,CACA,SAASD,EAAM12C,EAAKuN,GAElB,IADA,IAAkB9a,EAAd93C,EAAIqlD,EAAI5vD,KAASwmG,EAAO,EAAGC,EAAOj4F,IAAUlG,GAAK,EAAG9D,EAAIorD,EAAIhrD,SACvD0D,EAAI9D,IACL69C,EAAIuN,EAAItnD,GAAGtI,QACbqiD,EAAIokD,IAAMA,EAAOpkD,GACjBA,EAAImkD,IAAMA,EAAOnkD,IAIvB,OADA8a,GAAKA,GADL5yD,GAAKA,GAEMlG,KAAK+G,IAAI+xD,EAAIqpC,EAAOliE,EAAQ/5B,EAAGA,GAAK4yD,EAAIspC,EAAOniE,IAAU91B,GACtE,CACA,SAASoF,EAASg8C,EAAKuN,EAAG9T,EAAMn8B,GAC9B,IAAqFppB,EAAjFwE,GAAK,EAAG9D,EAAIorD,EAAIhrD,OAAQsB,EAAImjD,EAAKnjD,EAAGC,EAAIkjD,EAAKljD,EAAGvC,EAAIu5D,EAAIv0B,EAAMgnB,EAAI5vD,KAAOm9D,GAAK,EAClF,GAAIA,GAAK9T,EAAKz7C,GAAI,CAEhB,KADIsf,GAAStpB,EAAIylD,EAAKj9C,MAAIxI,EAAIylD,EAAKj9C,MAC1B9D,EAAI9D,IACXV,EAAI8rD,EAAItnD,IACNpC,EAAIA,EACNpC,EAAEqC,EAAIA,EACNrC,EAAEsI,GAAKxI,EACPsC,GAAKpC,EAAE8J,GAAKvJ,KAAK+B,IAAIijD,EAAKnjD,EAAImjD,EAAKz7C,GAAK1H,EAAGtC,EAAIglC,EAAM9kC,EAAE9D,KAAO4D,GAAK,GAErEE,EAAE+nD,GAAI,EACN/nD,EAAE8J,IAAMy7C,EAAKnjD,EAAImjD,EAAKz7C,GAAK1H,EAC3BmjD,EAAKljD,GAAKvC,EACVylD,EAAKj9C,IAAMxI,CACb,KAAO,CAEL,KADIspB,GAAStpB,EAAIylD,EAAKz7C,MAAIhK,EAAIylD,EAAKz7C,MAC1BtF,EAAI9D,IACXV,EAAI8rD,EAAItnD,IACNpC,EAAIA,EACNpC,EAAEqC,EAAIA,EACNrC,EAAE8J,GAAKhK,EACPuC,GAAKrC,EAAEsI,GAAK/H,KAAK+B,IAAIijD,EAAKljD,EAAIkjD,EAAKj9C,GAAKjG,EAAGvC,EAAIglC,EAAM9kC,EAAE9D,KAAO4D,GAAK,GAErEE,EAAE+nD,GAAI,EACN/nD,EAAEsI,IAAMi9C,EAAKljD,EAAIkjD,EAAKj9C,GAAKjG,EAC3BkjD,EAAKnjD,GAAKtC,EACVylD,EAAKz7C,IAAMhK,CACb,CACF,CACA,SAASmiG,EAAQrhG,GACf,IAAI+zD,EAAQutC,GAAYnH,EAAUn6F,GAAI2xF,EAAO59B,EAAM,GAOnD,OANA49B,EAAKnwF,EAAImwF,EAAKlwF,EAAI,EACdkwF,EAAKpzF,OAAOozF,EAAKzoF,GAAKvE,EAAK,GAAIgtF,EAAKjqF,GAAK/C,EAAK,IAASgtF,EAAKzoF,GAAKyoF,EAAKjqF,GAAK,EAC3E45F,GAAUnH,EAAUW,QAAQnJ,GAChCxvF,EAAM,CAAEwvF,GAAQA,EAAKzoF,GAAKyoF,EAAKjqF,GAAKiqF,EAAKpzF,QACxC+iG,EAAWO,EAAWH,GAAU/P,GAC7B6P,IAAQF,EAAWvtC,GAChBA,CACT,CAyCA,OAxCAstC,EAAQ18F,KAAO,SAASnD,GACtB,OAAK2H,UAAUjJ,QACfyE,EAAOnD,EACA6/F,GAFuB18F,CAGhC,EACA08F,EAAQ7uF,QAAU,SAAShR,GACzB,IAAK2H,UAAUjJ,OAAQ,OAAOsS,EAK9B,SAASwvF,EAAYp4F,GACnB,OAAO60F,GAAqB70F,EAAMpI,EACpC,CACA,IAAI6b,EAGJ,OAFAkkF,EAAuB,OAAhB/uF,EAAUhR,GAAag9F,GAAiD,aAArBnhF,SAAc7b,GARxE,SAAqBoI,GACnB,IAAI8I,EAAIlR,EAAEzC,KAAKsiG,EAASz3F,EAAMA,EAAKqjD,OACnC,OAAY,MAALv6C,EAAY8rF,GAAyB50F,GAAQ60F,GAAqB70F,EAAmB,iBAAN8I,EAAiB,CAAEA,EAAGA,EAAGA,EAAGA,GAAMA,EAC1H,EAKmH,WAAT2K,GAAqB7b,EAAI,CAAEA,EAAGA,EAAGA,EAAGA,GAC9IwgG,GAAeA,EACRX,CACT,EACAA,EAAQn9D,MAAQ,SAAS1iC,GACvB,OAAK2H,UAAUjJ,QACfgkC,EAAQ1iC,EAAI7B,KAAKukC,MAAQn4B,OAClBs1F,GAFuBn9D,GAASn4B,MAGzC,EACAs1F,EAAQG,OAAS,SAAShgG,GACxB,OAAK2H,UAAUjJ,QACfshG,EAAShgG,EACT8/F,EAAW,KACJD,GAHuBG,CAIhC,EACAH,EAAQzhE,MAAQ,SAASp+B,GACvB,OAAK2H,UAAUjJ,QACf0/B,EAAQp+B,EACD6/F,GAFuBzhE,CAGhC,EACAyhE,EAAQI,KAAO,SAASjgG,GACtB,OAAK2H,UAAUjJ,QACfuhG,EAAOjgG,EAAI,GACJ6/F,GAFuBI,CAGhC,EACOvH,GAA0BmH,EAASlH,EAC5C,EA0BAj4F,EAAGk8C,OAAS,CACVm6B,OAAQ,SAAS,EAAG,GAClB,IAAIz4E,EAAIqJ,UAAUjJ,OAGlB,OAFIJ,EAAI,IAAG,EAAI,GACXA,EAAI,IAAG,EAAI,GACR,WACL,IAAI0B,EAAGC,EAAGk8C,EACV,GAGEA,GAFAn8C,EAAoB,EAAhB7B,KAAKy+C,SAAe,GAEhB58C,GADRC,EAAoB,EAAhB9B,KAAKy+C,SAAe,GACR38C,SACRk8C,GAAKA,EAAI,GACnB,OAAO,EAAI,EAAIn8C,EAAI7B,KAAKogC,MAAM,EAAIpgC,KAAKy4D,IAAIza,GAAKA,EAClD,CACF,EACAskD,UAAW,WACT,IAAI7jD,EAASl8C,EAAGk8C,OAAOm6B,OAAOz0E,MAAM5B,EAAIiH,WACxC,OAAO,WACL,OAAOxJ,KAAK43D,IAAInZ,IAClB,CACF,EACA8jD,MAAO,SAASl4C,GACd,IAAI5L,EAASl8C,EAAGk8C,OAAO+jD,UAAUn4C,GACjC,OAAO,WACL,OAAO5L,IAAW4L,CACpB,CACF,EACAm4C,UAAW,SAASn4C,GAClB,OAAO,WACL,IAAK,IAAInkD,EAAI,EAAGwxB,EAAI,EAAGA,EAAI2yB,EAAG3yB,IAAKxxB,GAAKlG,KAAKy+C,SAC7C,OAAOv4C,CACT,CACF,GAEF3D,EAAGC,MAAQ,CAAC,EAkCZ,IAAI88F,GAAwB,CAC1Br1C,MAAOyC,EACPzsD,KAAMysD,GAER,SAAS+1C,GAAoB5+F,EAAQnB,EAAOw8F,EAAe76D,GACzD,IAAIy0B,EAAI,GAAI70D,EAAI,GAAIyzB,EAAI,EAAG6W,EAAIvuC,KAAK+B,IAAI8B,EAAOtD,OAAQmC,EAAMnC,QAAU,EAKvE,IAJIsD,EAAO0qC,GAAK1qC,EAAO,KACrBA,EAASA,EAAOiD,QAAQ4qC,UACxBhvC,EAAQA,EAAMoE,QAAQ4qC,aAEfha,GAAK6W,GACZuqB,EAAE10D,KAAK86F,EAAcr7F,EAAO6zB,EAAI,GAAI7zB,EAAO6zB,KAC3CzzB,EAAEG,KAAKigC,EAAY3hC,EAAMg1B,EAAI,GAAIh1B,EAAMg1B,KAEzC,OAAO,SAAS71B,GACd,IAAI61B,EAAIn1B,EAAGmoD,OAAO7mD,EAAQhC,EAAG,EAAG0sC,GAAK,EACrC,OAAOtqC,EAAEyzB,GAAGohC,EAAEphC,GAAG71B,GACnB,CACF,CAIA,SAAS6gG,GAAgB7+F,EAAQnB,EAAO2hC,EAAas+D,GACnD,IAAItkB,EAAQuL,EACZ,SAAS1vB,IACP,IAAIz3D,EAASzC,KAAK+B,IAAI8B,EAAOtD,OAAQmC,EAAMnC,QAAU,EAAIkiG,GAAsBxD,GAAmBC,EAAgByD,EAAQjM,GAAwBD,GAGlJ,OAFApY,EAAS57E,EAAOoB,EAAQnB,EAAOw8F,EAAe76D,GAC9CulD,EAAQnnF,EAAOC,EAAOmB,EAAQq7F,EAAe1O,IACtChuF,CACT,CACA,SAASA,EAAMX,GACb,OAAOw8E,EAAOx8E,EAChB,CAwCA,OAvCAW,EAAM23D,OAAS,SAASr4D,GACtB,OAAO8nF,EAAM9nF,EACf,EACAU,EAAMqB,OAAS,SAAShC,GACtB,OAAK2H,UAAUjJ,QACfsD,EAAShC,EAAEoE,IAAImG,QACR8tD,KAFuBr2D,CAGhC,EACArB,EAAME,MAAQ,SAASb,GACrB,OAAK2H,UAAUjJ,QACfmC,EAAQb,EACDq4D,KAFuBx3D,CAGhC,EACAF,EAAMogG,WAAa,SAAS/gG,GAC1B,OAAOW,EAAME,MAAMb,GAAGwiC,YAAY8vD,GACpC,EACA3xF,EAAMmgG,MAAQ,SAAS9gG,GACrB,OAAK2H,UAAUjJ,QACfoiG,EAAQ9gG,EACDq4D,KAFuByoC,CAGhC,EACAngG,EAAM6hC,YAAc,SAASxiC,GAC3B,OAAK2H,UAAUjJ,QACf8jC,EAAcxiC,EACPq4D,KAFuB71B,CAGhC,EACA7hC,EAAM0B,MAAQ,SAASmmD,GACrB,OAAOw4C,GAAqBh/F,EAAQwmD,EACtC,EACA7nD,EAAMS,WAAa,SAASonD,EAAGxgD,GAC7B,OAAOi5F,GAA0Bj/F,EAAQwmD,EAAGxgD,EAC9C,EACArH,EAAM48F,KAAO,SAAS/0C,GAEpB,OADA04C,GAAoBl/F,EAAQwmD,GACrB6P,GACT,EACA13D,EAAMgC,KAAO,WACX,OAAOk+F,GAAgB7+F,EAAQnB,EAAO2hC,EAAas+D,EACrD,EACOzoC,GACT,CACA,SAAS8oC,GAAsBxgG,EAAOC,GACpC,OAAOF,EAAGqrD,OAAOprD,EAAOC,EAAQ,QAAS,aAAc,cAAe,QACxE,CACA,SAASsgG,GAAoBl/F,EAAQwmD,GAGnC,OAFA80C,GAAct7F,EAAQw7F,GAAkB4D,GAAyBp/F,EAAQwmD,GAAG,KAC5E80C,GAAct7F,EAAQw7F,GAAkB4D,GAAyBp/F,EAAQwmD,GAAG,KACrExmD,CACT,CACA,SAASo/F,GAAyBp/F,EAAQwmD,GAC/B,MAALA,IAAWA,EAAI,IACnB,IAAIpvC,EAAS8jF,GAAel7F,GAASq/F,EAAOjoF,EAAO,GAAKA,EAAO,GAAIi/B,EAAOl6C,KAAKy0B,IAAI,GAAIz0B,KAAKiqD,MAAMjqD,KAAKy4D,IAAIyqC,EAAO74C,GAAKrqD,KAAKsrE,OAAQ63B,EAAM94C,EAAI64C,EAAOhpD,EAKrJ,OAJIipD,GAAO,IAAKjpD,GAAQ,GAAaipD,GAAO,IAAKjpD,GAAQ,EAAYipD,GAAO,MAAKjpD,GAAQ,GACzFj/B,EAAO,GAAKjb,KAAKC,KAAKgb,EAAO,GAAKi/B,GAAQA,EAC1Cj/B,EAAO,GAAKjb,KAAKiqD,MAAMhvC,EAAO,GAAKi/B,GAAQA,EAAc,GAAPA,EAClDj/B,EAAO,GAAKi/B,EACLj/B,CACT,CACA,SAAS4nF,GAAqBh/F,EAAQwmD,GACpC,OAAO9nD,EAAGG,MAAMyB,MAAM5B,EAAI0gG,GAAyBp/F,EAAQwmD,GAC7D,CACA,SAASy4C,GAA0Bj/F,EAAQwmD,EAAGxgD,GAC5C,IAAInH,EAAQugG,GAAyBp/F,EAAQwmD,GAC7C,GAAIxgD,EAAQ,CACV,IAAIoqD,EAAQoY,GAAalO,KAAKt0D,GAE9B,GADAoqD,EAAMtnB,QACW,MAAbsnB,EAAM,GAAY,CACpB,IAAInvB,EAASviC,EAAG0qE,aAAajtE,KAAK+G,IAAIy5B,EAAI99B,EAAM,IAAK89B,EAAI99B,EAAM,MAI/D,OAHKuxD,EAAM,KAAIA,EAAM,GAAK,IAAMmvC,GAAyBt+D,EAAOtiC,MAAME,EAAM,MAC5EuxD,EAAM,GAAK,IACXpqD,EAAStH,EAAGsH,OAAOoqD,EAAM4V,KAAK,KACvB,SAASxpE,GACd,OAAOwJ,EAAOi7B,EAAOtiC,MAAMnC,IAAMykC,EAAO0mC,MAC1C,CACF,CACKvX,EAAM,KAAIA,EAAM,GAAK,IAiB9B,SAAwCv2C,EAAMhb,GAC5C,IAAIqQ,EAAIqwF,GAAyB1gG,EAAM,IACvC,OAAOgb,KAAQ2lF,GAAmCrjG,KAAKwgC,IAAIztB,EAAIqwF,GAAyBpjG,KAAK+G,IAAIy5B,EAAI99B,EAAM,IAAK89B,EAAI99B,EAAM,UAAoB,MAATgb,GAAgB3K,EAAqB,GAAP,MAAT2K,EAC5J,CApBoC4lF,CAA+BrvC,EAAM,GAAIvxD,IACzEmH,EAASoqD,EAAM4V,KAAK,GACtB,MACEhgE,EAAS,KAAOu5F,GAAyB1gG,EAAM,IAAM,IAEvD,OAAOH,EAAGsH,OAAOA,EACnB,CA/FAtH,EAAGC,MAAMC,OAAS,WAChB,OAAOigG,GAAgB,CAAE,EAAG,GAAK,CAAE,EAAG,GAAKlS,IAAgB,EAC7D,EA8FA,IAAI6S,GAAmC,CACrCn9F,EAAG,EACH8B,EAAG,EACH+K,EAAG,EACHirC,EAAG,EACHj7B,EAAG,GAEL,SAASqgF,GAAyBxkG,GAChC,OAAQoB,KAAKiqD,MAAMjqD,KAAKy4D,IAAI75D,GAASoB,KAAKsrE,KAAO,IACnD,CAQA,SAASi4B,GAAa9gG,EAAQ+gG,EAAMC,EAAU5/F,GAC5C,SAAS40D,EAAI52D,GACX,OAAQ4hG,EAAWzjG,KAAKy4D,IAAI52D,EAAI,EAAI,EAAIA,IAAM7B,KAAKy4D,IAAI52D,EAAI,EAAI,GAAKA,IAAM7B,KAAKy4D,IAAI+qC,EACrF,CACA,SAAS/uE,EAAI5yB,GACX,OAAO4hG,EAAWzjG,KAAKy0B,IAAI+uE,EAAM3hG,IAAM7B,KAAKy0B,IAAI+uE,GAAO3hG,EACzD,CACA,SAASW,EAAMX,GACb,OAAOY,EAAOg2D,EAAI52D,GACpB,CAmDA,OAlDAW,EAAM23D,OAAS,SAASt4D,GACtB,OAAO4yB,EAAIhyB,EAAO03D,OAAOt4D,GAC3B,EACAW,EAAMqB,OAAS,SAAShC,GACtB,OAAK2H,UAAUjJ,QACfkjG,EAAW5hG,EAAE,IAAM,EACnBY,EAAOoB,QAAQA,EAAShC,EAAEoE,IAAImG,SAASnG,IAAIwyD,IACpCj2D,GAHuBqB,CAIhC,EACArB,EAAMghG,KAAO,SAASx3C,GACpB,OAAKxiD,UAAUjJ,QACfijG,GAAQx3C,EACRvpD,EAAOoB,OAAOA,EAAOoC,IAAIwyD,IAClBj2D,GAHuBghG,CAIhC,EACAhhG,EAAM48F,KAAO,WACX,IAAIsE,EAAQvE,GAAct7F,EAAOoC,IAAIwyD,GAAMgrC,EAAWzjG,KAAO2jG,IAG7D,OAFAlhG,EAAOoB,OAAO6/F,GACd7/F,EAAS6/F,EAAMz9F,IAAIwuB,GACZjyB,CACT,EACAA,EAAM0B,MAAQ,WACZ,IAAI+W,EAAS8jF,GAAel7F,GAASK,EAAQ,GAAI40D,EAAI79C,EAAO,GAAI1b,EAAI0b,EAAO,GAAIhX,EAAIjE,KAAKiqD,MAAMwO,EAAIK,IAAKphC,EAAI13B,KAAKC,KAAKw4D,EAAIl5D,IAAKY,EAAIqjG,EAAO,EAAI,EAAIA,EACjJ,GAAInzE,SAASqH,EAAIzzB,GAAI,CACnB,GAAIw/F,EAAU,CACZ,KAAMx/F,EAAIyzB,EAAGzzB,IAAK,IAAK,IAAIsqC,EAAI,EAAGA,EAAIpuC,EAAGouC,IAAKrqC,EAAME,KAAKqwB,EAAIxwB,GAAKsqC,GAClErqC,EAAME,KAAKqwB,EAAIxwB,GACjB,MAEE,IADAC,EAAME,KAAKqwB,EAAIxwB,IACTA,IAAMyzB,GAAK,IAAS6W,EAAIpuC,EAAI,EAAGouC,EAAI,EAAGA,IAAKrqC,EAAME,KAAKqwB,EAAIxwB,GAAKsqC,GAEvE,IAAKtqC,EAAI,EAAGC,EAAMD,GAAK60D,EAAG70D,KAC1B,IAAKyzB,EAAIxzB,EAAM3D,OAAQ2D,EAAMwzB,EAAI,GAAKn4B,EAAGm4B,KACzCxzB,EAAQA,EAAM4C,MAAM7C,EAAGyzB,EACzB,CACA,OAAOxzB,CACT,EACA1B,EAAMS,WAAa,SAAS9C,EAAG0J,GAC7B,IAAKL,UAAUjJ,OAAQ,OAAOqjG,GAC1Bp6F,UAAUjJ,OAAS,EAAGsJ,EAAS+5F,GAA+C,mBAAX/5F,IAAuBA,EAAStH,EAAGsH,OAAOA,IACjH,IAAI0kC,EAAIvuC,KAAK+G,IAAI,EAAGy8F,EAAOrjG,EAAIqC,EAAM0B,QAAQ3D,QAC7C,OAAO,SAASF,GACd,IAAI4D,EAAI5D,EAAIo0B,EAAIz0B,KAAKukC,MAAMk0B,EAAIp4D,KAE/B,OADI4D,EAAIu/F,EAAOA,EAAO,KAAIv/F,GAAKu/F,GACxBv/F,GAAKsqC,EAAI1kC,EAAOxJ,GAAK,EAC9B,CACF,EACAmC,EAAMgC,KAAO,WACX,OAAO++F,GAAa9gG,EAAO+B,OAAQg/F,EAAMC,EAAU5/F,EACrD,EACOm/F,GAAsBxgG,EAAOC,EACtC,CAhEAF,EAAGC,MAAMi2D,IAAM,WACb,OAAO8qC,GAAahhG,EAAGC,MAAMC,SAASoB,OAAO,CAAE,EAAG,IAAM,IAAI,EAAM,CAAE,EAAG,IACzE,EA+DA,IAAI+/F,GAAqBrhG,EAAGsH,OAAO,OAAQ85F,GAA2B,CACpE15C,MAAO,SAASpoD,GACd,OAAQ7B,KAAKC,MAAM4B,EACrB,EACA5B,KAAM,SAAS4B,GACb,OAAQ7B,KAAKiqD,OAAOpoD,EACtB,GAKF,SAASgiG,GAAaphG,EAAQqxB,EAAUjwB,GACtC,IAAIigG,EAAOC,GAAgBjwE,GAAWkwE,EAAOD,GAAgB,EAAIjwE,GACjE,SAAStxB,EAAMX,GACb,OAAOY,EAAOqhG,EAAKjiG,GACrB,CA4BA,OA3BAW,EAAM23D,OAAS,SAASt4D,GACtB,OAAOmiG,EAAKvhG,EAAO03D,OAAOt4D,GAC5B,EACAW,EAAMqB,OAAS,SAAShC,GACtB,OAAK2H,UAAUjJ,QACfkC,EAAOoB,QAAQA,EAAShC,EAAEoE,IAAImG,SAASnG,IAAI69F,IACpCthG,GAFuBqB,CAGhC,EACArB,EAAM0B,MAAQ,SAASmmD,GACrB,OAAOw4C,GAAqBh/F,EAAQwmD,EACtC,EACA7nD,EAAMS,WAAa,SAASonD,EAAGxgD,GAC7B,OAAOi5F,GAA0Bj/F,EAAQwmD,EAAGxgD,EAC9C,EACArH,EAAM48F,KAAO,SAAS/0C,GACpB,OAAO7nD,EAAMqB,OAAOk/F,GAAoBl/F,EAAQwmD,GAClD,EACA7nD,EAAMsxB,SAAW,SAASjyB,GACxB,OAAK2H,UAAUjJ,QACfujG,EAAOC,GAAgBjwE,EAAWjyB,GAClCmiG,EAAOD,GAAgB,EAAIjwE,GAC3BrxB,EAAOoB,OAAOA,EAAOoC,IAAI69F,IAClBthG,GAJuBsxB,CAKhC,EACAtxB,EAAMgC,KAAO,WACX,OAAOq/F,GAAaphG,EAAO+B,OAAQsvB,EAAUjwB,EAC/C,EACOm/F,GAAsBxgG,EAAOC,EACtC,CACA,SAASshG,GAAgBhhF,GACvB,OAAO,SAASlhB,GACd,OAAOA,EAAI,GAAK7B,KAAKy0B,KAAK5yB,EAAGkhB,GAAK/iB,KAAKy0B,IAAI5yB,EAAGkhB,EAChD,CACF,CAUA,SAASkhF,GAAiBpgG,EAAQ67F,GAChC,IAAIv5F,EAAOzD,EAAO4G,EAClB,SAAS9G,EAAMX,GACb,OAAOa,IAAQyD,EAAM2mB,IAAIjrB,KAAoB,UAAb69F,EAAOx6E,EAAgB/e,EAAM4mB,IAAIlrB,EAAGgC,EAAOO,KAAKvC,IAAMwd,MAAQ,GAAK3c,EAAMnC,OAC3G,CACA,SAASs7C,EAAM/3C,EAAOo2C,GACpB,OAAO33C,EAAGG,MAAMmB,EAAOtD,QAAQ0F,KAAI,SAAShC,GAC1C,OAAOH,EAAQo2C,EAAOj2C,CACxB,GACF,CA8EA,OA7EAzB,EAAMqB,OAAS,SAAShC,GACtB,IAAK2H,UAAUjJ,OAAQ,OAAOsD,EAC9BA,EAAS,GACTsC,EAAQ,IAAI4lD,EAEZ,IADA,IAA0Bm4C,EAAtBjgG,GAAK,EAAG9D,EAAI0B,EAAEtB,SACT0D,EAAI9D,GAAQgG,EAAM4gD,IAAIm9C,EAAKriG,EAAEoC,KAAKkC,EAAM4mB,IAAIm3E,EAAIrgG,EAAOO,KAAK8/F,IACrE,OAAO1hG,EAAMk9F,EAAOx6E,GAAG/gB,MAAM3B,EAAOk9F,EAAO9rF,EAC7C,EACApR,EAAME,MAAQ,SAASb,GACrB,OAAK2H,UAAUjJ,QACfmC,EAAQb,EACRyH,EAAY,EACZo2F,EAAS,CACPx6E,EAAG,QACHtR,EAAGpK,WAEEhH,GAPuBE,CAQhC,EACAF,EAAM2hG,YAAc,SAAStiG,EAAGgR,GAC1BrJ,UAAUjJ,OAAS,IAAGsS,EAAU,GACpC,IAAI/O,EAAQjC,EAAE,GAAIkC,EAAOlC,EAAE,GAAIq4C,EAAOr2C,EAAOtD,OAAS,GAAKuD,GAASA,EAAQC,GAAQ,EACpF,IAAMA,EAAOD,IAAUD,EAAOtD,OAAS,EAAIsS,GAO3C,OANAnQ,EAAQm5C,EAAM/3C,EAAQo2C,EAAOrnC,EAAU,EAAGqnC,GAC1C5wC,EAAY,EACZo2F,EAAS,CACPx6E,EAAG,cACHtR,EAAGpK,WAEEhH,CACT,EACAA,EAAM4hG,iBAAmB,SAASviG,EAAGgR,GAC/BrJ,UAAUjJ,OAAS,IAAGsS,EAAU,GACpC,IAAI/O,EAAQjC,EAAE,GAAIkC,EAAOlC,EAAE,GAAIq4C,EAAOr2C,EAAOtD,OAAS,GAAKuD,EAAQC,EAAO/D,KAAKukC,OAAOzgC,EAAQC,GAAQ,GACtG,IAAMA,EAAOD,IAAUD,EAAOtD,OAAS,EAAIsS,GAAW,EAOtD,OANAnQ,EAAQm5C,EAAM/3C,EAAQ9D,KAAKukC,MAAM2V,EAAOrnC,EAAU,GAAK9O,EAAOD,GAASD,EAAOtD,OAAS,EAAIsS,GAAWqnC,GAAQ,GAAIA,GAClH5wC,EAAY,EACZo2F,EAAS,CACPx6E,EAAG,mBACHtR,EAAGpK,WAEEhH,CACT,EACAA,EAAM6hG,WAAa,SAASxiG,EAAGgR,EAASyxF,GAClC96F,UAAUjJ,OAAS,IAAGsS,EAAU,GAChCrJ,UAAUjJ,OAAS,IAAG+jG,EAAezxF,GACzC,IAAI6+B,EAAU7vC,EAAE,GAAKA,EAAE,GAAIiC,EAAQjC,EAAE6vC,EAAU,GAA2BwI,GAAhBr4C,EAAE,EAAI6vC,GAAyB5tC,IAAUD,EAAOtD,OAASsS,EAAU,EAAIyxF,GAQjI,OAPA5hG,EAAQm5C,EAAM/3C,EAAQo2C,EAAOoqD,EAAcpqD,GACvCxI,GAAShvC,EAAMgvC,UACnBpoC,EAAY4wC,GAAQ,EAAIrnC,GACxB6sF,EAAS,CACPx6E,EAAG,aACHtR,EAAGpK,WAEEhH,CACT,EACAA,EAAM+hG,gBAAkB,SAAS1iG,EAAGgR,EAASyxF,GACvC96F,UAAUjJ,OAAS,IAAGsS,EAAU,GAChCrJ,UAAUjJ,OAAS,IAAG+jG,EAAezxF,GACzC,IAAI6+B,EAAU7vC,EAAE,GAAKA,EAAE,GAAIiC,EAAQjC,EAAE6vC,EAAU,GAAI3tC,EAAOlC,EAAE,EAAI6vC,GAAUwI,EAAOl6C,KAAKiqD,OAAOlmD,EAAOD,IAAUD,EAAOtD,OAASsS,EAAU,EAAIyxF,IAQ5I,OAPA5hG,EAAQm5C,EAAM/3C,EAAQ9D,KAAKukC,OAAOxgC,EAAOD,GAASD,EAAOtD,OAASsS,GAAWqnC,GAAQ,GAAIA,GACrFxI,GAAShvC,EAAMgvC,UACnBpoC,EAAYtJ,KAAKukC,MAAM2V,GAAQ,EAAIrnC,IACnC6sF,EAAS,CACPx6E,EAAG,kBACHtR,EAAGpK,WAEEhH,CACT,EACAA,EAAM8G,UAAY,WAChB,OAAOA,CACT,EACA9G,EAAMqC,YAAc,WAClB,OAAOk6F,GAAeW,EAAO9rF,EAAE,GACjC,EACApR,EAAMgC,KAAO,WACX,OAAOy/F,GAAiBpgG,EAAQ67F,EAClC,EACOl9F,EAAMqB,OAAOA,EACtB,CA3IAtB,EAAGC,MAAMiyB,IAAM,WACb,OAAOovE,GAAathG,EAAGC,MAAMC,SAAU,EAAG,CAAE,EAAG,GACjD,EAwCAF,EAAGC,MAAM49B,KAAO,WACd,OAAO79B,EAAGC,MAAMiyB,MAAMX,SAAS,GACjC,EACAvxB,EAAGC,MAAMgiG,QAAU,WACjB,OAAOP,GAAiB,GAAI,CAC1B/+E,EAAG,QACHtR,EAAG,CAAE,KAET,EA0FArR,EAAGC,MAAMykC,WAAa,WACpB,OAAO1kC,EAAGC,MAAMgiG,UAAU9hG,MAAM+hG,GAClC,EACAliG,EAAGC,MAAMkiG,WAAa,WACpB,OAAOniG,EAAGC,MAAMgiG,UAAU9hG,MAAMiiG,GAClC,EACApiG,EAAGC,MAAMoiG,YAAc,WACrB,OAAOriG,EAAGC,MAAMgiG,UAAU9hG,MAAMmiG,GAClC,EACAtiG,EAAGC,MAAMsiG,YAAc,WACrB,OAAOviG,EAAGC,MAAMgiG,UAAU9hG,MAAMqiG,GAClC,EACA,IAAIN,GAAgB,CAAE,QAAS,SAAU,QAAS,SAAU,QAAS,QAAS,SAAU,QAAS,SAAU,SAAUx+F,IAAI+3D,IACrH2mC,GAAgB,CAAE,QAAS,SAAU,SAAU,SAAU,QAAS,SAAU,SAAU,SAAU,QAAS,SAAU,QAAS,SAAU,SAAU,SAAU,QAAS,SAAU,SAAU,SAAU,QAAS,UAAW1+F,IAAI+3D,IACzN6mC,GAAiB,CAAE,QAAS,QAAS,QAAS,SAAU,QAAS,QAAS,SAAU,SAAU,QAAS,SAAU,SAAU,SAAU,QAAS,SAAU,SAAU,SAAU,QAAS,SAAU,SAAU,UAAW5+F,IAAI+3D,IACxN+mC,GAAiB,CAAE,QAAS,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,QAAS,QAAS,SAAU,SAAU,QAAS,SAAU,SAAU,SAAU,QAAS,QAAS,SAAU,UAAW9+F,IAAI+3D,IAI7N,SAASgnC,GAAkBnhG,EAAQnB,GACjC,IAAIo9F,EACJ,SAAS5lC,IACP,IAAI3rB,EAAI,EAAG6sB,EAAI14D,EAAMnC,OAErB,IADAu/F,EAAa,KACJvxD,EAAI6sB,GAAG0kC,EAAWvxD,EAAI,GAAKhsC,EAAGwnD,SAASlmD,EAAQ0qC,EAAI6sB,GAC5D,OAAO54D,CACT,CACA,SAASA,EAAMX,GACb,IAAKkoB,MAAMloB,GAAKA,GAAI,OAAOa,EAAMH,EAAGmoD,OAAOo1C,EAAYj+F,GACzD,CAqBA,OApBAW,EAAMqB,OAAS,SAAShC,GACtB,OAAK2H,UAAUjJ,QACfsD,EAAShC,EAAEoE,IAAImjD,GAAW3uC,OAAO4uC,GAAY11C,KAAKw1C,GAC3C+Q,KAFuBr2D,CAGhC,EACArB,EAAME,MAAQ,SAASb,GACrB,OAAK2H,UAAUjJ,QACfmC,EAAQb,EACDq4D,KAFuBx3D,CAGhC,EACAF,EAAMyiG,UAAY,WAChB,OAAOnF,CACT,EACAt9F,EAAM0iG,aAAe,SAASpjG,GAE5B,OADAA,EAAIY,EAAM+M,QAAQ3N,IACP,EAAI,CAAEud,IAAKA,KAAQ,CAAEvd,EAAI,EAAIg+F,EAAWh+F,EAAI,GAAK+B,EAAO,GAAI/B,EAAIg+F,EAAWv/F,OAASu/F,EAAWh+F,GAAK+B,EAAOA,EAAOtD,OAAS,GACxI,EACAiC,EAAMgC,KAAO,WACX,OAAOwgG,GAAkBnhG,EAAQnB,EACnC,EACOw3D,GACT,CAIA,SAASirC,GAAkBlkD,EAAItjC,EAAIjb,GACjC,IAAI2xF,EAAIpwF,EACR,SAASzB,EAAMX,GACb,OAAOa,EAAM1C,KAAK+G,IAAI,EAAG/G,KAAK+B,IAAIkC,EAAGjE,KAAKiqD,MAAMoqC,GAAMxyF,EAAIo/C,MAC5D,CACA,SAASiZ,IAGP,OAFAm6B,EAAK3xF,EAAMnC,QAAUod,EAAKsjC,GAC1Bh9C,EAAIvB,EAAMnC,OAAS,EACZiC,CACT,CAoBA,OAnBAA,EAAMqB,OAAS,SAAShC,GACtB,OAAK2H,UAAUjJ,QACf0gD,GAAMp/C,EAAE,GACR8b,GAAM9b,EAAEA,EAAEtB,OAAS,GACZ25D,KAHuB,CAAEjZ,EAAItjC,EAItC,EACAnb,EAAME,MAAQ,SAASb,GACrB,OAAK2H,UAAUjJ,QACfmC,EAAQb,EACDq4D,KAFuBx3D,CAGhC,EACAF,EAAM0iG,aAAe,SAASpjG,GAG5B,MAAO,CADPA,GADAA,EAAIY,EAAM+M,QAAQ3N,IACV,EAAIud,IAAMvd,EAAIuyF,EAAKpzC,EACfn/C,EAAI,EAAIuyF,EACtB,EACA7xF,EAAMgC,KAAO,WACX,OAAO2gG,GAAkBlkD,EAAItjC,EAAIjb,EACnC,EACOw3D,GACT,CAIA,SAASkrC,GAAmBvhG,EAAQnB,GAClC,SAASF,EAAMX,GACb,GAAIA,GAAKA,EAAG,OAAOa,EAAMH,EAAGmoD,OAAO7mD,EAAQhC,GAC7C,CAkBA,OAjBAW,EAAMqB,OAAS,SAASmoD,GACtB,OAAKxiD,UAAUjJ,QACfsD,EAASmoD,EACFxpD,GAFuBqB,CAGhC,EACArB,EAAME,MAAQ,SAASspD,GACrB,OAAKxiD,UAAUjJ,QACfmC,EAAQspD,EACDxpD,GAFuBE,CAGhC,EACAF,EAAM0iG,aAAe,SAASpjG,GAE5B,OADAA,EAAIY,EAAM+M,QAAQ3N,GACX,CAAE+B,EAAO/B,EAAI,GAAI+B,EAAO/B,GACjC,EACAU,EAAMgC,KAAO,WACX,OAAO4gG,GAAmBvhG,EAAQnB,EACpC,EACOF,CACT,CAIA,SAAS6iG,GAAkBxhG,GACzB,SAASyhG,EAASzjG,GAChB,OAAQA,CACV,CAgBA,OAfAyjG,EAASnrC,OAASmrC,EAClBA,EAASzhG,OAASyhG,EAAS5iG,MAAQ,SAASb,GAC1C,OAAK2H,UAAUjJ,QACfsD,EAAShC,EAAEoE,IAAIq/F,GACRA,GAFuBzhG,CAGhC,EACAyhG,EAASphG,MAAQ,SAASmmD,GACxB,OAAOw4C,GAAqBh/F,EAAQwmD,EACtC,EACAi7C,EAASriG,WAAa,SAASonD,EAAGxgD,GAChC,OAAOi5F,GAA0Bj/F,EAAQwmD,EAAGxgD,EAC9C,EACAy7F,EAAS9gG,KAAO,WACd,OAAO6gG,GAAkBxhG,EAC3B,EACOyhG,CACT,CAEA,SAASC,KACP,OAAO,CACT,CA3HAhjG,EAAGC,MAAMunD,SAAW,WAClB,OAAOi7C,GAAkB,GAAI,GAC/B,EAkCAziG,EAAGC,MAAMgjG,SAAW,WAClB,OAAOL,GAAkB,EAAG,EAAG,CAAE,EAAG,GACtC,EAgCA5iG,EAAGC,MAAM2kC,UAAY,WACnB,OAAOi+D,GAAmB,CAAE,IAAM,CAAE,EAAG,GACzC,EAwBA7iG,EAAGC,MAAM8iG,SAAW,WAClB,OAAOD,GAAkB,CAAE,EAAG,GAChC,EAsBA9iG,EAAGqP,IAAM,CAAC,EAIVrP,EAAGqP,IAAIpW,IAAM,WACX,IAAI0iC,EAAcunE,GAAuBnmE,EAAcomE,GAAuBC,EAAeJ,GAASK,EAAYC,GAAgB/mE,EAAagnE,GAAsB/mE,EAAWgnE,GAAoBzK,EAAW0K,GAC/M,SAASxqG,IACP,IAAIo9D,EAAK54D,KAAK+G,IAAI,GAAIm3B,EAAY/5B,MAAM7B,KAAMkH,YAAaokB,EAAK5tB,KAAK+G,IAAI,GAAIu4B,EAAYn7B,MAAM7B,KAAMkH,YAAak4E,EAAK5iD,EAAW36B,MAAM7B,KAAMkH,WAAa,GAAOg0E,EAAKz+C,EAAS56B,MAAM7B,KAAMkH,WAAa,GAAO+xF,EAAKv7F,KAAKwgC,IAAIg9C,EAAKkE,GAAKukB,EAAKvkB,EAAKlE,EAAK,EAAI,EAE3P,GADI5vD,EAAKgrC,IAAIstC,EAAKt4E,EAAIA,EAAKgrC,EAAIA,EAAKstC,GAChC3K,GAAM,GAAI,OAAO4K,EAAcv4E,EAAIq4E,IAAOrtC,EAAKutC,EAAcvtC,EAAI,EAAIqtC,GAAM,IAAM,IACrF,IAAIC,EAAItjB,EAAIwjB,EAAIC,EAAoBplD,EAAItB,EAAIhiC,EAAIE,EAAID,EAAIhS,EAAIy9E,EAAIG,EAA5CxxB,EAAK,EAAG5M,EAAK,EAAmC7pD,EAAO,GAO3E,IANI8kG,IAAO/K,EAASn3F,MAAM7B,KAAMkH,YAAc,GAAK,KACjD48F,EAAKR,IAAcC,GAAiB7lG,KAAKogC,KAAKw4B,EAAKA,EAAKhrC,EAAKA,IAAOg4E,EAAUzhG,MAAM7B,KAAMkH,WACrFy8F,IAAI76C,IAAO,GACZx9B,IAAIw9B,EAAKqM,GAAQ2uC,EAAKx4E,EAAK5tB,KAAK4H,IAAIy+F,KACpCztC,IAAIZ,EAAKP,GAAQ2uC,EAAKxtC,EAAK54D,KAAK4H,IAAIy+F,MAEtCz4E,EAAI,CACNqzB,EAAKrzB,EAAK5tB,KAAKugC,IAAImhD,EAAKt2B,GACxBzL,EAAK/xB,EAAK5tB,KAAK4H,IAAI85E,EAAKt2B,GACxBztC,EAAKiQ,EAAK5tB,KAAKugC,IAAIi9C,EAAKpyB,GACxBvtC,EAAK+P,EAAK5tB,KAAK4H,IAAI41E,EAAKpyB,GACxB,IAAIkQ,EAAKt7D,KAAKwgC,IAAIg9C,EAAKkE,EAAK,EAAIt2B,IAAO,GAAI,EAAI,EAC/C,GAAIA,GAAMk7C,GAAgBrlD,EAAItB,EAAIhiC,EAAIE,KAAQooF,EAAK3qC,EAAI,CACrD,IAAIirC,GAAM7kB,EAAKlE,GAAM,EACrBv8B,EAAKrzB,EAAK5tB,KAAKugC,IAAIgmE,GACnB5mD,EAAK/xB,EAAK5tB,KAAK4H,IAAI2+F,GACnB5oF,EAAKE,EAAK,IACZ,CACF,MACEojC,EAAKtB,EAAK,EAEZ,GAAIiZ,EAAI,CACNh7C,EAAKg7C,EAAK54D,KAAKugC,IAAIi9C,EAAKxlB,GACxBpsD,EAAKgtD,EAAK54D,KAAK4H,IAAI41E,EAAKxlB,GACxBqxB,EAAKzwB,EAAK54D,KAAKugC,IAAImhD,EAAK1pB,GACxBwxB,EAAK5wB,EAAK54D,KAAK4H,IAAI85E,EAAK1pB,GACxB,IAAIqD,EAAKr7D,KAAKwgC,IAAIkhD,EAAKlE,EAAK,EAAIxlB,IAAO,GAAI,EAAI,EAC/C,GAAIA,GAAMsuC,GAAgB1oF,EAAIhS,EAAIy9E,EAAIG,KAAQ,EAAIyc,EAAK5qC,EAAI,CACzD,IAAImrC,GAAM9kB,EAAKlE,GAAM,EACrB5/D,EAAKg7C,EAAK54D,KAAKugC,IAAIimE,GACnB56F,EAAKgtD,EAAK54D,KAAK4H,IAAI4+F,GACnBnd,EAAKG,EAAK,IACZ,CACF,MACE5rE,EAAKhS,EAAK,EAEZ,GAAI2vF,EAAK,KAAM2K,EAAKlmG,KAAK+B,IAAI/B,KAAKwgC,IAAI5S,EAAKgrC,GAAM,GAAI+sC,EAAaxhG,MAAM7B,KAAMkH,aAAe,KAAM,CACjGo5E,EAAKhqB,EAAKhrC,EAAKq4E,EAAK,EAAI,EACxB,IAAIQ,EAAMP,EAAIQ,EAAMR,EACpB,GAAI3K,EAAK,GAAG,CACV,IAAIoL,EAAW,MAANtd,EAAa,CAAEzrE,EAAIhS,GAAa,MAAN+R,EAAa,CAAEsjC,EAAItB,GAAOypC,GAAyB,CAAEnoC,EAAItB,GAAM,CAAE0pC,EAAIG,GAAM,CAAE7rE,EAAIE,GAAM,CAAED,EAAIhS,IAAO4wE,EAAKv7B,EAAK0lD,EAAG,GAAIlqB,EAAK98B,EAAKgnD,EAAG,GAAI3a,EAAKruE,EAAKgpF,EAAG,GAAI1a,EAAKpuE,EAAK8oF,EAAG,GAAIC,EAAK,EAAI5mG,KAAK4H,IAAI5H,KAAKw3D,MAAMglB,EAAKwP,EAAKvP,EAAKwP,IAAOjsF,KAAKogC,KAAKo8C,EAAKA,EAAKC,EAAKA,GAAMz8E,KAAKogC,KAAK4rD,EAAKA,EAAKC,EAAKA,KAAQ,GAAI4a,EAAK7mG,KAAKogC,KAAKumE,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,IAC5WD,EAAM1mG,KAAK+B,IAAImkG,GAAKttC,EAAKiuC,IAAOD,EAAK,IACrCH,EAAMzmG,KAAK+B,IAAImkG,GAAKt4E,EAAKi5E,IAAOD,EAAK,GACvC,CACA,GAAU,MAANjpF,EAAY,CACd,IAAImpF,EAAMC,GAA+B,MAAN1d,EAAa,CAAEzrE,EAAIhS,GAAO,CAAEy9E,EAAIG,GAAM,CAAEvoC,EAAItB,GAAM/xB,EAAI64E,EAAKR,GAAKe,EAAMD,GAAyB,CAAEppF,EAAIE,GAAM,CAAED,EAAIhS,GAAMgiB,EAAI64E,EAAKR,GAC/JC,IAAOO,EACTllG,EAAK6C,KAAK,IAAK0iG,EAAI,GAAI,IAAKL,EAAK,IAAKA,EAAK,QAAS7jB,EAAI,IAAKkkB,EAAI,GAAI,IAAKl5E,EAAI,IAAKA,EAAI,MAAO,EAAIq4E,EAAKK,GAAgBQ,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAIE,EAAI,GAAG,GAAIA,EAAI,GAAG,IAAK,IAAKf,EAAI,IAAKe,EAAI,GAAI,IAAKP,EAAK,IAAKA,EAAK,QAAS7jB,EAAI,IAAKokB,EAAI,IAEpOzlG,EAAK6C,KAAK,IAAK0iG,EAAI,GAAI,IAAKL,EAAK,IAAKA,EAAK,QAAS7jB,EAAI,IAAKokB,EAAI,GAErE,MACEzlG,EAAK6C,KAAK,IAAK68C,EAAI,IAAKtB,GAE1B,GAAU,MAAN0pC,EAAY,CACd,IAAI4d,EAAMF,GAAyB,CAAE9lD,EAAItB,GAAM,CAAE0pC,EAAIG,GAAM5wB,GAAK8tC,EAAKT,GAAKiB,EAAMH,GAAyB,CAAEnpF,EAAIhS,GAAY,MAAN+R,EAAa,CAAEsjC,EAAItB,GAAO,CAAEhiC,EAAIE,GAAM+6C,GAAK8tC,EAAKT,GACjKC,IAAOQ,EACTnlG,EAAK6C,KAAK,IAAK8iG,EAAI,GAAI,IAAKR,EAAK,IAAKA,EAAK,QAAS9jB,EAAI,IAAKskB,EAAI,GAAI,IAAKtuC,EAAI,IAAKA,EAAI,MAAOqtC,EAAKK,GAAgBY,EAAI,GAAG,GAAIA,EAAI,GAAG,GAAID,EAAI,GAAG,GAAIA,EAAI,GAAG,IAAK,IAAK,EAAIhB,EAAI,IAAKgB,EAAI,GAAI,IAAKP,EAAK,IAAKA,EAAK,QAAS9jB,EAAI,IAAKqkB,EAAI,IAEpO1lG,EAAK6C,KAAK,IAAK8iG,EAAI,GAAI,IAAKR,EAAK,IAAKA,EAAK,QAAS9jB,EAAI,IAAKqkB,EAAI,GAErE,MACE1lG,EAAK6C,KAAK,IAAKwZ,EAAI,IAAKhS,EAE5B,MACErK,EAAK6C,KAAK,IAAK68C,EAAI,IAAKtB,GACd,MAANhiC,GAAYpc,EAAK6C,KAAK,IAAKwpB,EAAI,IAAKA,EAAI,MAAO0tC,EAAI,IAAK2qC,EAAI,IAAKtoF,EAAI,IAAKE,GAC9Etc,EAAK6C,KAAK,IAAKwZ,EAAI,IAAKhS,GACd,MAANy9E,GAAY9nF,EAAK6C,KAAK,IAAKw0D,EAAI,IAAKA,EAAI,MAAOyC,EAAI,IAAK,EAAI4qC,EAAI,IAAK5c,EAAI,IAAKG,GAGpF,OADAjoF,EAAK6C,KAAK,KACH7C,EAAKsoE,KAAK,GACnB,CACA,SAASs8B,EAAcv4E,EAAIq4E,GACzB,MAAO,MAAQr4E,EAAK,IAAMA,EAAK,IAAMA,EAAK,QAAUq4E,EAAK,OAASr4E,EAAK,IAAMA,EAAK,IAAMA,EAAK,QAAUq4E,EAAK,MAAQr4E,CACtH,CAwCA,OAvCApyB,EAAI0iC,YAAc,SAAS3+B,GACzB,OAAKiK,UAAUjJ,QACf29B,EAAc2pC,GAAWtoE,GAClB/D,GAFuB0iC,CAGhC,EACA1iC,EAAI8jC,YAAc,SAAS//B,GACzB,OAAKiK,UAAUjJ,QACf++B,EAAcuoC,GAAWtoE,GAClB/D,GAFuB8jC,CAGhC,EACA9jC,EAAImqG,aAAe,SAASpmG,GAC1B,OAAKiK,UAAUjJ,QACfolG,EAAe99B,GAAWtoE,GACnB/D,GAFuBmqG,CAGhC,EACAnqG,EAAIoqG,UAAY,SAASrmG,GACvB,OAAKiK,UAAUjJ,QACfqlG,EAAYrmG,GAAKsmG,GAAiBA,GAAiBh+B,GAAWtoE,GACvD/D,GAFuBoqG,CAGhC,EACApqG,EAAIsjC,WAAa,SAASv/B,GACxB,OAAKiK,UAAUjJ,QACfu+B,EAAa+oC,GAAWtoE,GACjB/D,GAFuBsjC,CAGhC,EACAtjC,EAAIujC,SAAW,SAASx/B,GACtB,OAAKiK,UAAUjJ,QACfw+B,EAAW8oC,GAAWtoE,GACf/D,GAFuBujC,CAGhC,EACAvjC,EAAI8/F,SAAW,SAAS/7F,GACtB,OAAKiK,UAAUjJ,QACf+6F,EAAWzzB,GAAWtoE,GACf/D,GAFuB8/F,CAGhC,EACA9/F,EAAIkkC,SAAW,WACb,IAAIse,IAAM9f,EAAY/5B,MAAM7B,KAAMkH,aAAc81B,EAAYn7B,MAAM7B,KAAMkH,YAAc,EAAGoK,IAAMkrB,EAAW36B,MAAM7B,KAAMkH,aAAcu1B,EAAS56B,MAAM7B,KAAMkH,YAAc,EAAI,GAC3K,MAAO,CAAExJ,KAAKugC,IAAI3sB,GAAKoqC,EAAGh+C,KAAK4H,IAAIgM,GAAKoqC,EAC1C,EACOxiD,CACT,EACA,IAAIqqG,GAAiB,OACrB,SAASJ,GAAsBplG,GAC7B,OAAOA,EAAE69B,WACX,CACA,SAASwnE,GAAsBrlG,GAC7B,OAAOA,EAAEi/B,WACX,CACA,SAASwmE,GAAqBzlG,GAC5B,OAAOA,EAAEy+B,UACX,CACA,SAASinE,GAAmB1lG,GAC1B,OAAOA,EAAE0+B,QACX,CACA,SAASinE,GAAmB3lG,GAC1B,OAAOA,GAAKA,EAAEi7F,QAChB,CACA,SAASgL,GAAgBrlD,EAAItB,EAAIhiC,EAAIE,GACnC,OAAQojC,EAAKtjC,GAAMgiC,GAAMA,EAAK9hC,GAAMojC,EAAK,EAAI,EAAI,CACnD,CACA,SAAS8lD,GAAyB/uC,EAAI5M,EAAIx9B,EAAIs4E,EAAID,GAChD,IAAIkB,EAAMnvC,EAAG,GAAK5M,EAAG,GAAIg8C,EAAMpvC,EAAG,GAAK5M,EAAG,GAAI5B,GAAMy8C,EAAKC,GAAMA,GAAMlmG,KAAKogC,KAAK+mE,EAAMA,EAAMC,EAAMA,GAAMC,EAAK79C,EAAK49C,EAAKE,GAAM99C,EAAK29C,EAAKxpF,EAAKq6C,EAAG,GAAKqvC,EAAIxpF,EAAKm6C,EAAG,GAAKsvC,EAAI1pF,EAAKwtC,EAAG,GAAKi8C,EAAIz7F,EAAKw/C,EAAG,GAAKk8C,EAAIje,GAAM1rE,EAAKC,GAAM,EAAG4rE,GAAM3rE,EAAKjS,GAAM,EAAGrC,EAAKqU,EAAKD,EAAI5V,EAAK6D,EAAKiS,EAAI26C,EAAKjvD,EAAKA,EAAKxB,EAAKA,EAAIi2C,EAAIpwB,EAAKs4E,EAAIqB,EAAI5pF,EAAK/R,EAAKgS,EAAKC,EAAIxd,GAAK0H,EAAK,GAAK,EAAI,GAAK/H,KAAKogC,KAAKpgC,KAAK+G,IAAI,EAAGi3C,EAAIA,EAAIwa,EAAK+uC,EAAIA,IAAKC,GAAOD,EAAIx/F,EAAKwB,EAAKlJ,GAAKm4D,EAAIwtB,IAAQuhB,EAAIh+F,EAAKxB,EAAK1H,GAAKm4D,EAAIivC,GAAOF,EAAIx/F,EAAKwB,EAAKlJ,GAAKm4D,EAAI0tB,IAAQqhB,EAAIh+F,EAAKxB,EAAK1H,GAAKm4D,EAAIkvC,EAAMF,EAAMne,EAAIse,EAAM3hB,EAAMwD,EAAIoe,EAAMH,EAAMpe,EAAIwe,EAAM3hB,EAAMsD,EAEpkB,OADIke,EAAMA,EAAMC,EAAMA,EAAMC,EAAMA,EAAMC,EAAMA,IAAKL,EAAMC,EAAKzhB,EAAME,GAC7D,CAAE,CAAEshB,EAAMH,EAAIrhB,EAAMshB,GAAM,CAAEE,EAAM55E,EAAKowB,EAAGgoC,EAAMp4D,EAAKowB,GAC9D,CACA,SAAS8pD,GAAYtlB,GACnB,IAAI3gF,EAAIomF,GAAgBnmF,EAAIomF,GAAgBlnC,EAAU44B,GAASv1C,EAAc0jE,GAAmBC,EAAiB3jE,EAAYxjC,IAAKonG,EAAU,GAC5I,SAAS/sG,EAAKsN,GACZ,IAAyDnI,EAArDy5E,EAAW,GAAIhlD,EAAS,GAAI7wB,GAAK,EAAG9D,EAAIqI,EAAKjI,OAAWooF,EAAK9gB,GAAWhmE,GAAI+mF,EAAK/gB,GAAW/lE,GAChG,SAASm4E,IACPH,EAAS11E,KAAK,IAAKigC,EAAYm+C,EAAW1tD,GAASmzE,GACrD,CACA,OAAShkG,EAAI9D,GACP6gD,EAAQ5hD,KAAKkD,KAAMjC,EAAImI,EAAKvE,GAAIA,GAClC6wB,EAAO1wB,KAAK,EAAGukF,EAAGvpF,KAAKkD,KAAMjC,EAAG4D,IAAK2kF,EAAGxpF,KAAKkD,KAAMjC,EAAG4D,KAC7C6wB,EAAOv0B,SAChB05E,IACAnlD,EAAS,IAIb,OADIA,EAAOv0B,QAAQ05E,IACZH,EAASv5E,OAASu5E,EAASjQ,KAAK,IAAM,IAC/C,CA0BA,OAzBA3uE,EAAK2G,EAAI,SAASmqD,GAChB,OAAKxiD,UAAUjJ,QACfsB,EAAImqD,EACG9wD,GAFuB2G,CAGhC,EACA3G,EAAK4G,EAAI,SAASkqD,GAChB,OAAKxiD,UAAUjJ,QACfuB,EAAIkqD,EACG9wD,GAFuB4G,CAGhC,EACA5G,EAAK8lD,QAAU,SAASgL,GACtB,OAAKxiD,UAAUjJ,QACfygD,EAAUgL,EACH9wD,GAFuB8lD,CAGhC,EACA9lD,EAAKmpC,YAAc,SAAS2nB,GAC1B,OAAKxiD,UAAUjJ,QACcynG,EAAZ,mBAANh8C,EAAmC3nB,EAAc2nB,GAA0B3nB,EAAc6jE,GAAyBp7E,IAAIk/B,IAAM+7C,IAAmBlnG,IACnJ3F,GAFuB8sG,CAGhC,EACA9sG,EAAK+sG,QAAU,SAASj8C,GACtB,OAAKxiD,UAAUjJ,QACf0nG,EAAUj8C,EACH9wD,GAFuB+sG,CAGhC,EACO/sG,CACT,CACAqH,EAAGqP,IAAI1W,KAAO,WACZ,OAAO4sG,GAAYp7C,EACrB,EACA,IAAIw7C,GAA2B3lG,EAAG0D,IAAI,CACpCxD,OAAQslG,GACR,gBAAiBI,GACjBjuD,KAsBF,SAAyBplB,GACvB,IAAI7wB,EAAI,EAAG9D,EAAI20B,EAAOv0B,OAAQwS,EAAI+hB,EAAO,GAAIvzB,EAAO,CAAEwR,EAAE,GAAI,IAAKA,EAAE,IACnE,OAAS9O,EAAI9D,GAAGoB,EAAK6C,KAAK,KAAM2O,EAAE,IAAMA,EAAI+hB,EAAO7wB,IAAI,IAAM,EAAG,IAAK8O,EAAE,IACnE5S,EAAI,GAAGoB,EAAK6C,KAAK,IAAK2O,EAAE,IAC5B,OAAOxR,EAAKsoE,KAAK,GACnB,EA1BE,cAAeu+B,GACf,aAAcC,GACdC,MAAOC,GACP,aAiGF,SAA8BzzE,GAC5B,GAAIA,EAAOv0B,OAAS,EAAG,OAAOwnG,GAAkBjzE,GAChD,IAA0C0zE,EAAtCjnG,EAAO,GAAI0C,GAAK,EAAG9D,EAAI20B,EAAOv0B,OAAYm3F,EAAK,CAAE,GAAKC,EAAK,CAAE,GACjE,OAAS1zF,EAAI,GACXukG,EAAK1zE,EAAO7wB,GACZyzF,EAAGtzF,KAAKokG,EAAG,IACX7Q,EAAGvzF,KAAKokG,EAAG,IAEbjnG,EAAK6C,KAAKqkG,GAAgBC,GAAyBhR,GAAM,IAAM+Q,GAAgBC,GAAyB/Q,MACtG1zF,EACF,OAASA,EAAI9D,GACXqoG,EAAK1zE,EAAO7wB,GACZyzF,EAAG/qD,QACH+qD,EAAGtzF,KAAKokG,EAAG,IACX7Q,EAAGhrD,QACHgrD,EAAGvzF,KAAKokG,EAAG,IACXG,GAAuBpnG,EAAMm2F,EAAIC,GAEnC,OAAOp2F,EAAKsoE,KAAK,GACnB,EAnHE,eAoHF,SAAgC/0C,GAC9B,IAAIvzB,EAA4CinG,EAAtCvkG,GAAK,EAAG9D,EAAI20B,EAAOv0B,OAAQ8pD,EAAIlqD,EAAI,EAAOu3F,EAAK,GAAIC,EAAK,GAClE,OAAS1zF,EAAI,GACXukG,EAAK1zE,EAAO7wB,EAAI9D,GAChBu3F,EAAGtzF,KAAKokG,EAAG,IACX7Q,EAAGvzF,KAAKokG,EAAG,IAEbjnG,EAAO,CAAEknG,GAAgBC,GAAyBhR,GAAK,IAAK+Q,GAAgBC,GAAyB/Q,MACnG1zF,EACF,OAASA,EAAIomD,GACXm+C,EAAK1zE,EAAO7wB,EAAI9D,GAChBu3F,EAAG/qD,QACH+qD,EAAGtzF,KAAKokG,EAAG,IACX7Q,EAAGhrD,QACHgrD,EAAGvzF,KAAKokG,EAAG,IACXG,GAAuBpnG,EAAMm2F,EAAIC,GAEnC,OAAOp2F,EAAKsoE,KAAK,GACnB,EArIEsuB,OAsIF,SAA2BrjE,EAAQmzE,GACjC,IAAI9nG,EAAI20B,EAAOv0B,OAAS,EACxB,GAAIJ,EAEF,IADA,IAAkG4S,EAAGmS,EAAjG+7B,EAAKnsB,EAAO,GAAG,GAAI6qB,EAAK7qB,EAAO,GAAG,GAAIvrB,EAAKurB,EAAO30B,GAAG,GAAK8gD,EAAIl5C,EAAK+sB,EAAO30B,GAAG,GAAKw/C,EAAI17C,GAAK,IACtFA,GAAK9D,GAEZ+kB,EAAIjhB,EAAI9D,GADR4S,EAAI+hB,EAAO7wB,IAET,GAAKgkG,EAAUl1F,EAAE,IAAM,EAAIk1F,IAAYhnD,EAAK/7B,EAAI3b,GAClDwJ,EAAE,GAAKk1F,EAAUl1F,EAAE,IAAM,EAAIk1F,IAAYtoD,EAAKz6B,EAAInd,GAGtD,OAAOwgG,GAAiBzzE,EAC1B,EAjJE8zE,SAsCF,SAA6B9zE,EAAQmzE,GACnC,OAAOnzE,EAAOv0B,OAAS,EAAIwnG,GAAkBjzE,GAAUA,EAAO,GAAK+zE,GAAmB/zE,EAAQg0E,GAA4Bh0E,EAAQmzE,GACpI,EAvCE,gBA8BF,SAAiCnzE,EAAQmzE,GACvC,OAAOnzE,EAAOv0B,OAAS,EAAIwnG,GAAkBjzE,GAAUA,EAAO,GAAK+zE,GAAmB/zE,EAAOhuB,MAAM,GAAI,GAAIgiG,GAA4Bh0E,EAAQmzE,GACjJ,EA/BE,kBAgCF,SAAmCnzE,EAAQmzE,GACzC,OAAOnzE,EAAOv0B,OAAS,EAAI4nG,GAAwBrzE,GAAUA,EAAO,GAAK+zE,IAAoB/zE,EAAO1wB,KAAK0wB,EAAO,IAChHA,GAASg0E,GAA4B,CAAEh0E,EAAOA,EAAOv0B,OAAS,IAAKuF,OAAOgvB,EAAQ,CAAEA,EAAO,KAAOmzE,GACpG,EAlCEc,SAyLF,SAA6Bj0E,GAC3B,OAAOA,EAAOv0B,OAAS,EAAIwnG,GAAkBjzE,GAAUA,EAAO,GAAK+zE,GAAmB/zE,EAzBxF,SAAqCA,GACnC,IAAmBz0B,EAAGuT,EAAGC,EAAG3N,EAAxB8iG,EAAW,GAAgB3+C,EATjC,SAAsCv1B,GACpC,IAAI7wB,EAAI,EAAGyzB,EAAI5C,EAAOv0B,OAAS,EAAG8pD,EAAI,GAAI2N,EAAKljC,EAAO,GAAIs2B,EAAKt2B,EAAO,GAAIz0B,EAAIgqD,EAAE,GAAK4+C,GAAiBjxC,EAAI5M,GAC1G,OAASnnD,EAAIyzB,GACX2yB,EAAEpmD,IAAM5D,GAAKA,EAAI4oG,GAAiBjxC,EAAK5M,EAAIA,EAAKt2B,EAAO7wB,EAAI,MAAQ,EAGrE,OADAomD,EAAEpmD,GAAK5D,EACAgqD,CACT,CAEqC6+C,CAA6Bp0E,GAAS7wB,GAAK,EAAGyzB,EAAI5C,EAAOv0B,OAAS,EACrG,OAAS0D,EAAIyzB,GACXr3B,EAAI4oG,GAAiBn0E,EAAO7wB,GAAI6wB,EAAO7wB,EAAI,IACvCu8B,EAAIngC,GAAK,GACXgqD,EAAEpmD,GAAKomD,EAAEpmD,EAAI,GAAK,GAIlBiC,GAFA0N,EAAIy2C,EAAEpmD,GAAK5D,GAEHuT,GADRC,EAAIw2C,EAAEpmD,EAAI,GAAK5D,GACCwT,GACR,IACN3N,EAAQ,EAAJ7F,EAAQL,KAAKogC,KAAKl6B,GACtBmkD,EAAEpmD,GAAKiC,EAAI0N,EACXy2C,EAAEpmD,EAAI,GAAKiC,EAAI2N,GAIrB5P,GAAK,EACL,OAASA,GAAKyzB,GACZxxB,GAAK4uB,EAAO90B,KAAK+B,IAAI21B,EAAGzzB,EAAI,IAAI,GAAK6wB,EAAO90B,KAAK+G,IAAI,EAAG9C,EAAI,IAAI,KAAO,GAAK,EAAIomD,EAAEpmD,GAAKomD,EAAEpmD,KACzF+kG,EAAS5kG,KAAK,CAAE8B,GAAK,EAAGmkD,EAAEpmD,GAAKiC,GAAK,IAEtC,OAAO8iG,CACT,CAEgGG,CAA4Br0E,GAC5H,IArLA,SAASizE,GAAkBjzE,GACzB,OAAOA,EAAOv0B,OAAS,EAAIu0B,EAAO+0C,KAAK,KAAO/0C,EAAS,GACzD,CACA,SAASqzE,GAAwBrzE,GAC/B,OAAOA,EAAO+0C,KAAK,KAAO,GAC5B,CAOA,SAASu+B,GAAsBtzE,GAE7B,IADA,IAAI7wB,EAAI,EAAG9D,EAAI20B,EAAOv0B,OAAQwS,EAAI+hB,EAAO,GAAIvzB,EAAO,CAAEwR,EAAE,GAAI,IAAKA,EAAE,MAC1D9O,EAAI9D,GAAGoB,EAAK6C,KAAK,KAAM2O,EAAI+hB,EAAO7wB,IAAI,GAAI,IAAK8O,EAAE,IAC1D,OAAOxR,EAAKsoE,KAAK,GACnB,CACA,SAASw+B,GAAqBvzE,GAE5B,IADA,IAAI7wB,EAAI,EAAG9D,EAAI20B,EAAOv0B,OAAQwS,EAAI+hB,EAAO,GAAIvzB,EAAO,CAAEwR,EAAE,GAAI,IAAKA,EAAE,MAC1D9O,EAAI9D,GAAGoB,EAAK6C,KAAK,KAAM2O,EAAI+hB,EAAO7wB,IAAI,GAAI,IAAK8O,EAAE,IAC1D,OAAOxR,EAAKsoE,KAAK,GACnB,CAWA,SAASg/B,GAAmB/zE,EAAQk0E,GAClC,GAAIA,EAASzoG,OAAS,GAAKu0B,EAAOv0B,QAAUyoG,EAASzoG,QAAUu0B,EAAOv0B,QAAUyoG,EAASzoG,OAAS,EAChG,OAAOwnG,GAAkBjzE,GAE3B,IAAIo+D,EAAOp+D,EAAOv0B,QAAUyoG,EAASzoG,OAAQgB,EAAO,GAAIy2D,EAAKljC,EAAO,GAAI/hB,EAAI+hB,EAAO,GAAIs2C,EAAK49B,EAAS,GAAI9jF,EAAIkmD,EAAIo9B,EAAK,EAMtH,GALItV,IACF3xF,GAAQ,KAAOwR,EAAE,GAAa,EAARq4D,EAAG,GAAS,GAAK,KAAOr4D,EAAE,GAAa,EAARq4D,EAAG,GAAS,GAAK,IAAMr4D,EAAE,GAAK,IAAMA,EAAE,GAC3FilD,EAAKljC,EAAO,GACZ0zE,EAAK,GAEHQ,EAASzoG,OAAS,EAAG,CACvB2kB,EAAI8jF,EAAS,GACbj2F,EAAI+hB,EAAO0zE,GACXA,IACAjnG,GAAQ,KAAOy2D,EAAG,GAAKoT,EAAG,IAAM,KAAOpT,EAAG,GAAKoT,EAAG,IAAM,KAAOr4D,EAAE,GAAKmS,EAAE,IAAM,KAAOnS,EAAE,GAAKmS,EAAE,IAAM,IAAMnS,EAAE,GAAK,IAAMA,EAAE,GACzH,IAAK,IAAI9O,EAAI,EAAGA,EAAI+kG,EAASzoG,OAAQ0D,IAAKukG,IACxCz1F,EAAI+hB,EAAO0zE,GACXtjF,EAAI8jF,EAAS/kG,GACb1C,GAAQ,KAAOwR,EAAE,GAAKmS,EAAE,IAAM,KAAOnS,EAAE,GAAKmS,EAAE,IAAM,IAAMnS,EAAE,GAAK,IAAMA,EAAE,EAE7E,CACA,GAAImgF,EAAM,CACR,IAAIkW,EAAKt0E,EAAO0zE,GAChBjnG,GAAQ,KAAOwR,EAAE,GAAY,EAAPmS,EAAE,GAAS,GAAK,KAAOnS,EAAE,GAAY,EAAPmS,EAAE,GAAS,GAAK,IAAMkkF,EAAG,GAAK,IAAMA,EAAG,EAC7F,CACA,OAAO7nG,CACT,CACA,SAASunG,GAA4Bh0E,EAAQmzE,GAE3C,IADA,IAA0CjwC,EAAtCgxC,EAAW,GAAIp1F,GAAK,EAAIq0F,GAAW,EAAO78C,EAAKt2B,EAAO,GAAIu0E,EAAKv0E,EAAO,GAAI7wB,EAAI,EAAG9D,EAAI20B,EAAOv0B,SACvF0D,EAAI9D,GACX63D,EAAK5M,EACLA,EAAKi+C,EACLA,EAAKv0E,EAAO7wB,GACZ+kG,EAAS5kG,KAAK,CAAEwP,GAAKy1F,EAAG,GAAKrxC,EAAG,IAAKpkD,GAAKy1F,EAAG,GAAKrxC,EAAG,MAEvD,OAAOgxC,CACT,CACA,SAAST,GAAiBzzE,GACxB,GAAIA,EAAOv0B,OAAS,EAAG,OAAOwnG,GAAkBjzE,GAChD,IAAI7wB,EAAI,EAAG9D,EAAI20B,EAAOv0B,OAAQioG,EAAK1zE,EAAO,GAAImsB,EAAKunD,EAAG,GAAI7oD,EAAK6oD,EAAG,GAAI9Q,EAAK,CAAEz2C,EAAIA,EAAIA,GAAKunD,EAAK1zE,EAAO,IAAI,IAAM6iE,EAAK,CAAEh4C,EAAIA,EAAIA,EAAI6oD,EAAG,IAAMjnG,EAAO,CAAE0/C,EAAI,IAAKtB,EAAI,IAAK8oD,GAAgBC,GAAyBhR,GAAK,IAAK+Q,GAAgBC,GAAyB/Q,IAEnQ,IADA7iE,EAAO1wB,KAAK0wB,EAAO30B,EAAI,MACd8D,GAAK9D,GACZqoG,EAAK1zE,EAAO7wB,GACZyzF,EAAG/qD,QACH+qD,EAAGtzF,KAAKokG,EAAG,IACX7Q,EAAGhrD,QACHgrD,EAAGvzF,KAAKokG,EAAG,IACXG,GAAuBpnG,EAAMm2F,EAAIC,GAInC,OAFA7iE,EAAOinD,MACPx6E,EAAK6C,KAAK,IAAKokG,GACRjnG,EAAKsoE,KAAK,GACnB,CAqDA,SAAS4+B,GAAgB70F,EAAGC,GAC1B,OAAOD,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,EAC5D,CA/IAq0F,GAAyBhnG,SAAQ,SAASL,EAAKjC,GAC7CA,EAAMiC,IAAMA,EACZjC,EAAMw3E,OAAS,WAAW7kB,KAAK1wD,EACjC,IA6IA,IAAIyoG,GAA0B,CAAE,EAAG,EAAI,EAAG,EAAI,EAAG,GAAKC,GAA0B,CAAE,EAAG,EAAI,EAAG,EAAI,EAAG,GAAKb,GAA0B,CAAE,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,GACzJ,SAASC,GAAuBpnG,EAAMM,EAAGC,GACvCP,EAAK6C,KAAK,IAAKqkG,GAAgBa,GAAyBznG,GAAI,IAAK4mG,GAAgBa,GAAyBxnG,GAAI,IAAK2mG,GAAgBc,GAAyB1nG,GAAI,IAAK4mG,GAAgBc,GAAyBznG,GAAI,IAAK2mG,GAAgBC,GAAyB7mG,GAAI,IAAK4mG,GAAgBC,GAAyB5mG,GACpT,CACA,SAASmnG,GAAiBjxC,EAAI5M,GAC5B,OAAQA,EAAG,GAAK4M,EAAG,KAAO5M,EAAG,GAAK4M,EAAG,GACvC,CA0CA,SAASwxC,GAAkB10E,GAEzB,IADA,IAAIwgC,EAAkCtX,EAAGpqC,EAA9B3P,GAAK,EAAG9D,EAAI20B,EAAOv0B,SACrB0D,EAAI9D,GAEX69C,GADAsX,EAAQxgC,EAAO7wB,IACL,GACV2P,EAAI0hD,EAAM,GAAK,GACfA,EAAM,GAAKtX,EAAIh+C,KAAKugC,IAAI3sB,GACxB0hD,EAAM,GAAKtX,EAAIh+C,KAAK4H,IAAIgM,GAE1B,OAAOkhB,CACT,CACA,SAAS20E,GAAYjnB,GACnB,IAAIvhC,EAAKgnC,GAAgBtqE,EAAKsqE,GAAgBtoC,EAAK,EAAG9hC,EAAKqqE,GAAgBlnC,EAAU44B,GAASv1C,EAAc0jE,GAAmBC,EAAiB3jE,EAAYxjC,IAAK6oG,EAAqBrlE,EAAa0sC,EAAI,IAAKk3B,EAAU,GACtN,SAAStsG,EAAK6M,GACZ,IAAwEnI,EAIpDwB,EAAGC,EAJnBg4E,EAAW,GAAI6vB,EAAU,GAAIC,EAAU,GAAI3lG,GAAK,EAAG9D,EAAIqI,EAAKjI,OAAWspG,EAAMhiC,GAAW5mB,GAAK6oD,EAAMjiC,GAAWloB,GAAKoqD,EAAM9oD,IAAOtjC,EAAK,WACvI,OAAO9b,CACT,EAAIgmE,GAAWlqD,GAAKqsF,EAAMrqD,IAAO9hC,EAAK,WACpC,OAAO/b,CACT,EAAI+lE,GAAWhqD,GACf,SAASo8D,IACPH,EAAS11E,KAAK,IAAKigC,EAAYm+C,EAAWonB,GAAU3B,GAAUl3B,EAAG24B,EAAmBlnB,EAAWmnB,EAAQj4D,WAAYu2D,GAAU,IAC/H,CACA,OAAShkG,EAAI9D,GACP6gD,EAAQ5hD,KAAKkD,KAAMjC,EAAImI,EAAKvE,GAAIA,IAClC0lG,EAAQvlG,KAAK,CAAEvC,GAAKgoG,EAAIzqG,KAAKkD,KAAMjC,EAAG4D,GAAInC,GAAKgoG,EAAI1qG,KAAKkD,KAAMjC,EAAG4D,KACjE2lG,EAAQxlG,KAAK,EAAG2lG,EAAI3qG,KAAKkD,KAAMjC,EAAG4D,IAAK+lG,EAAI5qG,KAAKkD,KAAMjC,EAAG4D,MAChD0lG,EAAQppG,SACjB05E,IACA0vB,EAAU,GACVC,EAAU,IAId,OADID,EAAQppG,QAAQ05E,IACbH,EAASv5E,OAASu5E,EAASjQ,KAAK,IAAM,IAC/C,CAgDA,OA/CAluE,EAAKkG,EAAI,SAASmqD,GAChB,OAAKxiD,UAAUjJ,QACf0gD,EAAKtjC,EAAKquC,EACHrwD,GAFuBgiB,CAGhC,EACAhiB,EAAKslD,GAAK,SAAS+K,GACjB,OAAKxiD,UAAUjJ,QACf0gD,EAAK+K,EACErwD,GAFuBslD,CAGhC,EACAtlD,EAAKgiB,GAAK,SAASquC,GACjB,OAAKxiD,UAAUjJ,QACfod,EAAKquC,EACErwD,GAFuBgiB,CAGhC,EACAhiB,EAAKmG,EAAI,SAASkqD,GAChB,OAAKxiD,UAAUjJ,QACfo/C,EAAK9hC,EAAKmuC,EACHrwD,GAFuBkiB,CAGhC,EACAliB,EAAKgkD,GAAK,SAASqM,GACjB,OAAKxiD,UAAUjJ,QACfo/C,EAAKqM,EACErwD,GAFuBgkD,CAGhC,EACAhkD,EAAKkiB,GAAK,SAASmuC,GACjB,OAAKxiD,UAAUjJ,QACfsd,EAAKmuC,EACErwD,GAFuBkiB,CAGhC,EACAliB,EAAKqlD,QAAU,SAASgL,GACtB,OAAKxiD,UAAUjJ,QACfygD,EAAUgL,EACHrwD,GAFuBqlD,CAGhC,EACArlD,EAAK0oC,YAAc,SAAS2nB,GAC1B,OAAKxiD,UAAUjJ,QACcynG,EAAZ,mBAANh8C,EAAmC3nB,EAAc2nB,GAA0B3nB,EAAc6jE,GAAyBp7E,IAAIk/B,IAAM+7C,IAAmBlnG,IAC1J6oG,EAAqBrlE,EAAYqN,SAAWrN,EAC5C0sC,EAAI1sC,EAAY+xC,OAAS,IAAM,IACxBz6E,GAJuBqsG,CAKhC,EACArsG,EAAKssG,QAAU,SAASj8C,GACtB,OAAKxiD,UAAUjJ,QACf0nG,EAAUj8C,EACHrwD,GAFuBssG,CAGhC,EACOtsG,CACT,CAoEA,SAASsuG,GAAmB5pG,GAC1B,OAAOA,EAAE29B,MACX,CA+BA,SAASksE,GAA0B7pG,GACjC,MAAO,CAAEA,EAAEwB,EAAGxB,EAAEyB,EAClB,CA+BA,SAASqoG,KACP,OAAO,EACT,CACA,SAASC,KACP,MAAO,QACT,CACA,SAASC,GAAoBrlG,GAC3B,IAAIg5C,EAAIh+C,KAAKogC,KAAKp7B,EAAO,IACzB,MAAO,MAAQg5C,EAAI,IAAMA,EAAI,IAAMA,EAAI,aAAeA,EAAI,IAAMA,EAAI,IAAMA,EAAI,YAAcA,EAAI,GAClG,CAxOAz7C,EAAGqP,IAAI1W,KAAKovG,OAAS,WACnB,IAAIpvG,EAAO4sG,GAAY0B,IAGvB,OAFAtuG,EAAK8iC,OAAS9iC,EAAK2G,SAAU3G,EAAK2G,EAClC3G,EAAK4yB,MAAQ5yB,EAAK4G,SAAU5G,EAAK4G,EAC1B5G,CACT,EAqFAktG,GAAsB12D,QAAU22D,GAChCA,GAAqB32D,QAAU02D,GAC/B7lG,EAAGqP,IAAIjW,KAAO,WACZ,OAAO8tG,GAAY/8C,EACrB,EACAnqD,EAAGqP,IAAIjW,KAAK2uG,OAAS,WACnB,IAAI3uG,EAAO8tG,GAAYD,IAOvB,OANA7tG,EAAKqiC,OAASriC,EAAKkG,SAAUlG,EAAKkG,EAClClG,EAAKuiC,YAAcviC,EAAKslD,UAAWtlD,EAAKslD,GACxCtlD,EAAK2jC,YAAc3jC,EAAKgiB,UAAWhiB,EAAKgiB,GACxChiB,EAAKmyB,MAAQnyB,EAAKmG,SAAUnG,EAAKmG,EACjCnG,EAAKmjC,WAAanjC,EAAKgkD,UAAWhkD,EAAKgkD,GACvChkD,EAAKojC,SAAWpjC,EAAKkiB,UAAWliB,EAAKkiB,GAC9BliB,CACT,EACA4G,EAAGqP,IAAIymF,MAAQ,WACb,IAAIljE,EAASsvD,GAAWxrF,EAASyrF,GAAW1mD,EAASisE,GAAoBnrE,EAAagnE,GAAsB/mE,EAAWgnE,GACvH,SAAS1N,EAAMh4F,EAAG4D,GAChB,IAac2P,EAAGC,EAbb3N,EAAI4pD,EAASxtD,KAAM6yB,EAAQ90B,EAAG4D,GAAIihB,EAAI4qC,EAASxtD,KAAMrJ,EAAQoH,EAAG4D,GACpE,MAAO,IAAMiC,EAAE8xD,GAAKx8D,EAAI0K,EAAE83C,EAAG93C,EAAEklD,GAAIllD,EAAEs3E,GAAKt3E,EAAEw7E,KAY3B7tE,EAZ4CqR,IAY/CtR,EAZ4C1N,GAajDw7E,IAAM7tE,EAAE6tE,IAAM9tE,EAAE4pE,IAAM3pE,EAAE2pE,GAbiC+sB,EAAMrkG,EAAE83C,EAAG93C,EAAEklD,GAAIllD,EAAE83C,EAAG93C,EAAE8xD,IAAMuyC,EAAMrkG,EAAE83C,EAAG93C,EAAEklD,GAAIlmC,EAAE84B,EAAG94B,EAAE8yC,IAAMx8D,EAAI0pB,EAAE84B,EAAG94B,EAAEkmC,GAAIlmC,EAAEs4D,GAAKt4D,EAAEw8D,IAAM6oB,EAAMrlF,EAAE84B,EAAG94B,EAAEkmC,GAAIllD,EAAE83C,EAAG93C,EAAE8xD,KAAO,IAC7L,CACA,SAASlI,EAAS3wD,EAAMmqB,EAAGjpB,EAAG4D,GAC5B,IAAI6rD,EAAWxmC,EAAElqB,KAAKD,EAAMkB,EAAG4D,GAAI+5C,EAAIhgB,EAAO5+B,KAAKD,EAAM2wD,EAAU7rD,GAAIy9E,EAAK5iD,EAAW1/B,KAAKD,EAAM2wD,EAAU7rD,GAAK,GAAOu5E,EAAKz+C,EAAS3/B,KAAKD,EAAM2wD,EAAU7rD,GAAK,GAChK,MAAO,CACL+5C,EAAGA,EACH0jC,GAAIA,EACJlE,GAAIA,EACJxlB,GAAI,CAAEha,EAAIh+C,KAAKugC,IAAImhD,GAAK1jC,EAAIh+C,KAAK4H,IAAI85E,IACrCt2B,GAAI,CAAEpN,EAAIh+C,KAAKugC,IAAIi9C,GAAKx/B,EAAIh+C,KAAK4H,IAAI41E,IAEzC,CAIA,SAAShiF,EAAIwiD,EAAGjrC,EAAGa,GACjB,MAAO,IAAMoqC,EAAI,IAAMA,EAAI,SAAUpqC,EAAI,IAAK,MAAQb,CACxD,CACA,SAASw3F,EAAM3xC,EAAIZ,EAAIpqC,EAAIw9B,GACzB,MAAO,SAAWA,CACpB,CA0BA,OAzBAitC,EAAMr6D,OAAS,SAASz+B,GACtB,OAAKiK,UAAUjJ,QACfy9B,EAAS6pC,GAAWtoE,GACb84F,GAFuBr6D,CAGhC,EACAq6D,EAAMljE,OAAS,SAAS51B,GACtB,OAAKiK,UAAUjJ,QACf40B,EAAS0yC,GAAWtoE,GACb84F,GAFuBljE,CAGhC,EACAkjE,EAAMp/F,OAAS,SAASsG,GACtB,OAAKiK,UAAUjJ,QACftH,EAAS4uE,GAAWtoE,GACb84F,GAFuBp/F,CAGhC,EACAo/F,EAAMv5D,WAAa,SAASv/B,GAC1B,OAAKiK,UAAUjJ,QACfu+B,EAAa+oC,GAAWtoE,GACjB84F,GAFuBv5D,CAGhC,EACAu5D,EAAMt5D,SAAW,SAASx/B,GACxB,OAAKiK,UAAUjJ,QACfw+B,EAAW8oC,GAAWtoE,GACf84F,GAFuBt5D,CAGhC,EACOs5D,CACT,EAIA91F,EAAGqP,IAAI44F,SAAW,WAChB,IAAIr1E,EAASsvD,GAAWxrF,EAASyrF,GAAWlC,EAAa0nB,GACzD,SAASM,EAASnqG,EAAG4D,GACnB,IAAI+zD,EAAK7iC,EAAO/1B,KAAKkD,KAAMjC,EAAG4D,GAAIwmG,EAAKxxG,EAAOmG,KAAKkD,KAAMjC,EAAG4D,GAAIomD,GAAK2N,EAAGl2D,EAAI2oG,EAAG3oG,GAAK,EAAGiR,EAAI,CAAEilD,EAAI,CAC/Fn2D,EAAGm2D,EAAGn2D,EACNC,EAAGuoD,GACF,CACDxoD,EAAG4oG,EAAG5oG,EACNC,EAAGuoD,GACFogD,GAEH,MAAO,KADP13F,EAAIA,EAAE9M,IAAIu8E,IACK,GAAK,IAAMzvE,EAAE,GAAK,IAAMA,EAAE,GAAK,IAAMA,EAAE,EACxD,CAgBA,OAfAy3F,EAASr1E,OAAS,SAAStzB,GACzB,OAAK2H,UAAUjJ,QACf40B,EAAS0yC,GAAWhmE,GACb2oG,GAFuBr1E,CAGhC,EACAq1E,EAASvxG,OAAS,SAAS4I,GACzB,OAAK2H,UAAUjJ,QACftH,EAAS4uE,GAAWhmE,GACb2oG,GAFuBvxG,CAGhC,EACAuxG,EAAShoB,WAAa,SAAS3gF,GAC7B,OAAK2H,UAAUjJ,QACfiiF,EAAa3gF,EACN2oG,GAFuBhoB,CAGhC,EACOgoB,CACT,EAIAjoG,EAAGqP,IAAI44F,SAASF,OAAS,WACvB,IAAIE,EAAWjoG,EAAGqP,IAAI44F,WAAYhoB,EAAa0nB,GAA2BQ,EAAcF,EAAShoB,WAIjG,OAHAgoB,EAAShoB,WAAa,SAAS3gF,GAC7B,OAAO2H,UAAUjJ,OAASmqG,EAI9B,SAAyCloB,GACvC,OAAO,WACL,IAAIniF,EAAImiF,EAAWr+E,MAAM7B,KAAMkH,WAAYw0C,EAAI39C,EAAE,GAAIuT,EAAIvT,EAAE,GAAK,GAChE,MAAO,CAAE29C,EAAIh+C,KAAKugC,IAAI3sB,GAAIoqC,EAAIh+C,KAAK4H,IAAIgM,GACzC,CACF,CAT0C+2F,CAAgCnoB,EAAa3gF,IAAM2gF,CAC3F,EACOgoB,CACT,EAOAjoG,EAAGqP,IAAI45D,OAAS,WACd,IAAI9tD,EAAO0sF,GAAmBplG,EAAOmlG,GACrC,SAAS3+B,EAAOnrE,EAAG4D,GACjB,OAAQ2mG,GAAe99E,IAAIpP,EAAKte,KAAKkD,KAAMjC,EAAG4D,KAAOomG,IAAqBrlG,EAAK5F,KAAKkD,KAAMjC,EAAG4D,GAC/F,CAWA,OAVAunE,EAAO9tD,KAAO,SAAS7b,GACrB,OAAK2H,UAAUjJ,QACfmd,EAAOmqD,GAAWhmE,GACX2pE,GAFuB9tD,CAGhC,EACA8tD,EAAOxmE,KAAO,SAASnD,GACrB,OAAK2H,UAAUjJ,QACfyE,EAAO6iE,GAAWhmE,GACX2pE,GAFuBxmE,CAGhC,EACOwmE,CACT,EAWA,IAAIo/B,GAAiBroG,EAAG0D,IAAI,CAC1B3K,OAAQ+uG,GACRQ,MAAO,SAAS7lG,GACd,IAAIg5C,EAAIh+C,KAAKogC,KAAKp7B,EAAO,GAAK,EAC9B,MAAO,KAAO,EAAIg5C,EAAI,KAAOA,EAAI,KAAOA,EAAI,KAAO,EAAIA,EAAI,IAAMA,EAAI,KAAOA,EAAI,IAAM,EAAIA,EAAI,IAAMA,EAAI,IAAMA,EAAI,IAAM,EAAIA,EAAI,KAAOA,EAAI,IAAMA,EAAI,KAAO,EAAIA,EAAI,GACtK,EACA8sD,QAAS,SAAS9lG,GAChB,IAAI2oF,EAAK3tF,KAAKogC,KAAKp7B,GAAQ,EAAI+lG,KAAsBrd,EAAKC,EAAKod,GAC/D,MAAO,OAASpd,EAAK,IAAMD,EAApB,QAAwCC,EAAK,KAAOD,EAApD,KACT,EACAsd,OAAQ,SAAShmG,GACf,IAAIg5C,EAAIh+C,KAAKogC,KAAKp7B,GAAQ,EAC1B,MAAO,KAAOg5C,EAAI,KAAOA,EAAI,IAAMA,EAAI,KAAOA,EAAI,IAAMA,EAAI,IAAMA,EAAI,KAAOA,EAAI,IAAMA,EAAI,GAC7F,EACA,gBAAiB,SAASh5C,GACxB,IAAI0oF,EAAK1tF,KAAKogC,KAAKp7B,EAAOimG,IAAqBtd,EAAKD,EAAKud,GAAqB,EAC9E,MAAO,MAAQtd,EAAK,IAAMD,EAAK,KAAOC,EAAK,KAAOD,EAAK,KAAOC,EAAK,GACrE,EACA,cAAe,SAAS3oF,GACtB,IAAI0oF,EAAK1tF,KAAKogC,KAAKp7B,EAAOimG,IAAqBtd,EAAKD,EAAKud,GAAqB,EAC9E,MAAO,OAAStd,EAAK,IAAMD,EAAK,IAAMC,EAAK,KAAOD,EAAK,IAAMC,EAAK,GACpE,IAEFprF,EAAGqP,IAAIs5F,YAAcN,GAAepqG,OACpC,IAAIyqG,GAAqBjrG,KAAKogC,KAAK,GAAI2qE,GAAqB/qG,KAAKknE,IAAI,GAAK/P,IAC1EjI,EAAsB1pD,WAAa,SAASwqC,GAO1C,IANA,IAAyG8f,EAAU7lD,EAA/G0D,EAAKouD,MAA4BovC,GAAiB16C,EAAK26C,GAAuBp7D,GAAOigB,EAAY,GAAoBzqD,EAAa6lG,IAAwB,CAC5J99F,KAAMmG,KAAK40C,MACXvvB,KAAMk7D,GACNlpB,MAAO,EACPh3D,SAAU,KAEH2jB,GAAK,EAAG2yB,EAAI/nD,KAAK/B,SAAUm3B,EAAI2yB,GAAK,CAC3C4F,EAAU7rD,KAAK0rD,EAAW,IAC1B,IAAK,IAAIE,EAAQ1tD,KAAKo1B,GAAIzzB,GAAK,EAAG9D,EAAI6vD,EAAMzvD,SAAU0D,EAAI9D,IACpD8J,EAAO+lD,EAAM/rD,KAAIqnG,GAAkBrhG,EAAMhG,EAAGwsD,EAAI9iD,EAAInI,GACxDsqD,EAAS1rD,KAAK6F,EAElB,CACA,OAAOshG,GAAct7C,EAAWQ,EAAI9iD,EACtC,EACAuhD,EAAsBs8C,UAAY,SAASx7D,GACzC,OAAO1tC,KAAK8C,KAAa,MAAR4qC,EAAewqB,GAAyBixC,GAAyBL,GAAuBp7D,IAC3G,EACA,IAAIwqB,GAAyBixC,GAAyBL,MACtD,SAASK,GAAyBh7C,GAChC,OAAO,WACL,IAAIi7C,EAAMC,EAAUC,GACfF,EAAOppG,KAAKmuD,MAASm7C,EAASF,EAAKC,EAAWD,EAAKE,WACtDA,EAAOliF,MAAM0R,EAAI,KACjBwwE,EAAOliF,MAAMxE,EAAI7F,MACXqsF,EAAKl4F,aAAck4F,EAAKC,UAAuBrpG,KAAKmuD,GAC1Di7C,EAAKE,QAAU,GACfA,EAAOlyD,OAASkyD,EAAOlyD,MAAM8xD,UAAUpsG,KAAKkD,KAAMA,KAAKk5B,SAAUowE,EAAOzlG,OAE5E,CACF,CACA,SAASolG,GAAcnxE,EAAQq2B,EAAI9iD,GAIjC,OAHAqhD,EAAY50B,EAAQyxE,IACpBzxE,EAAOw3B,UAAYnB,EACnBr2B,EAAOzsB,GAAKA,EACLysB,CACT,CACA,IAAsD2hC,GAAwBsvC,GAA1EQ,GAAyB,GAAIV,GAAkB,EAkEnD,SAASW,GAAoB1xE,EAAQ4V,EAAMpxC,EAAOo9D,GAChD,IAAIruD,EAAKysB,EAAOzsB,GAAI8iD,EAAKr2B,EAAOw3B,UAChC,OAAOQ,GAAkBh4B,EAAyB,mBAAVx7B,EAAuB,SAASqL,EAAMhG,EAAGyzB,GAC/EztB,EAAKwmD,GAAI9iD,GAAIquD,MAAMjvC,IAAIijB,EAAMgsB,EAAMp9D,EAAMQ,KAAK6K,EAAMA,EAAKuxB,SAAUv3B,EAAGyzB,IACxE,GAAK94B,EAAQo9D,EAAMp9D,GAAQ,SAASqL,GAClCA,EAAKwmD,GAAI9iD,GAAIquD,MAAMjvC,IAAIijB,EAAMpxC,EAC/B,GACF,CAmFA,SAASmtG,GAAmBl4F,GAE1B,OADS,MAALA,IAAWA,EAAI,IACZ,WACLvR,KAAK25C,YAAcpoC,CACrB,CACF,CA2EA,SAASu3F,GAAuBp7D,GAC9B,OAAe,MAARA,EAAe,iBAAmB,gBAAkBA,EAAO,IACpE,CACA,SAASs7D,GAAkBrhG,EAAMhG,EAAGwsD,EAAI9iD,EAAIq+F,GAC1C,IAG2Bz+F,EAAMmc,EAAO3V,EAAUglB,EAAMkzE,EAHpDP,EAAOzhG,EAAKwmD,KAAQxmD,EAAKwmD,GAAM,CACjCm7C,OAAQ,EACRp4F,MAAO,IACLhO,EAAakmG,EAAK/9F,GAOtB,SAAS7J,EAAMooG,GACb,IAAIP,EAAWD,EAAKE,OAAQA,EAASF,EAAKC,GAQ1C,IAAK,IAAIQ,KAPLP,IACFA,EAAOliF,MAAM0R,EAAI,KACjBwwE,EAAOliF,MAAMxE,EAAI7F,MACfqsF,EAAKl4F,aACAk4F,EAAKC,GACZC,EAAOlyD,OAASkyD,EAAOlyD,MAAM8xD,UAAUpsG,KAAK6K,EAAMA,EAAKuxB,SAAUowE,EAAOzlG,QAErDulG,EACnB,IAAKS,EAAWx+F,EAAI,CAClB,IAAIy+F,EAASV,EAAKS,GAClBC,EAAO1iF,MAAM0R,EAAI,KACjBgxE,EAAO1iF,MAAMxE,EAAI7F,MACfqsF,EAAKl4F,aACAk4F,EAAKS,EACd,CAEFziF,EAAM0R,EAAIr2B,EACV+lE,IAAS,WAKP,OAJIphD,EAAM0R,GAAKr2B,EAAKmnG,GAAW,KAC7BxiF,EAAM0R,EAAI,KACV1R,EAAMxE,EAAI7F,KAEL,CACT,GAAG,EAAG9R,GACNm+F,EAAKE,OAASj+F,EACdnI,EAAWk0C,OAASl0C,EAAWk0C,MAAM51C,MAAM1E,KAAK6K,EAAMA,EAAKuxB,SAAUv3B,GACrEgoG,EAAS,GACTzmG,EAAWw2D,MAAM96D,SAAQ,SAASL,EAAKjC,IACjCA,EAAQA,EAAMQ,KAAK6K,EAAMA,EAAKuxB,SAAUv3B,KAC1CgoG,EAAO7nG,KAAKxF,EAEhB,IACAm6B,EAAOvzB,EAAWuzB,KAClBhlB,EAAWvO,EAAWuO,QACxB,CACA,SAAShP,EAAKmnG,GAEZ,IADA,IAAIhnF,EAAIgnF,EAAUn4F,EAAUgP,EAAIgW,EAAK7T,GAAI/kB,EAAI8rG,EAAO1rG,OAC7CJ,EAAI,GACT8rG,IAAS9rG,GAAGf,KAAK6K,EAAM8Y,GAEzB,GAAImC,GAAK,EAGP,OAFA1f,EAAWk0C,OAASl0C,EAAWk0C,MAAMnmC,IAAInU,KAAK6K,EAAMA,EAAKuxB,SAAUv3B,KAC7DynG,EAAKl4F,aAAck4F,EAAK/9F,UAAiB1D,EAAKwmD,GAC7C,CAEX,CACKjrD,IACH+H,EAAOy+F,EAAQz+F,KACfmc,EAAQohD,IAxDV,SAAkBohC,GAChB,IAAInhC,EAAQvlE,EAAWulE,MAEvB,GADArhD,EAAMxE,EAAI6lD,EAAQx9D,EACdw9D,GAASmhC,EAAS,OAAOpoG,EAAMooG,EAAUnhC,GAC7CrhD,EAAM0R,EAAIt3B,CACZ,GAmD6B,EAAGyJ,GAC9B/H,EAAakmG,EAAK/9F,GAAM,CACtBquD,MAAO,IAAIjQ,EACXx+C,KAAMA,EACNmc,MAAOA,EACPqhD,MAAOihC,EAAQjhC,MACfh3D,SAAUi4F,EAAQj4F,SAClBglB,KAAMizE,EAAQjzE,KACd5yB,MAAOlC,GAET+nG,EAAU,OACRN,EAAKl4F,MAEX,CAxTAq4F,GAAuBzsG,KAAO8vD,EAAsB9vD,KACpDysG,GAAuBhwG,MAAQqzD,EAAsBrzD,MACrDgwG,GAAuB5hG,KAAOilD,EAAsBjlD,KACpD4hG,GAAuB7mG,KAAOkqD,EAAsBlqD,KACpDzC,EAAGiD,WAAa,SAAS9B,EAAWssC,GAClC,OAAOtsC,GAAaA,EAAU8B,WAAau2D,GAAyBr4D,EAAU8B,WAAWwqC,GAAQtsC,EAAYnB,EAAGmB,YAAY8B,WAAW9B,EACzI,EACAnB,EAAGiD,WAAWtH,UAAY2tG,GAC1BA,GAAuB1mG,OAAS,SAASs0C,GACvC,IAAuDqW,EAAUC,EAAS9lD,EAAtE0D,EAAKrL,KAAKqL,GAAI8iD,EAAKnuD,KAAKsvD,UAAW3B,EAAY,GACnDxW,EAAWmW,EAAsBnW,GACjC,IAAK,IAAI/hB,GAAK,EAAG2yB,EAAI/nD,KAAK/B,SAAUm3B,EAAI2yB,GAAK,CAC3C4F,EAAU7rD,KAAK0rD,EAAW,IAC1B,IAAK,IAAIE,EAAQ1tD,KAAKo1B,GAAIzzB,GAAK,EAAG9D,EAAI6vD,EAAMzvD,SAAU0D,EAAI9D,IACnD8J,EAAO+lD,EAAM/rD,MAAQ8rD,EAAUtW,EAASr6C,KAAK6K,EAAMA,EAAKuxB,SAAUv3B,EAAGyzB,KACpE,aAAcztB,IAAM8lD,EAAQv0B,SAAWvxB,EAAKuxB,UAChD8vE,GAAkBv7C,EAAS9rD,EAAGwsD,EAAI9iD,EAAI1D,EAAKwmD,GAAI9iD,IAC/CmiD,EAAS1rD,KAAK2rD,IAEdD,EAAS1rD,KAAK,KAGpB,CACA,OAAOmnG,GAAct7C,EAAWQ,EAAI9iD,EACtC,EACAk+F,GAAuBtjG,UAAY,SAASkxC,GAC1C,IAAuDqW,EAAUu8C,EAAUpiG,EAAM8lD,EAASvqD,EAAtFmI,EAAKrL,KAAKqL,GAAI8iD,EAAKnuD,KAAKsvD,UAAW3B,EAAY,GACnDxW,EAAWoW,EAAyBpW,GACpC,IAAK,IAAI/hB,GAAK,EAAG2yB,EAAI/nD,KAAK/B,SAAUm3B,EAAI2yB,GACtC,IAAK,IAAI2F,EAAQ1tD,KAAKo1B,GAAIzzB,GAAK,EAAG9D,EAAI6vD,EAAMzvD,SAAU0D,EAAI9D,GACxD,GAAI8J,EAAO+lD,EAAM/rD,GAAI,CACnBuB,EAAayE,EAAKwmD,GAAI9iD,GACtB0+F,EAAW5yD,EAASr6C,KAAK6K,EAAMA,EAAKuxB,SAAUv3B,EAAGyzB,GACjDu4B,EAAU7rD,KAAK0rD,EAAW,IAC1B,IAAK,IAAIvhB,GAAK,EAAG9uC,EAAI4sG,EAAS9rG,SAAUguC,EAAI9uC,IACtCswD,EAAUs8C,EAAS99D,KAAI+8D,GAAkBv7C,EAASxhB,EAAGkiB,EAAI9iD,EAAInI,GACjEsqD,EAAS1rD,KAAK2rD,EAElB,CAGJ,OAAOw7C,GAAct7C,EAAWQ,EAAI9iD,EACtC,EACAk+F,GAAuBpxF,OAAS,SAASA,GACvC,IAAoBq1C,EAAiB7lD,EAAjCgmD,EAAY,GACM,mBAAXx1C,IAAuBA,EAASw3C,GAAoBx3C,IAC/D,IAAK,IAAIid,EAAI,EAAG2yB,EAAI/nD,KAAK/B,OAAQm3B,EAAI2yB,EAAG3yB,IAAK,CAC3Cu4B,EAAU7rD,KAAK0rD,EAAW,IAC1B,IAAK,IAAIE,EAAiB/rD,EAAI,EAAG9D,GAAxB6vD,EAAQ1tD,KAAKo1B,IAAqBn3B,OAAQ0D,EAAI9D,EAAG8D,KACnDgG,EAAO+lD,EAAM/rD,KAAOwW,EAAOrb,KAAK6K,EAAMA,EAAKuxB,SAAUv3B,EAAGyzB,IAC3Do4B,EAAS1rD,KAAK6F,EAGpB,CACA,OAAOshG,GAAct7C,EAAW3tD,KAAKsvD,UAAWtvD,KAAKqL,GACvD,EACAk+F,GAAuB7vC,MAAQ,SAAShsB,EAAMgsB,GAC5C,IAAIruD,EAAKrL,KAAKqL,GAAI8iD,EAAKnuD,KAAKsvD,UAC5B,OAAIpoD,UAAUjJ,OAAS,EAAU+B,KAAK2H,OAAOwmD,GAAI9iD,GAAIquD,MAAMlvC,IAAIkjB,GACxDoiB,GAAkB9vD,KAAe,MAAT05D,EAAgB,SAAS/xD,GACtDA,EAAKwmD,GAAI9iD,GAAIquD,MAAMjzD,OAAOinC,EAC5B,EAAI,SAAS/lC,GACXA,EAAKwmD,GAAI9iD,GAAIquD,MAAMjvC,IAAIijB,EAAMgsB,EAC/B,EACF,EASA6vC,GAAuBloG,KAAO,SAAS2oG,EAAQ1tG,GAC7C,GAAI4K,UAAUjJ,OAAS,EAAG,CACxB,IAAK3B,KAAS0tG,EAAQhqG,KAAKqB,KAAK/E,EAAO0tG,EAAO1tG,IAC9C,OAAO0D,IACT,CACA,IAAI+hC,EAAwB,aAAVioE,EAAwB1W,GAA0BpF,GAAgBxgD,EAAOztC,EAAGkuD,GAAGC,QAAQ47C,GACzG,SAASC,IACPjqG,KAAKsuD,gBAAgB5gB,EACvB,CACA,SAASw8D,IACPlqG,KAAKquD,kBAAkB3gB,EAAKgZ,MAAOhZ,EAAKiZ,MAC1C,CAiBA,OAAO6iD,GAAoBxpG,KAAM,QAAUgqG,EAAQ1tG,EAAOoxC,EAAKiZ,MAR/D,SAAqBp1C,GACnB,OAAY,MAALA,EAAY24F,GAAc34F,GAAK,GAAI,WACxC,IAAqD5P,EAAjD2P,EAAItR,KAAKiwD,eAAeviB,EAAKgZ,MAAOhZ,EAAKiZ,OAC7C,OAAOr1C,IAAMC,IAAM5P,EAAIogC,EAAYzwB,EAAGC,GAAI,SAASqR,GACjD5iB,KAAKsmD,eAAe5Y,EAAKgZ,MAAOhZ,EAAKiZ,MAAOhlD,EAAEihB,GAChD,EACF,EACF,EAfA,SAAmBrR,GACjB,OAAY,MAALA,EAAY04F,GAAY14F,GAAK,GAAI,WACtC,IAAiC5P,EAA7B2P,EAAItR,KAAKmuB,aAAauf,GAC1B,OAAOp8B,IAAMC,IAAM5P,EAAIogC,EAAYzwB,EAAGC,GAAI,SAASqR,GACjD5iB,KAAKkuB,aAAawf,EAAM/rC,EAAEihB,GAC5B,EACF,EACF,EAUF,EACA2mF,GAAuBznE,UAAY,SAASkoE,EAAQtwC,GAClD,IAAIhsB,EAAOztC,EAAGkuD,GAAGC,QAAQ47C,GAazB,OAAOhqG,KAAK05D,MAAM,QAAUswC,EAAQt8D,EAAKiZ,MANzC,SAAqB5oD,EAAG4D,GACtB,IAAIqlB,EAAI0yC,EAAM58D,KAAKkD,KAAMjC,EAAG4D,EAAG3B,KAAKiwD,eAAeviB,EAAKgZ,MAAOhZ,EAAKiZ,QACpE,OAAO3/B,GAAK,SAASpE,GACnB5iB,KAAKsmD,eAAe5Y,EAAKgZ,MAAOhZ,EAAKiZ,MAAO3/B,EAAEpE,GAChD,CACF,EAXA,SAAmB7kB,EAAG4D,GACpB,IAAIqlB,EAAI0yC,EAAM58D,KAAKkD,KAAMjC,EAAG4D,EAAG3B,KAAKmuB,aAAauf,IACjD,OAAO1mB,GAAK,SAASpE,GACnB5iB,KAAKkuB,aAAawf,EAAM1mB,EAAEpE,GAC5B,CACF,EAQF,EACA2mF,GAAuBjjG,MAAQ,SAASonC,EAAMpxC,EAAOsqD,GACnD,IAAI/oD,EAAIqJ,UAAUjJ,OAClB,GAAIJ,EAAI,EAAG,CACT,GAAoB,iBAAT6vC,EAAmB,CAE5B,IAAKkZ,KADD/oD,EAAI,IAAGvB,EAAQ,IACFoxC,EAAM1tC,KAAKsG,MAAMsgD,EAAUlZ,EAAKkZ,GAAWtqD,GAC5D,OAAO0D,IACT,CACA4mD,EAAW,EACb,CACA,SAASujD,IACPnqG,KAAKsG,MAAM6oD,eAAezhB,EAC5B,CASA,OAAO87D,GAAoBxpG,KAAM,SAAW0tC,EAAMpxC,GARlD,SAAqBiV,GACnB,OAAY,MAALA,EAAY44F,GAAa54F,GAAK,GAAI,WACvC,IAA6E5P,EAAzE2P,EAAIq0C,EAAU3lD,MAAMmwD,iBAAiBnwD,KAAM,MAAMowD,iBAAiB1iB,GACtE,OAAOp8B,IAAMC,IAAM5P,EAAIusF,GAAe58E,EAAGC,GAAI,SAASqR,GACpD5iB,KAAKsG,MAAM2/C,YAAYvY,EAAM/rC,EAAEihB,GAAIgkC,EACrC,EACF,EACF,GAEF,EACA2iD,GAAuBa,WAAa,SAAS18D,EAAMgsB,EAAO9S,GAQxD,OAPI1/C,UAAUjJ,OAAS,IAAG2oD,EAAW,IAO9B5mD,KAAK05D,MAAM,SAAWhsB,GAN7B,SAAoB3vC,EAAG4D,GACrB,IAAIqlB,EAAI0yC,EAAM58D,KAAKkD,KAAMjC,EAAG4D,EAAGgkD,EAAU3lD,MAAMmwD,iBAAiBnwD,KAAM,MAAMowD,iBAAiB1iB,IAC7F,OAAO1mB,GAAK,SAASpE,GACnB5iB,KAAKsG,MAAM2/C,YAAYvY,EAAM1mB,EAAEpE,GAAIgkC,EACrC,CACF,GAEF,EACA2iD,GAAuB/vG,KAAO,SAAS8C,GACrC,OAAOktG,GAAoBxpG,KAAM,OAAQ1D,EAAOmtG,GAClD,EAOAF,GAAuB9iG,OAAS,WAC9B,IAAI0nD,EAAKnuD,KAAKsvD,UACd,OAAOtvD,KAAK8C,KAAK,kBAAkB,WACjC,IAAI2N,EACAzQ,KAAKmuD,GAAIj9C,MAAQ,IAAMT,EAAIzQ,KAAKulB,aAAa9U,EAAEg/C,YAAYzvD,KACjE,GACF,EACAupG,GAAuB9yE,KAAO,SAASn6B,GACrC,IAAI+O,EAAKrL,KAAKqL,GAAI8iD,EAAKnuD,KAAKsvD,UAC5B,OAAIpoD,UAAUjJ,OAAS,EAAU+B,KAAK2H,OAAOwmD,GAAI9iD,GAAIorB,MAChC,mBAAVn6B,IAAsBA,EAAQ2D,EAAGw2B,KAAK50B,MAAM5B,EAAIiH,YACpD4oD,GAAkB9vD,MAAM,SAAS2H,GACtCA,EAAKwmD,GAAI9iD,GAAIorB,KAAOn6B,CACtB,IACF,EACAitG,GAAuB9gC,MAAQ,SAASnsE,GACtC,IAAI+O,EAAKrL,KAAKqL,GAAI8iD,EAAKnuD,KAAKsvD,UAC5B,OAAIpoD,UAAUjJ,OAAS,EAAU+B,KAAK2H,OAAOwmD,GAAI9iD,GAAIo9D,MAC9C3Y,GAAkB9vD,KAAuB,mBAAV1D,EAAuB,SAASqL,EAAMhG,EAAGyzB,GAC7EztB,EAAKwmD,GAAI9iD,GAAIo9D,OAASnsE,EAAMQ,KAAK6K,EAAMA,EAAKuxB,SAAUv3B,EAAGyzB,EAC3D,GAAK94B,GAASA,EAAO,SAASqL,GAC5BA,EAAKwmD,GAAI9iD,GAAIo9D,MAAQnsE,CACvB,GACF,EACAitG,GAAuB93F,SAAW,SAASnV,GACzC,IAAI+O,EAAKrL,KAAKqL,GAAI8iD,EAAKnuD,KAAKsvD,UAC5B,OAAIpoD,UAAUjJ,OAAS,EAAU+B,KAAK2H,OAAOwmD,GAAI9iD,GAAIoG,SAC9Cq+C,GAAkB9vD,KAAuB,mBAAV1D,EAAuB,SAASqL,EAAMhG,EAAGyzB,GAC7EztB,EAAKwmD,GAAI9iD,GAAIoG,SAAW/T,KAAK+G,IAAI,EAAGnI,EAAMQ,KAAK6K,EAAMA,EAAKuxB,SAAUv3B,EAAGyzB,GACzE,GAAK94B,EAAQoB,KAAK+G,IAAI,EAAGnI,GAAQ,SAASqL,GACxCA,EAAKwmD,GAAI9iD,GAAIoG,SAAWnV,CAC1B,GACF,EACAitG,GAAuBzmG,KAAO,SAASsY,EAAMywC,GAC3C,IAAIxgD,EAAKrL,KAAKqL,GAAI8iD,EAAKnuD,KAAKsvD,UAC5B,GAAIpoD,UAAUjJ,OAAS,EAAG,CACxB,IAAIyrG,EAAUX,GAAsBsB,EAAY5wC,GAChD,IACEA,GAAyBpuD,EACzBykD,GAAkB9vD,MAAM,SAAS2H,EAAMhG,EAAGyzB,GACxC2zE,GAAuBphG,EAAKwmD,GAAI9iD,GAChC+P,EAAKte,KAAK6K,EAAMA,EAAKuxB,SAAUv3B,EAAGyzB,EACpC,GACF,CAAE,QACA2zE,GAAuBW,EACvBjwC,GAAyB4wC,CAC3B,CACF,MACEv6C,GAAkB9vD,MAAM,SAAS2H,GAC/B,IAAIzE,EAAayE,EAAKwmD,GAAI9iD,IACzBnI,EAAWk0C,QAAUl0C,EAAWk0C,MAAQn3C,EAAGyrD,SAAS,QAAS,MAAO,eAAexyC,GAAGkC,EAAMywC,EAC/F,IAEF,OAAO7rD,IACT,EACAupG,GAAuBrmG,WAAa,WAElC,IADA,IAAiFsqD,EAAiB7lD,EAAMzE,EAApGonG,EAAMtqG,KAAKqL,GAAIk/F,IAAQ1B,GAAiB16C,EAAKnuD,KAAKsvD,UAAW3B,EAAY,GACpEv4B,EAAI,EAAG2yB,EAAI/nD,KAAK/B,OAAQm3B,EAAI2yB,EAAG3yB,IAAK,CAC3Cu4B,EAAU7rD,KAAK0rD,EAAW,IAC1B,IAAK,IAAIE,EAAiB/rD,EAAI,EAAG9D,GAAxB6vD,EAAQ1tD,KAAKo1B,IAAqBn3B,OAAQ0D,EAAI9D,EAAG8D,KACpDgG,EAAO+lD,EAAM/rD,KAEfqnG,GAAkBrhG,EAAMhG,EAAGwsD,EAAIo8C,EAAK,CAClCt/F,MAFF/H,EAAayE,EAAKwmD,GAAIm8C,IAEHr/F,KACjBwrB,KAAMvzB,EAAWuzB,KACjBgyC,MAAOvlE,EAAWulE,MAAQvlE,EAAWuO,SACrCA,SAAUvO,EAAWuO,WAGzB+7C,EAAS1rD,KAAK6F,EAElB,CACA,OAAOshG,GAAct7C,EAAWQ,EAAIo8C,EACtC,EA+EAtqG,EAAGqP,IAAIhV,KAAO,WACZ,IAAqKkwG,EAAjKtqG,EAAQD,EAAGC,MAAMC,SAAUE,EAASoqG,GAA0BnqG,EAAgB,EAAGC,EAAgB,EAAGE,EAAc,EAAGiqG,EAAiB,CAAE,IAAMhqG,EAAa,KAC/J,SAASpG,EAAKoL,GACZA,EAAE5C,MAAK,WACL,IAEqkB6C,EAFjkBD,EAAIzF,EAAG4C,OAAO7C,MACd8F,EAAS9F,KAAK+F,WAAa7F,EAAO8F,EAAShG,KAAK+F,UAAY7F,EAAMgC,OAClEN,EAAsB,MAAdlB,EAAqBsF,EAAOpE,MAAQoE,EAAOpE,MAAMC,MAAMmE,EAAQ0kG,GAAkB1kG,EAAOzE,SAAWb,EAAYC,EAA4B,MAAf6pG,EAAsBxkG,EAAOrF,WAAaqF,EAAOrF,WAAWkB,MAAMmE,EAAQ0kG,GAAkBtgD,EAAcogD,EAAa/nG,EAAOiD,EAAEO,UAAU,SAASC,KAAKtE,EAAOoE,GAASG,EAAY1D,EAAK2D,QAAQC,OAAO,IAAK,WAAWhF,KAAK,QAAS,QAAQiF,MAAM,UAAW,IAAIC,EAAWtG,EAAGiD,WAAWT,EAAK+D,QAAQF,MAAM,UAAW,IAAGG,SAAUC,EAAazG,EAAGiD,WAAWT,EAAKwsC,SAAS3oC,MAAM,UAAW,GAAIqkG,EAAcjtG,KAAK+G,IAAInE,EAAe,GAAKG,EACpjBL,EAAQs8F,GAAc12F,GAAS/G,EAAOyG,EAAEO,UAAU,WAAWC,KAAK,CAAE,IAAMa,GAAc9H,EAAKmH,QAAQO,OAAO,QAAQtF,KAAK,QAAS,UACtIpB,EAAGiD,WAAWjE,IACdkH,EAAUQ,OAAO,QACjBR,EAAUQ,OAAO,QACjB,IAAoQ0U,EAAIC,EAAIC,EAAIjS,EAA5QshG,EAAYzkG,EAAUtD,OAAO,QAAS+D,EAAaF,EAAW7D,OAAO,QAASrJ,EAAOiJ,EAAKI,OAAO,QAAQrJ,KAAKmH,GAAakqG,EAAY1kG,EAAUtD,OAAO,QAASgE,EAAaH,EAAW7D,OAAO,QAAS+uB,EAAkB,QAAXvxB,GAA+B,SAAXA,GAAqB,EAAI,EAcjQ,GAbe,WAAXA,GAAkC,QAAXA,GACzBsF,EAAgBmlG,GAAczvF,EAAK,IAAKE,EAAK,IAAKD,EAAK,KAAMhS,EAAK,KAClE9P,EAAK6H,KAAK,KAAMuwB,EAAO,EAAI,MAAQ,SAAStrB,MAAM,cAAe,UACjES,EAAW1F,KAAK,IAAK,IAAMjB,EAAM,GAAK,IAAMwxB,EAAOrxB,EAAgB,MAAQH,EAAM,GAAK,IAAMwxB,EAAOrxB,KAEnGoF,EAAgBolG,GAAc1vF,EAAK,IAAKE,EAAK,IAAKD,EAAK,KAAMhS,EAAK,KAClE9P,EAAK6H,KAAK,KAAM,SAASiF,MAAM,cAAesrB,EAAO,EAAI,MAAQ,SACjE7qB,EAAW1F,KAAK,IAAK,IAAMuwB,EAAOrxB,EAAgB,IAAMH,EAAM,GAAK,MAAQA,EAAM,GAAK,IAAMwxB,EAAOrxB,IAErGqqG,EAAUvpG,KAAKiI,EAAIsoB,EAAOtxB,GAC1BuqG,EAAUxpG,KAAKka,EAAIqW,EAAO+4E,GAC1B/jG,EAAWvF,KAAKia,EAAI,GAAGja,KAAKiI,EAAIsoB,EAAOtxB,GACvCuG,EAAWxF,KAAKga,EAAI,GAAGha,KAAKka,EAAIqW,EAAO+4E,GACnC3kG,EAAOgB,UAAW,CACpB,IAAIzH,EAAIyG,EAAQiB,EAAK1H,EAAEyH,YAAc,EACrClB,EAASE,EAAS,SAASjI,GACzB,OAAOwB,EAAExB,GAAKkJ,CAChB,CACF,MAAWnB,EAAOkB,UAChBlB,EAASE,EAETO,EAASzJ,KAAK6I,EAAeK,EAAQF,GAEvCK,EAAUrJ,KAAK6I,EAAeG,EAAQE,GACtCU,EAAW5J,KAAK6I,EAAeK,EAAQA,EACzC,GACF,CAmDA,OAlDA1L,EAAK4F,MAAQ,SAASX,GACpB,OAAK2H,UAAUjJ,QACfiC,EAAQX,EACDjF,GAFuB4F,CAGhC,EACA5F,EAAK+F,OAAS,SAASd,GACrB,OAAK2H,UAAUjJ,QACfoC,EAASd,KAAKyrG,GAAqBzrG,EAAI,GAAKkrG,GACrCnwG,GAFuB+F,CAGhC,EACA/F,EAAKsH,MAAQ,WACX,OAAKsF,UAAUjJ,QACfysG,EAAiBrlD,EAASn+C,WACnB5M,GAFuBowG,CAGhC,EACApwG,EAAKoG,WAAa,SAASnB,GACzB,OAAK2H,UAAUjJ,QACfyC,EAAanB,EACNjF,GAFuBoG,CAGhC,EACApG,EAAKqG,WAAa,SAASpB,GACzB,OAAK2H,UAAUjJ,QACfusG,EAAcjrG,EACPjF,GAFuBkwG,CAGhC,EACAlwG,EAAK2wG,SAAW,SAAS1rG,GACvB,IAAI1B,EAAIqJ,UAAUjJ,OAClB,OAAKJ,GACLyC,GAAiBf,EACjBgB,GAAiB2G,UAAUrJ,EAAI,GACxBvD,GAHQgG,CAIjB,EACAhG,EAAKgG,cAAgB,SAASf,GAC5B,OAAK2H,UAAUjJ,QACfqC,GAAiBf,EACVjF,GAFuBgG,CAGhC,EACAhG,EAAKiG,cAAgB,SAAShB,GAC5B,OAAK2H,UAAUjJ,QACfsC,GAAiBhB,EACVjF,GAFuBiG,CAGhC,EACAjG,EAAKmG,YAAc,SAASlB,GAC1B,OAAK2H,UAAUjJ,QACfwC,GAAelB,EACRjF,GAFuBmG,CAGhC,EACAnG,EAAK4wG,cAAgB,WACnB,OAAOhkG,UAAUjJ,QAAU3D,CAC7B,EACOA,CACT,EACA,IAAImwG,GAA2B,SAAUO,GAAqB,CAC5D7jG,IAAK,EACLC,MAAO,EACPC,OAAQ,EACRC,KAAM,GAER,SAASwjG,GAAa1pG,EAAWu9C,EAAItjC,GACnCja,EAAUC,KAAK,aAAa,SAAStD,GACnC,IAAI0iF,EAAK9hC,EAAG5gD,GACZ,MAAO,cAAgBgwB,SAAS0yD,GAAMA,EAAKplE,EAAGtd,IAAM,KACtD,GACF,CACA,SAASgtG,GAAa3pG,EAAWi8C,EAAI9hC,GACnCna,EAAUC,KAAK,aAAa,SAAStD,GACnC,IAAI0iF,EAAKpjC,EAAGt/C,GACZ,MAAO,gBAAkBgwB,SAAS0yD,GAAMA,EAAKllE,EAAGxd,IAAM,GACxD,GACF,CACAkC,EAAGqP,IAAIrX,MAAQ,WACb,IAAoIkzG,EAAeC,EAA/Ih0D,EAAQ6U,EAAiBh0D,EAAO,aAAc,QAAS,YAAasH,EAAI,KAAMC,EAAI,KAAM6rG,EAAU,CAAE,EAAG,GAAKC,EAAU,CAAE,EAAG,GAAmCC,GAAS,EAAMC,GAAS,EAAMC,EAAUC,GAAoB,GAC9N,SAASzzG,EAAMyN,GACbA,EAAE5C,MAAK,WACL,IAAI4C,EAAIzF,EAAG4C,OAAO7C,MAAMsG,MAAM,iBAAkB,OAAOA,MAAM,8BAA+B,iBAAiB4S,GAAG,kBAAmByyF,GAAYzyF,GAAG,mBAAoByyF,GAClK9yD,EAAanzC,EAAEO,UAAU,eAAeC,KAAK,CAAE,IACnD2yC,EAAWzyC,QAAQO,OAAO,QAAQtF,KAAK,QAAS,cAAciF,MAAM,aAAc,UAAUA,MAAM,SAAU,aAC5GZ,EAAEO,UAAU,WAAWC,KAAK,CAAE,IAAKE,QAAQO,OAAO,QAAQtF,KAAK,QAAS,UAAUiF,MAAM,SAAU,QAClG,IAAIqtB,EAASjuB,EAAEO,UAAU,WAAWC,KAAKulG,EAASrhD,GAClDz2B,EAAOntB,OAAOC,SACdktB,EAAOvtB,QAAQO,OAAO,KAAKtF,KAAK,SAAS,SAAStD,GAChD,MAAO,UAAYA,CACrB,IAAGuI,MAAM,UAAU,SAASvI,GAC1B,OAAO6tG,GAAmB7tG,EAC5B,IAAG4I,OAAO,QAAQtF,KAAK,KAAK,SAAStD,GACnC,MAAO,QAAQkxD,KAAKlxD,IAAM,EAAI,IAChC,IAAGsD,KAAK,KAAK,SAAStD,GACpB,MAAO,QAAQkxD,KAAKlxD,IAAM,EAAI,IAChC,IAAGsD,KAAK,QAAS,GAAGA,KAAK,SAAU,GAAGiF,MAAM,aAAc,UAC1DqtB,EAAOrtB,MAAM,UAAWrO,EAAMsB,QAAU,OAAS,MACjD,IAA8E6G,EAA1EyrG,EAAU5rG,EAAGiD,WAAWwC,GAAIomG,EAAmB7rG,EAAGiD,WAAW21C,GAC7Dt5C,IACFa,EAAQs8F,GAAcn9F,GACtBusG,EAAiBzqG,KAAK,IAAKjB,EAAM,IAAIiB,KAAK,QAASjB,EAAM,GAAKA,EAAM,IACpE2rG,EAAQF,IAENrsG,IACFY,EAAQs8F,GAAcl9F,GACtBssG,EAAiBzqG,KAAK,IAAKjB,EAAM,IAAIiB,KAAK,SAAUjB,EAAM,GAAKA,EAAM,IACrE4rG,EAAQH,IAEVj6F,EAAOi6F,EACT,GACF,CAuDA,SAASj6F,EAAOlM,GACdA,EAAEO,UAAU,WAAW5E,KAAK,aAAa,SAAStD,GAChD,MAAO,aAAestG,GAAS,KAAKp8C,KAAKlxD,IAAM,IAAMutG,GAAS,KAAKr8C,KAAKlxD,IAAM,GAChF,GACF,CACA,SAASguG,EAAQrmG,GACfA,EAAE7C,OAAO,WAAWxB,KAAK,IAAKgqG,EAAQ,IACtC3lG,EAAEO,UAAU,2BAA2B5E,KAAK,QAASgqG,EAAQ,GAAKA,EAAQ,GAC5E,CACA,SAASW,EAAQtmG,GACfA,EAAE7C,OAAO,WAAWxB,KAAK,IAAKiqG,EAAQ,IACtC5lG,EAAEO,UAAU,2BAA2B5E,KAAK,SAAUiqG,EAAQ,GAAKA,EAAQ,GAC7E,CACA,SAASK,IACP,IAAyU/5D,EAAmCiJ,EAAxWlkD,EAASqJ,KAAMisG,EAAchsG,EAAG4C,OAAO5C,EAAGm3C,MAAMzgD,QAASu1G,EAAS90D,EAAM8U,GAAGv1D,EAAQuQ,WAAYxB,EAAIzF,EAAG4C,OAAOlM,GAASw1G,EAAWF,EAAYh2D,QAASm2D,GAAa,UAAUn9C,KAAKk9C,IAAa5sG,EAAG8sG,GAAa,UAAUp9C,KAAKk9C,IAAa3sG,EAAG+U,EAAW03F,EAAY97F,QAAQ,UAAWykD,EAActC,GAAsB37D,GAAiBsgD,EAASh3C,EAAG+5B,MAAMrjC,GAC/ViM,EAAI3C,EAAG4C,OAAO8iD,EAAUhvD,IAASuiB,GAAG,iBAsBxC,WAC0B,IAApBjZ,EAAGm3C,MAAMk1D,UACN/3F,IACHq9B,EAAS,KACTqF,EAAO,IAAMo0D,EAAQ,GACrBp0D,EAAO,IAAMq0D,EAAQ,GACrB/2F,EAAW,GAEbu3C,IAEJ,IAhCkE5yC,GAAG,eAiCrE,WAC0B,IAApBjZ,EAAGm3C,MAAMk1D,SAA6B,GAAZ/3F,IAC5B0iC,EAAO,IAAMo0D,EAAQ,GACrBp0D,EAAO,IAAMq0D,EAAQ,GACrB/2F,EAAW,EACXu3C,IAEJ,IAjCA,GANI7rD,EAAGm3C,MAAMyb,eACXjwD,EAAEsW,GAAG,kBAAmBqzF,GAAWrzF,GAAG,iBAAkBszF,GAExD5pG,EAAEsW,GAAG,kBAAmBqzF,GAAWrzF,GAAG,gBAAiBszF,GAEzD9mG,EAAEwjG,YAAYjjG,UAAU,KAAKijG,YACzB30F,EACF0iC,EAAO,GAAKo0D,EAAQ,GAAKp0D,EAAO,GAChCA,EAAO,GAAKq0D,EAAQ,GAAKr0D,EAAO,QAC3B,GAAIk1D,EAAU,CACnB,IAAIzuD,GAAM,KAAKuR,KAAKk9C,GAAWxuD,GAAM,KAAKsR,KAAKk9C,GAC/CtxD,EAAS,CAAEwwD,EAAQ,EAAI3tD,GAAMzG,EAAO,GAAIq0D,EAAQ,EAAI3tD,GAAM1G,EAAO,IACjEA,EAAO,GAAKo0D,EAAQ3tD,GACpBzG,EAAO,GAAKq0D,EAAQ3tD,EACtB,MAAW19C,EAAGm3C,MAAMkD,SAAQ1I,EAASqF,EAAOzyC,SA0B5C,SAAS+nG,IACP,IAAIv5C,EAAQ/yD,EAAG+5B,MAAMrjC,GAAS+hE,GAAQ,EAClC7d,IACFmY,EAAM,IAAMnY,EAAO,GACnBmY,EAAM,IAAMnY,EAAO,IAEhBtmC,IACCtU,EAAGm3C,MAAMkD,QACN1I,IAAQA,EAAS,EAAGy5D,EAAQ,GAAKA,EAAQ,IAAM,GAAIC,EAAQ,GAAKA,EAAQ,IAAM,IACnFr0D,EAAO,GAAKo0D,IAAUr4C,EAAM,GAAKphB,EAAO,KACxCqF,EAAO,GAAKq0D,IAAUt4C,EAAM,GAAKphB,EAAO,MACnCA,EAAS,MAEdw6D,GAAaK,EAAMz5C,EAAOzzD,EAAG,KAC/BwsG,EAAQrmG,GACRgzD,GAAQ,GAEN2zC,GAAaI,EAAMz5C,EAAOxzD,EAAG,KAC/BwsG,EAAQtmG,GACRgzD,GAAQ,GAENA,IACF9mD,EAAOlM,GACPwmG,EAAO,CACL9wF,KAAM,QACNokF,KAAMjrF,EAAW,OAAS,WAGhC,CACA,SAASk4F,EAAMz5C,EAAO9yD,EAAOyB,GAC3B,IAAoJlC,EAAKgF,EAArJrE,EAAQs8F,GAAcx8F,GAAQo2D,EAAKl2D,EAAM,GAAIkrB,EAAKlrB,EAAM,GAAI6M,EAAWgqC,EAAOt1C,GAAIgX,EAAShX,EAAI2pG,EAAUD,EAAS3oG,EAAOiW,EAAO,GAAKA,EAAO,GAiBhJ,GAhBIpE,IACF+hD,GAAMrpD,EACNqe,GAAM5oB,EAAOuK,GAEfxN,GAAOkC,EAAI6pG,EAASD,GAAU7tG,KAAK+G,IAAI6xD,EAAI54D,KAAK+B,IAAI6rB,EAAI0nC,EAAMrxD,KAAOqxD,EAAMrxD,GACvE4S,EACF9P,GAAOhF,GAAOwN,GAAYvK,GAEtBkvC,IAAQ3kC,EAAWvP,KAAK+G,IAAI6xD,EAAI54D,KAAK+B,IAAI6rB,EAAI,EAAIsmB,EAAOjwC,GAAKlC,KAC7DwN,EAAWxN,GACbgF,EAAMhF,EACNA,EAAMwN,GAENxI,EAAMwI,GAGN0L,EAAO,IAAMlZ,GAAOkZ,EAAO,IAAMlU,EAInC,OAHI9C,EAAGypG,EAAgB,KAAWD,EAAgB,KAClDxyF,EAAO,GAAKlZ,EACZkZ,EAAO,GAAKlU,GACL,CAEX,CACA,SAAS+nG,IACPD,IACA7mG,EAAEY,MAAM,iBAAkB,OAAOL,UAAU,WAAWK,MAAM,UAAWrO,EAAMsB,QAAU,OAAS,MAChG0G,EAAG4C,OAAO,QAAQyD,MAAM,SAAU,MAClC1D,EAAEsW,GAAG,kBAAmB,MAAMA,GAAG,gBAAiB,MAAMA,GAAG,kBAAmB,MAAMA,GAAG,iBAAkB,MAAMA,GAAG,gBAAiB,MAAMA,GAAG,cAAe,MAC3J07C,IACAs3C,EAAO,CACL9wF,KAAM,YAEV,CAxFA1V,EAAEY,MAAM,iBAAkB,QAAQL,UAAU,WAAWK,MAAM,UAAW,MACxErG,EAAG4C,OAAO,QAAQyD,MAAM,SAAU2lG,EAAY3lG,MAAM,WACpD4lG,EAAO,CACL9wF,KAAM,eAERmxF,GAoFF,CAqEA,OAnPAt0G,EAAMm/C,MAAQ,SAAS1xC,GACrBA,EAAE5C,MAAK,WACL,IAAIopG,EAAS90D,EAAM8U,GAAGlsD,KAAMkH,WAAYwlG,EAAU,CAChDntG,EAAG8rG,EACH7rG,EAAG8rG,EACH3pG,EAAGwpG,EACH/1E,EAAGg2E,GACFuB,EAAU3sG,KAAK+F,WAAa2mG,EAC/B1sG,KAAK+F,UAAY2mG,EACbjzC,GACFx5D,EAAG4C,OAAO7C,MAAMkD,aAAaJ,KAAK,eAAe,WAC/CqoG,EAAgBwB,EAAQhrG,EACxBypG,EAAgBuB,EAAQv3E,EACxBi2E,EAAUsB,EAAQptG,EAClB+rG,EAAUqB,EAAQntG,EAClB0sG,EAAO,CACL9wF,KAAM,cAEV,IAAGs+C,MAAM,eAAe,WACtB,IAAIkoC,EAAKvR,GAAoBgb,EAASqB,EAAQntG,GAAIqtG,EAAKvc,GAAoBib,EAASoB,EAAQltG,GAE5F,OADA2rG,EAAgBC,EAAgB,KACzB,SAASxoF,GACdyoF,EAAUqB,EAAQntG,EAAIqiG,EAAGh/E,GACzB0oF,EAAUoB,EAAQltG,EAAIotG,EAAGhqF,GACzBspF,EAAO,CACL9wF,KAAM,QACNokF,KAAM,UAEV,CACF,IAAG18F,KAAK,aAAa,WACnBqoG,EAAgBuB,EAAQ/qG,EACxBypG,EAAgBsB,EAAQt3E,EACxB82E,EAAO,CACL9wF,KAAM,QACNokF,KAAM,WAER0M,EAAO,CACL9wF,KAAM,YAEV,KAEA8wF,EAAO,CACL9wF,KAAM,eAER8wF,EAAO,CACL9wF,KAAM,QACNokF,KAAM,WAER0M,EAAO,CACL9wF,KAAM,aAGZ,GACF,EA0HAnjB,EAAMsH,EAAI,SAAS2lD,GACjB,OAAKh+C,UAAUjJ,QAEfwtG,EAAUC,KADVnsG,EAAI2lD,IACgC,GAAK1lD,GAClCvH,GAHuBsH,CAIhC,EACAtH,EAAMuH,EAAI,SAAS0lD,GACjB,OAAKh+C,UAAUjJ,QAEfwtG,EAAUC,IAAqBnsG,GAAK,IADpCC,EAAI0lD,IAEGjtD,GAHuBuH,CAIhC,EACAvH,EAAMooG,MAAQ,SAASn7C,GACrB,OAAKh+C,UAAUjJ,QACXsB,GAAKC,GAAG+rG,IAAWrmD,EAAE,GAAIsmD,IAAWtmD,EAAE,IAAa3lD,EAAGgsG,IAAWrmD,EAAY1lD,IAAGgsG,IAAWtmD,GACxFjtD,GAFuBsH,GAAKC,EAAI,CAAE+rG,EAAQC,GAAWjsG,EAAIgsG,EAAS/rG,EAAIgsG,EAAS,IAGxF,EACAvzG,EAAM0gB,OAAS,SAASusC,GACtB,IAAIvG,EAAItjC,EAAIgiC,EAAI9hC,EAAIqH,EACpB,OAAK1b,UAAUjJ,QAqBXsB,IACFo/C,EAAKuG,EAAE,GAAI7pC,EAAK6pC,EAAE,GACd1lD,IAAGm/C,EAAKA,EAAG,GAAItjC,EAAKA,EAAG,IAC3B8vF,EAAgB,CAAExsD,EAAItjC,GAClB9b,EAAEs4D,SAAQlZ,EAAKp/C,EAAEo/C,GAAKtjC,EAAK9b,EAAE8b,IAC7BA,EAAKsjC,IAAI/7B,EAAI+7B,EAAIA,EAAKtjC,EAAIA,EAAKuH,GAC/B+7B,GAAM0sD,EAAQ,IAAMhwF,GAAMgwF,EAAQ,KAAIA,EAAU,CAAE1sD,EAAItjC,KAExD7b,IACF69C,EAAK6H,EAAE,GAAI3pC,EAAK2pC,EAAE,GACd3lD,IAAG89C,EAAKA,EAAG,GAAI9hC,EAAKA,EAAG,IAC3B6vF,EAAgB,CAAE/tD,EAAI9hC,GAClB/b,EAAEq4D,SAAQxa,EAAK79C,EAAE69C,GAAK9hC,EAAK/b,EAAE+b,IAC7BA,EAAK8hC,IAAIz6B,EAAIy6B,EAAIA,EAAK9hC,EAAIA,EAAKqH,GAC/By6B,GAAMiuD,EAAQ,IAAM/vF,GAAM+vF,EAAQ,KAAIA,EAAU,CAAEjuD,EAAI9hC,KAErDtjB,IApCDsH,IACE4rG,GACFxsD,EAAKwsD,EAAc,GAAI9vF,EAAK8vF,EAAc,KAE1CxsD,EAAK0sD,EAAQ,GAAIhwF,EAAKgwF,EAAQ,GAC1B9rG,EAAEs4D,SAAQlZ,EAAKp/C,EAAEs4D,OAAOlZ,GAAKtjC,EAAK9b,EAAEs4D,OAAOx8C,IAC3CA,EAAKsjC,IAAI/7B,EAAI+7B,EAAIA,EAAKtjC,EAAIA,EAAKuH,KAGnCpjB,IACE4rG,GACF/tD,EAAK+tD,EAAc,GAAI7vF,EAAK6vF,EAAc,KAE1C/tD,EAAKiuD,EAAQ,GAAI/vF,EAAK+vF,EAAQ,GAC1B9rG,EAAEq4D,SAAQxa,EAAK79C,EAAEq4D,OAAOxa,GAAK9hC,EAAK/b,EAAEq4D,OAAOt8C,IAC3CA,EAAK8hC,IAAIz6B,EAAIy6B,EAAIA,EAAK9hC,EAAIA,EAAKqH,KAGhCrjB,GAAKC,EAAI,CAAE,CAAEm/C,EAAItB,GAAM,CAAEhiC,EAAIE,IAAShc,EAAI,CAAEo/C,EAAItjC,GAAO7b,GAAK,CAAE69C,EAAI9hC,GAmB7E,EACAtjB,EAAMw3B,MAAQ,WAKZ,OAJKx3B,EAAMsB,UACT8xG,EAAU,CAAE,EAAG,GAAKC,EAAU,CAAE,EAAG,GACnCH,EAAgBC,EAAgB,MAE3BnzG,CACT,EACAA,EAAMsB,MAAQ,WACZ,QAASgG,GAAK8rG,EAAQ,IAAMA,EAAQ,MAAQ7rG,GAAK8rG,EAAQ,IAAMA,EAAQ,EACzE,EACOrrG,EAAGqrD,OAAOrzD,EAAOm/C,EAAO,KACjC,EACA,IAAIw0D,GAAqB,CACvB/tG,EAAG,YACH4iB,EAAG,YACH7c,EAAG,YACHhB,EAAG,YACHiqG,GAAI,cACJC,GAAI,cACJC,GAAI,cACJC,GAAI,eAEFtB,GAAsB,CAAE,CAAE,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,MAAQ,CAAE,IAAK,KAAO,CAAE,IAAK,KAAO,IACpGt9B,GAAiBlD,GAAQ3jE,OAAS0qE,GAAeD,WACjDi7B,GAAoB7+B,GAAel5D,IACnCg4F,GAAoBD,GAAkB,yBAE1C,SAASE,GAAwBvhG,GAC/B,OAAOA,EAAKwhG,aACd,CA6CA,SAASC,GAAcltG,EAAQqiF,EAASj7E,GACtC,SAASrH,EAAMX,GACb,OAAOY,EAAOZ,EAChB,CASA,SAAS+tG,EAAW30F,EAAQzH,GAC1B,IAAkCva,GAAvBgiB,EAAO,GAAKA,EAAO,IAAoBzH,EAAOvP,EAAI1B,EAAGmoD,OAAOmlD,GAAoB52G,GAC3F,OAAOgL,GAAK4rG,GAAmBtvG,OAAS,CAAEukF,EAAQtR,KAAMyvB,GAAyBhoF,EAAOhV,KAAI,SAAS5F,GACnG,OAAOA,EAAI,OACb,IAAImT,GAAO,IAAQvP,EAAgF6gF,EAAQ7rF,EAAS42G,GAAmB5rG,EAAI,GAAK4rG,GAAmB5rG,GAAKhL,EAASgL,EAAI,EAAIA,GAAlK,CAAE6rG,GAA2B7M,GAAyBhoF,EAAQzH,GAAO,GAC9F,CA+BA,OA5CAhR,EAAM23D,OAAS,SAASt4D,GACtB,OAAOkuG,GAAkBttG,EAAO03D,OAAOt4D,GACzC,EACAW,EAAMqB,OAAS,SAAShC,GACtB,OAAK2H,UAAUjJ,QACfkC,EAAOoB,OAAOhC,GACPW,GAFuBC,EAAOoB,SAASoC,IAAI8pG,GAGpD,EAOAvtG,EAAM48F,KAAO,SAASp1F,EAAUgmG,GAC9B,IAAInsG,EAASrB,EAAMqB,SAAUoX,EAAS8jF,GAAel7F,GAAS+oD,EAAqB,MAAZ5iD,EAAmB4lG,EAAW30F,EAAQ,IAA0B,iBAAbjR,GAAyB4lG,EAAW30F,EAAQjR,GAEtK,SAASimG,EAAQ/hG,GACf,OAAQ6b,MAAM7b,KAAUlE,EAAStH,MAAMwL,EAAM6hG,IAAmB7hG,EAAO,GAAI8hG,GAAMzvG,MACnF,CACA,OAJIqsD,IAAQ5iD,EAAW4iD,EAAO,GAAIojD,EAAOpjD,EAAO,IAIzCpqD,EAAMqB,OAAOs7F,GAAct7F,EAAQmsG,EAAO,EAAI,CACnD/lD,MAAO,SAAS/7C,GACd,KAAO+hG,EAAQ/hG,EAAOlE,EAASigD,MAAM/7C,KAAQA,EAAO6hG,GAAkB7hG,EAAO,GAC7E,OAAOA,CACT,EACAjO,KAAM,SAASiO,GACb,KAAO+hG,EAAQ/hG,EAAOlE,EAAS/J,KAAKiO,KAAQA,EAAO6hG,IAAmB7hG,EAAO,GAC7E,OAAOA,CACT,GACElE,GACN,EACAxH,EAAM0B,MAAQ,SAAS8F,EAAUgmG,GAC/B,IAAI/0F,EAAS8jF,GAAev8F,EAAMqB,UAAW+oD,EAAqB,MAAZ5iD,EAAmB4lG,EAAW30F,EAAQ,IAA0B,iBAAbjR,EAAwB4lG,EAAW30F,EAAQjR,IAAaA,EAAStH,OAAS,CAAE,CACnLA,MAAOsH,GACNgmG,GAEH,OADIpjD,IAAQ5iD,EAAW4iD,EAAO,GAAIojD,EAAOpjD,EAAO,IACzC5iD,EAAStH,MAAMuY,EAAO,GAAI80F,IAAmB90F,EAAO,GAAK,GAAI+0F,EAAO,EAAI,EAAIA,EACrF,EACAxtG,EAAMS,WAAa,WACjB,OAAO4G,CACT,EACArH,EAAMgC,KAAO,WACX,OAAOmrG,GAAcltG,EAAO+B,OAAQsgF,EAASj7E,EAC/C,EACOm5F,GAAsBxgG,EAAOC,EACtC,CACA,SAASstG,GAAkB7qF,GACzB,OAAO,IAAIxR,KAAKwR,EAClB,CApGAwrD,GAAew/B,IAAMx8F,KAAKxV,UAAUwxG,cAAgB,IAAIh8F,KAAK,4BAA8B+7F,GAA0BD,GAIrHC,GAAwB3lF,MAAQ,SAAS0I,GACvC,IAAItkB,EAAO,IAAIwF,KAAK8e,GACpB,OAAOzI,MAAM7b,GAAQ,KAAOA,CAC9B,EACAuhG,GAAwB/oG,SAAW8oG,GAAkB9oG,SACrD8mE,GAAQ2iC,OAAS5gC,IAAiB,SAASrhE,GACzC,OAAO,IAAIu/D,GAAiC,IAAzBztE,KAAKiqD,MAAM/7C,EAAO,KACvC,IAAG,SAASA,EAAMivC,GAChBjvC,EAAKohE,QAAQphE,EAAK6mC,UAAiC,IAArB/0C,KAAKiqD,MAAM9M,GAC3C,IAAG,SAASjvC,GACV,OAAOA,EAAK0J,YACd,IACA41D,GAAQ4iC,QAAU5iC,GAAQ2iC,OAAOztG,MACjC8qE,GAAQ4iC,QAAQ54F,IAAMg2D,GAAQ2iC,OAAO34F,IAAI9U,MACzC8qE,GAAQ6iC,OAAS9gC,IAAiB,SAASrhE,GACzC,OAAO,IAAIu/D,GAAiC,IAAzBztE,KAAKiqD,MAAM/7C,EAAO,KACvC,IAAG,SAASA,EAAMivC,GAChBjvC,EAAKohE,QAAQphE,EAAK6mC,UAAiC,IAArB/0C,KAAKiqD,MAAM9M,GAC3C,IAAG,SAASjvC,GACV,OAAOA,EAAK2J,YACd,IACA21D,GAAQ8iC,QAAU9iC,GAAQ6iC,OAAO3tG,MACjC8qE,GAAQ8iC,QAAQ94F,IAAMg2D,GAAQ6iC,OAAO74F,IAAI9U,MACzC8qE,GAAQ+iC,KAAOhhC,IAAiB,SAASrhE,GACvC,IAAIsiG,EAAWtiG,EAAKkgE,oBAAsB,GAC1C,OAAO,IAAIX,GAA0D,MAAjDztE,KAAKiqD,MAAM/7C,EAAO,KAAOsiG,GAAYA,GAC3D,IAAG,SAAStiG,EAAMivC,GAChBjvC,EAAKohE,QAAQphE,EAAK6mC,UAAiC,KAArB/0C,KAAKiqD,MAAM9M,GAC3C,IAAG,SAASjvC,GACV,OAAOA,EAAK4J,UACd,IACA01D,GAAQijC,MAAQjjC,GAAQ+iC,KAAK7tG,MAC7B8qE,GAAQijC,MAAMj5F,IAAMg2D,GAAQ+iC,KAAK/4F,IAAI9U,MACrC8qE,GAAQkjC,MAAQnhC,IAAiB,SAASrhE,GAGxC,OAFAA,EAAOs/D,GAAQiG,IAAIvlE,IACdmgE,QAAQ,GACNngE,CACT,IAAG,SAASA,EAAMivC,GAChBjvC,EAAKghE,SAAShhE,EAAK+J,WAAaklC,EAClC,IAAG,SAASjvC,GACV,OAAOA,EAAK+J,UACd,IACAu1D,GAAQ+C,OAAS/C,GAAQkjC,MAAMhuG,MAC/B8qE,GAAQ+C,OAAO/4D,IAAMg2D,GAAQkjC,MAAMl5F,IAAI9U,MAsDvC,IAAImtG,GAAqB,CAAE,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,SACnIc,GAA4B,CAAE,CAAEnjC,GAAQ2iC,OAAQ,GAAK,CAAE3iC,GAAQ2iC,OAAQ,GAAK,CAAE3iC,GAAQ2iC,OAAQ,IAAM,CAAE3iC,GAAQ2iC,OAAQ,IAAM,CAAE3iC,GAAQ6iC,OAAQ,GAAK,CAAE7iC,GAAQ6iC,OAAQ,GAAK,CAAE7iC,GAAQ6iC,OAAQ,IAAM,CAAE7iC,GAAQ6iC,OAAQ,IAAM,CAAE7iC,GAAQ+iC,KAAM,GAAK,CAAE/iC,GAAQ+iC,KAAM,GAAK,CAAE/iC,GAAQ+iC,KAAM,GAAK,CAAE/iC,GAAQ+iC,KAAM,IAAM,CAAE/iC,GAAQiG,IAAK,GAAK,CAAEjG,GAAQiG,IAAK,GAAK,CAAEjG,GAAQmG,KAAM,GAAK,CAAEnG,GAAQkjC,MAAO,GAAK,CAAEljC,GAAQkjC,MAAO,GAAK,CAAEljC,GAAQgG,KAAM,IACxao9B,GAA2BlgC,GAAeh5D,MAAM,CAAE,CAAE,MAAO,SAASrX,GACtE,OAAOA,EAAEsX,iBACX,GAAK,CAAE,MAAO,SAAStX,GACrB,OAAOA,EAAEuX,YACX,GAAK,CAAE,QAAS,SAASvX,GACvB,OAAOA,EAAEwX,YACX,GAAK,CAAE,QAAS,SAASxX,GACvB,OAAOA,EAAEyX,UACX,GAAK,CAAE,QAAS,SAASzX,GACvB,OAAOA,EAAE0X,UAA2B,GAAf1X,EAAE2X,SACzB,GAAK,CAAE,QAAS,SAAS3X,GACvB,OAAsB,GAAfA,EAAE2X,SACX,GAAK,CAAE,KAAM,SAAS3X,GACpB,OAAOA,EAAE4X,UACX,GAAK,CAAE,KAAM2hE,MACTk2B,GAA4B,CAC9BptG,MAAO,SAASoB,EAAOC,EAAMm2C,GAC3B,OAAO33C,EAAGG,MAAM1C,KAAKC,KAAK6D,EAAQo2C,GAAQA,GAAOn2C,EAAMm2C,GAAMj0C,IAAI8pG,GACnE,EACA9lD,MAAOyC,EACPzsD,KAAMysD,GAERikD,GAA0Bn9B,KAAOhG,GAAQgG,KACzChG,GAAQhrE,MAAQ,WACd,OAAOmtG,GAAcptG,EAAGC,MAAMC,SAAUkuG,GAA2BC,GACrE,EACA,IAAIC,GAA0BF,GAA0B1qG,KAAI,SAASokD,GACnE,MAAO,CAAEA,EAAE,GAAG7yC,IAAK6yC,EAAE,GACvB,IACIymD,GAAyBvB,GAAkB73F,MAAM,CAAE,CAAE,MAAO,SAASrX,GACvE,OAAOA,EAAE2tE,oBACX,GAAK,CAAE,MAAO,SAAS3tE,GACrB,OAAOA,EAAE8tE,eACX,GAAK,CAAE,QAAS,SAAS9tE,GACvB,OAAOA,EAAE4tE,eACX,GAAK,CAAE,QAAS,SAAS5tE,GACvB,OAAOA,EAAE0tE,aACX,GAAK,CAAE,QAAS,SAAS1tE,GACvB,OAAOA,EAAEwtE,aAAiC,GAAlBxtE,EAAEutE,YAC5B,GAAK,CAAE,QAAS,SAASvtE,GACvB,OAAyB,GAAlBA,EAAEutE,YACX,GAAK,CAAE,KAAM,SAASvtE,GACpB,OAAOA,EAAE6tE,aACX,GAAK,CAAE,KAAM0L,MAWb,SAASm3B,GAAQ/oC,GACf,OAAOx6B,KAAK1jB,MAAMk+C,EAAQ56B,aAC5B,CAIA,SAAS4jE,GAAQhpC,GACf,IAAItlE,EAAQmlD,EAAYopD,cAExB,OADAvuG,EAAMwuG,WAAWrpD,EAAYspD,MACtBzuG,EAAM0uG,yBAAyBppC,EAAQ56B,aAChD,CApBAyjE,GAAwBr9B,KAAOhG,GAAQgG,KAAKh8D,IAC5Cg2D,GAAQhrE,MAAMgV,IAAM,WAClB,OAAOm4F,GAAcptG,EAAGC,MAAMC,SAAUouG,GAAyBC,GACnE,EACAvuG,EAAGzG,KAAOgsE,IAAW,SAASE,GAC5B,OAAOA,EAAQ56B,YACjB,IACA7qC,EAAGg1B,KAAO,SAASqV,EAAKnjB,GACtB,OAAOs+C,GAAOn7B,EAAK,mBAAoBmkE,GAAStnF,EAClD,EAIAlnB,EAAG8X,KAAO,SAASuyB,EAAKnjB,GACtB,OAAOs+C,GAAOn7B,EAAK,YAAaokE,GAASvnF,EAC3C,EAMAlnB,EAAG+tD,IAAMwX,IAAW,SAASE,GAC3B,OAAOA,EAAQqpC,WACjB,IACgD/uG,KAAKC,GAAKA,OAAa,0BAAT,KAAS,iCACzE,CAj1SA,E,kBCAAwuE,EAAEugC,QAAQC,WAAaxgC,EAAEugC,QAAQE,OAAO,CACpC5wG,QAAS,CACL2O,SAAU,UACV3U,MAAO,CACH,MAAS,kBACT,KAAQ,oBAIhB62G,MAAO,SAAUxrG,GACb,IAAI+uD,EAAY+b,EAAE2gC,QAAQ/yG,OAAO,MAAO,0DAWxC,OATA2D,KAAKs0F,KAAO7lB,EAAE2gC,QAAQ/yG,OAAO,IAAK,qDAAsDq2D,GACxF1yD,KAAKs0F,KAAK+a,KAAO,IAEjBrvG,KAAKsvG,KAAO3rG,EACZ3D,KAAKsvG,KAAKp2F,GAAG,mBAAoBlZ,KAAKuvG,aAAcvvG,MACpDA,KAAKuvG,eAEL9gC,EAAE+gC,SAASt2F,GAAGlZ,KAAKs0F,KAAM,QAASt0F,KAAKyvG,OAAQzvG,MAExC0yD,CACX,EAEA+8C,OAAQ,SAAUhvF,GACdguD,EAAE+gC,SAASE,gBAAgBjvF,GAC3BguD,EAAE+gC,SAASzjD,eAAetrC,GAC1BzgB,KAAKsvG,KAAKK,iBAAiB3vG,KAAK1B,QACpC,EAEAixG,aAAc,WACVvvG,KAAKs0F,KAAKh8F,MAAQ0H,KAAK1B,QAAQhG,MAAM0H,KAAKsvG,KAAKM,eACnD,IAGJnhC,EAAEohC,IAAIC,QAAQ,CACVF,aAAc,WACV,OAAO5vG,KAAK+vG,gBAAiB,CACjC,EAEAJ,iBAAkB,SAAUrxG,GACxB,IAAIo0D,EAAY1yD,KAAKgwG,eACjBhwG,KAAK4vG,eACDtxG,GAAWA,EAAQ2xG,iBACnBjwG,KAAKkwG,yBAAyBx9C,GACvB96C,SAASu4F,eAChBv4F,SAASu4F,iBACFv4F,SAASw4F,oBAChBx4F,SAASw4F,sBACFx4F,SAASy4F,uBAChBz4F,SAASy4F,yBACFz4F,SAAS04F,iBAChB14F,SAAS04F,mBAETtwG,KAAKkwG,yBAAyBx9C,GAG9Bp0D,GAAWA,EAAQ2xG,iBACnBjwG,KAAKuwG,wBAAwB79C,GACtBA,EAAU89C,kBACjB99C,EAAU89C,oBACH99C,EAAU+9C,qBACjB/9C,EAAU+9C,uBACH/9C,EAAUg+C,wBACjBh+C,EAAUg+C,wBAAwBvqD,QAAQwqD,sBACnCj+C,EAAUk+C,oBACjBl+C,EAAUk+C,sBAEV5wG,KAAKuwG,wBAAwB79C,EAIzC,EAEA69C,wBAAyB,SAAU79C,GAC/B+b,EAAE2gC,QAAQyB,SAASn+C,EAAW,6BAC9B1yD,KAAK8wG,gBAAe,GACpB9wG,KAAK+wG,KAAK,mBACd,EAEAb,yBAA0B,SAAUx9C,GAChC+b,EAAE2gC,QAAQ4B,YAAYt+C,EAAW,6BACjC1yD,KAAK8wG,gBAAe,GACpB9wG,KAAK+wG,KAAK,mBACd,EAEAD,eAAgB,SAASG,GACrBjxG,KAAK+vG,cAAgBkB,EACrB,IAAIv+C,EAAY1yD,KAAKgwG,eACjBiB,EACAxiC,EAAE2gC,QAAQyB,SAASn+C,EAAW,yBAE9B+b,EAAE2gC,QAAQ4B,YAAYt+C,EAAW,yBAErC1yD,KAAKkxG,gBACT,EAEAC,oBAAqB,SAAU1wF,GAC3B,IAAI2wF,EACAx5F,SAASw5F,mBACTx5F,SAASy5F,sBACTz5F,SAAS05F,yBACT15F,SAAS25F,oBAETH,IAAsBpxG,KAAKgwG,gBAAmBhwG,KAAK+vG,cAG5CqB,IAAsBpxG,KAAKgwG,gBAAkBhwG,KAAK+vG,gBACzD/vG,KAAK8wG,gBAAe,GACpB9wG,KAAK+wG,KAAK,sBAJV/wG,KAAK8wG,gBAAe,GACpB9wG,KAAK+wG,KAAK,oBAKlB,IAGJtiC,EAAEohC,IAAI2B,aAAa,CACfC,mBAAmB,IAGvBhjC,EAAEohC,IAAI6B,aAAY,WAMd,IAAIC,EAYJ,GAjBI3xG,KAAK1B,QAAQmzG,oBACbzxG,KAAKyxG,kBAAoB,IAAIhjC,EAAEugC,QAAQC,WAAWjvG,KAAK1B,QAAQmzG,mBAC/DzxG,KAAK4xG,WAAW5xG,KAAKyxG,oBAKrB,uBAAwB75F,SACxB+5F,EAAmB,mBACZ,0BAA2B/5F,SAClC+5F,EAAmB,sBACZ,6BAA8B/5F,SACrC+5F,EAAmB,yBACZ,yBAA0B/5F,WACjC+5F,EAAmB,sBAGnBA,EAAkB,CAClB,IAAIE,EAAqBpjC,EAAExlE,KAAKjJ,KAAKmxG,oBAAqBnxG,MAE1DA,KAAK8xG,WAAU,WACXrjC,EAAE+gC,SAASt2F,GAAGtB,SAAU+5F,EAAkBE,EAC9C,IAEA7xG,KAAKkZ,GAAG,UAAU,WACdu1D,EAAE+gC,SAAS/8C,IAAI76C,SAAU+5F,EAAkBE,EAC/C,GACJ,CACJ,IAEApjC,EAAEsjC,QAAQd,WAAa,SAAU3yG,GAC7B,OAAO,IAAImwE,EAAEugC,QAAQC,WAAW3wG,EACpC,C,sBCvJmN,SAASmiB,GAAG,aAAa,IAAImC,EAAE6rD,EAAEujC,mBAAmBvjC,EAAEwjC,aAAa/C,OAAO,CAAC5wG,QAAQ,CAAC4zG,iBAAiB,GAAGC,mBAAmB,KAAKC,YAAY3jC,EAAE4jC,OAAOz2G,UAAU0C,QAAQg0G,KAAKC,qBAAoB,EAAGC,mBAAkB,EAAGC,qBAAoB,EAAGC,qBAAoB,EAAGC,kBAAiB,EAAGC,wBAAwB,KAAKC,4BAA2B,EAAGC,SAAQ,EAAGC,sBAAqB,EAAGC,uBAAuB,KAAKC,2BAA2B,EAAEC,yBAAyB,CAACtb,OAAO,IAAIhjF,MAAM,OAAO+O,QAAQ,IAAIwvF,gBAAe,EAAGC,cAAc,IAAIC,WAAW,GAAGC,cAAc,KAAKC,eAAe,CAAC,GAAG7jF,WAAW,SAASjP,GAAGguD,EAAE+kC,KAAKC,WAAWzzG,KAAKygB,GAAGzgB,KAAK1B,QAAQ6zG,qBAAqBnyG,KAAK1B,QAAQ6zG,mBAAmBnyG,KAAK0zG,4BAA4B1zG,KAAK2zG,cAAcllC,EAAEmlC,eAAe5zG,KAAK2zG,cAAcE,eAAe7zG,MAAMA,KAAK8zG,eAAerlC,EAAEmlC,eAAe5zG,KAAK8zG,eAAeD,eAAe7zG,MAAMA,KAAK+zG,iBAAiB,EAAE/zG,KAAKg0G,iBAAiB,GAAGh0G,KAAKi0G,eAAe,GAAGj0G,KAAKk0G,oBAAoB,KAAKl0G,KAAKm0G,OAAO,GAAGn0G,KAAKo0G,0BAA0B,CAACrgE,UAAU/zC,KAAKq0G,sBAAsBlgD,KAAKn0D,KAAKs0G,kBAAkBtgE,QAAQh0C,KAAKu0G,qBAAqB,IAAI3xF,EAAE6rD,EAAE2gC,QAAQoF,YAAYx0G,KAAK1B,QAAQw0G,QAAQrkC,EAAEygC,OAAOlvG,KAAK4iB,EAAE5iB,KAAKy0G,eAAez0G,KAAK00G,cAAc10G,KAAK20G,eAAe/xF,EAAE6rD,EAAEmmC,cAAcnmC,EAAEomC,wBAAwB,EAAEC,SAAS,SAASr0F,GAAG,GAAGA,aAAaguD,EAAEsmC,WAAW,OAAO/0G,KAAKg1G,UAAU,CAACv0F,IAAI,IAAIA,EAAEw0F,UAAU,OAAOj1G,KAAK8zG,eAAegB,SAASr0F,GAAGzgB,KAAK+wG,KAAK,WAAW,CAACmE,MAAMz0F,IAAIzgB,KAAK,IAAIA,KAAKsvG,KAAK,OAAOtvG,KAAKg0G,iBAAiBlyG,KAAK2e,GAAGzgB,KAAK+wG,KAAK,WAAW,CAACmE,MAAMz0F,IAAIzgB,KAAK,GAAGA,KAAKm1G,SAAS10F,GAAG,OAAOzgB,KAAKA,KAAKo1G,aAAap1G,KAAKo1G,cAAcp1G,KAAKq1G,UAAU50F,EAAEzgB,KAAKs1G,UAAUt1G,KAAK+wG,KAAK,WAAW,CAACmE,MAAMz0F,IAAIzgB,KAAKu1G,iBAAiBC,qBAAqBx1G,KAAKy1G,wBAAwB,IAAI7yF,EAAEnC,EAAE9e,EAAE3B,KAAK01G,MAAM,GAAGj1F,EAAEk1F,SAAS,KAAK/yF,EAAE+yF,SAASD,OAAO/zG,GAAGihB,EAAEA,EAAE+yF,SAAS,OAAO31G,KAAKk0G,oBAAoBhkD,SAASttC,EAAEqyF,eAAej1G,KAAK1B,QAAQy0G,qBAAqB/yG,KAAK41G,mBAAmBn1F,EAAEmC,GAAG5iB,KAAK61G,8BAA8Bp1F,EAAEmC,IAAI5iB,IAAI,EAAE81G,YAAY,SAASr1F,GAAG,OAAOA,aAAaguD,EAAEsmC,WAAW/0G,KAAK+1G,aAAa,CAACt1F,KAAKA,EAAEw0F,UAAUj1G,KAAKsvG,KAAK7uF,EAAEk1F,WAAW31G,KAAKo1G,cAAcp1G,KAAKo1G,cAAcp1G,KAAKg2G,iBAAiBv1F,IAAIzgB,KAAKi2G,aAAax1F,GAAE,GAAIzgB,KAAK+wG,KAAK,cAAc,CAACmE,MAAMz0F,IAAIzgB,KAAKu1G,iBAAiBC,qBAAqBx1G,KAAKy1G,wBAAwBh1F,EAAEgyC,IAAIzyD,KAAKo0G,0BAA0Bp0G,MAAMA,KAAK2zG,cAAcwB,SAAS10F,KAAKzgB,KAAK2zG,cAAcmC,YAAYr1F,GAAGA,EAAEy1F,aAAaz1F,EAAEy1F,kBAAkBl2G,KAAKm2G,aAAan2G,KAAKg0G,iBAAiBvzF,IAAIzgB,KAAKm1G,SAAS10F,IAAIzgB,KAAKi0G,eAAenyG,KAAK,CAACozG,MAAMz0F,EAAE21F,OAAO31F,EAAE41F,UAAUr2G,KAAK+wG,KAAK,cAAc,CAACmE,MAAMz0F,MAAMzgB,KAAK8zG,eAAegC,YAAYr1F,GAAGzgB,KAAK+wG,KAAK,cAAc,CAACmE,MAAMz0F,KAAKzgB,KAAK,EAAEg1G,UAAU,SAASn3G,EAAE+F,GAAG,IAAI6qE,EAAE+kC,KAAKp2G,QAAQS,GAAG,OAAOmC,KAAK80G,SAASj3G,GAAG,IAAIV,EAAEmU,EAAEtR,KAAK2zG,cAAchxG,EAAE3C,KAAK8zG,eAAep7D,EAAE14C,KAAK1B,QAAQ60G,eAAe38C,EAAEx2D,KAAK1B,QAAQ80G,cAAc1pD,EAAE1pD,KAAK1B,QAAQg1G,cAAcv1G,EAAEF,EAAEI,OAAOwS,EAAE,EAAEqoB,GAAE,EAAG,GAAG94B,KAAKsvG,KAAK,CAAC,IAAItoF,GAAE,IAAK5V,MAAMqhC,UAAUsV,EAAE0mB,EAAExlE,MAAK,WAAW,IAAIwX,GAAE,IAAKrP,MAAMqhC,UAAU,IAAIzyC,KAAKsvG,MAAMtvG,KAAKo1G,aAAap1G,KAAKo1G,cAAc3kG,EAAE1S,EAAE0S,IAAI,CAAC,GAAGioC,GAAGjoC,EAAE,KAAK,EAAE,CAAC,IAAImS,GAAE,IAAKxR,MAAMqhC,UAAUhyB,EAAE,GAAG+1C,EAAE5zC,EAAE,KAAK,CAAC,IAAIzlB,EAAEU,EAAE4S,cAAcg+D,EAAEsmC,WAAWj8E,IAAIj7B,EAAEA,EAAE2G,QAAQs0B,GAAE,GAAI94B,KAAKs2G,uBAAuBn5G,EAAEU,GAAGE,EAAEF,EAAEI,YAAY,GAAGd,EAAE83G,WAAW,IAAIj1G,KAAKm1G,SAASh4G,KAAK6C,KAAKq1G,UAAUl4G,EAAE6C,KAAKs1G,UAAU1xG,GAAG5D,KAAK+wG,KAAK,WAAW,CAACmE,MAAM/3G,IAAIA,EAAEw4G,UAAU,IAAIx4G,EAAEw4G,SAASY,iBAAiB,CAAC,IAAI50G,EAAExE,EAAEw4G,SAASa,qBAAqB96D,EAAE/5C,EAAE,KAAKxE,EAAEwE,EAAE,GAAGA,EAAE,GAAG2P,EAAEwkG,YAAYp6D,EAAE,OAAO/4C,EAAEmyG,SAAS33G,GAAGyG,GAAG5D,KAAK+wG,KAAK,WAAW,CAACmE,MAAM/3G,GAAG,CAACusD,GAAGA,EAAEj5C,EAAE1S,GAAE,IAAKqT,MAAMqhC,UAAUzrB,GAAGvW,IAAI1S,GAAGiC,KAAKu1G,iBAAiBC,qBAAqBx1G,KAAKy1G,wBAAwBz1G,KAAKu1G,iBAAiBkB,6BAA6B,KAAKz2G,KAAK01G,MAAM11G,KAAKk0G,sBAAsB5tF,WAAWyhC,EAAE/nD,KAAK1B,QAAQ+0G,WAAW,GAAErzG,MAAM+nD,GAAG,MAAM,IAAI,IAAItnC,EAAEzgB,KAAKg0G,iBAAiBvjG,EAAE1S,EAAE0S,KAAKtT,EAAEU,EAAE4S,cAAcg+D,EAAEsmC,YAAYj8E,IAAIj7B,EAAEA,EAAE2G,QAAQs0B,GAAE,GAAI94B,KAAKs2G,uBAAuBn5G,EAAEU,GAAGE,EAAEF,EAAEI,QAAQd,EAAE83G,UAAUj1G,KAAKm1G,SAASh4G,IAAIsjB,EAAE3e,KAAK3E,GAAGwF,EAAEmyG,SAAS33G,GAAG,OAAO6C,IAAI,EAAE+1G,aAAa,SAASt1F,GAAG,IAAImC,EAAEjhB,EAAE+5C,EAAEj7B,EAAExiB,OAAOJ,EAAEmC,KAAK2zG,cAAc/vG,EAAE5D,KAAK8zG,eAAe32G,GAAE,EAAG,IAAI6C,KAAKsvG,KAAK,CAAC,IAAI1sF,EAAE,EAAEA,EAAE84B,EAAE94B,KAAKjhB,EAAE8e,EAAEmC,cAAc6rD,EAAEsmC,YAAY53G,IAAIsjB,EAAEA,EAAEjc,QAAQrH,GAAE,GAAI6C,KAAKs2G,uBAAuB30G,EAAE8e,GAAGi7B,EAAEj7B,EAAExiB,SAAS+B,KAAKm2G,aAAan2G,KAAKg0G,iBAAiBryG,GAAGiC,EAAEkyG,YAAYn0G,GAAG3B,KAAKm1G,SAASxzG,IAAI3B,KAAKi0G,eAAenyG,KAAK,CAACozG,MAAMvzG,EAAEy0G,OAAOz0G,EAAE00G,UAAUr2G,KAAK+wG,KAAK,cAAc,CAACmE,MAAMvzG,KAAK,OAAO3B,IAAI,CAAC,GAAGA,KAAKo1G,YAAY,CAACp1G,KAAKo1G,cAAc,IAAI9jG,EAAEmP,EAAEjc,QAAQ7B,EAAE+4C,EAAE,IAAI94B,EAAE,EAAEA,EAAEjgB,EAAEigB,KAAKjhB,EAAE2P,EAAEsR,cAAc6rD,EAAEsmC,YAAY/0G,KAAKs2G,uBAAuB30G,EAAE2P,GAAG3O,EAAE2O,EAAErT,QAAQ+B,KAAKg2G,iBAAiBr0G,EAAE,CAAC,IAAIihB,EAAE,EAAEA,EAAE84B,EAAE94B,KAAKjhB,EAAE8e,EAAEmC,cAAc6rD,EAAEsmC,YAAY53G,IAAIsjB,EAAEA,EAAEjc,QAAQrH,GAAE,GAAI6C,KAAKs2G,uBAAuB30G,EAAE8e,GAAGi7B,EAAEj7B,EAAExiB,QAAQ0D,EAAEg0G,UAAU31G,KAAKi2G,aAAat0G,GAAE,GAAG,GAAI3B,KAAK+wG,KAAK,cAAc,CAACmE,MAAMvzG,IAAI9D,EAAEs3G,SAASxzG,KAAK9D,EAAEi4G,YAAYn0G,GAAGA,EAAEu0G,aAAav0G,EAAEu0G,iBAAiBtyG,EAAEkyG,YAAYn0G,GAAG3B,KAAK+wG,KAAK,cAAc,CAACmE,MAAMvzG,KAAK,OAAO3B,KAAKu1G,iBAAiBC,qBAAqBx1G,KAAKy1G,wBAAwBz1G,KAAKu1G,iBAAiBkB,6BAA6B,KAAKz2G,KAAK01G,MAAM11G,KAAKk0G,qBAAqBl0G,IAAI,EAAE02G,YAAY,WAAW,OAAO12G,KAAKsvG,OAAOtvG,KAAKg0G,iBAAiB,GAAGh0G,KAAKi0G,eAAe,UAAUj0G,KAAK22G,qBAAqB32G,KAAK42G,kBAAkB52G,KAAK62G,wBAAwB72G,KAAK62G,yBAAyB72G,KAAK2zG,cAAc+C,cAAc12G,KAAK8zG,eAAe4C,cAAc12G,KAAK82G,WAAU,SAASr2F,GAAGA,EAAEgyC,IAAIzyD,KAAKo0G,0BAA0Bp0G,aAAaygB,EAAEk1F,QAAQ,GAAE31G,MAAMA,KAAKsvG,MAAMtvG,KAAK+2G,2BAA2B/2G,IAAI,EAAEg3G,UAAU,WAAW,IAAIv2F,EAAE,IAAIguD,EAAEwoC,aAAaj3G,KAAKu1G,kBAAkB90F,EAAEyuF,OAAOlvG,KAAKu1G,iBAAiB2B,SAAS,IAAI,IAAIt0F,EAAE5iB,KAAKg0G,iBAAiB/1G,OAAO,EAAE,GAAG2kB,EAAEA,IAAInC,EAAEyuF,OAAOlvG,KAAKg0G,iBAAiBpxF,GAAGqyF,aAAa,OAAOx0F,EAAEyuF,OAAOlvG,KAAK8zG,eAAekD,aAAav2F,CAAC,EAAEq2F,UAAU,SAASr2F,EAAEmC,GAAG,IAAIjhB,EAAE+5C,EAAE79C,EAAE+F,EAAE5D,KAAKg0G,iBAAiBxvG,QAAQrH,EAAE6C,KAAKi0G,eAAe,IAAIj0G,KAAKu1G,kBAAkBv1G,KAAKu1G,iBAAiBiB,mBAAmB5yG,GAAG83C,EAAE93C,EAAE3F,OAAO,EAAE,GAAGy9C,EAAEA,IAAI,CAAC,IAAI/5C,GAAE,EAAG9D,EAAEV,EAAEc,OAAO,EAAE,GAAGJ,EAAEA,IAAI,GAAGV,EAAEU,GAAGq3G,QAAQtxG,EAAE83C,GAAG,CAAC/5C,GAAE,EAAG,KAAK,CAACA,GAAG8e,EAAE3jB,KAAK8lB,EAAEhf,EAAE83C,GAAG,CAAC17C,KAAK8zG,eAAegD,UAAUr2F,EAAEmC,EAAE,EAAEu0F,UAAU,WAAW,IAAIv0F,EAAE,GAAG,OAAO5iB,KAAK82G,WAAU,SAASr2F,GAAGmC,EAAE9gB,KAAK2e,EAAE,IAAGmC,CAAC,EAAEw0F,SAAS,SAASx0F,GAAG,IAAIjhB,EAAE,KAAK,OAAOihB,EAAEq5C,SAASr5C,EAAE,IAAI5iB,KAAK82G,WAAU,SAASr2F,GAAGguD,EAAE4oC,MAAM52F,KAAKmC,IAAIjhB,EAAE8e,EAAE,IAAG9e,CAAC,EAAEwzG,SAAS,SAAS10F,GAAG,IAAIA,EAAE,OAAM,EAAG,IAAImC,EAAEjhB,EAAE3B,KAAKg0G,iBAAiB,IAAIpxF,EAAEjhB,EAAE1D,OAAO,EAAE,GAAG2kB,EAAEA,IAAI,GAAGjhB,EAAEihB,KAAKnC,EAAE,OAAM,EAAG,IAAImC,GAAGjhB,EAAE3B,KAAKi0G,gBAAgBh2G,OAAO,EAAE,GAAG2kB,EAAEA,IAAI,GAAGjhB,EAAEihB,GAAGsyF,QAAQz0F,EAAE,OAAM,EAAG,SAASA,EAAEk1F,UAAUl1F,EAAEk1F,SAAS2B,SAASt3G,OAAOA,KAAK8zG,eAAeqB,SAAS10F,EAAE,EAAE82F,gBAAgB,SAAS92F,EAAEmC,GAAG,IAAIjhB,EAAE3B,KAAKsvG,KAAK,mBAAmB1sF,IAAIA,EAAE,WAAW,GAAG,IAAI84B,EAAE,YAAY/5C,EAAEwzG,SAAS10F,KAAK9e,EAAEwzG,SAAS10F,EAAEk1F,WAAW31G,KAAK+zG,mBAAmB/zG,KAAKsvG,KAAK78C,IAAI,UAAU/W,EAAE17C,MAAMA,KAAKyyD,IAAI,eAAe/W,EAAE17C,MAAM2B,EAAEwzG,SAAS10F,GAAGmC,IAAInC,EAAEk1F,SAAS6B,QAAQx3G,KAAKy3G,KAAK,aAAa70F,EAAE5iB,MAAMygB,EAAEk1F,SAAS+B,YAAY,EAAEj3F,EAAE+2F,OAAOx3G,KAAKsvG,KAAK0H,YAAY9mD,SAASzvC,EAAEw0F,aAAaryF,IAAInC,EAAEk1F,SAASD,MAAMh4G,KAAKukC,MAAMjiC,KAAKsvG,KAAKoG,QAAQ11G,KAAKsvG,KAAKp2F,GAAG,UAAUwiC,EAAE17C,MAAMA,KAAKsvG,KAAKqI,MAAMl3F,EAAEw0F,eAAej1G,KAAKsvG,KAAKp2F,GAAG,UAAUwiC,EAAE17C,MAAMA,KAAKkZ,GAAG,eAAewiC,EAAE17C,MAAMygB,EAAEk1F,SAASiC,eAAe,EAAEzI,MAAM,SAAS1uF,GAAG,IAAImC,EAAEjhB,EAAE+5C,EAAE,GAAG17C,KAAKsvG,KAAK7uF,GAAGsN,SAAS/tB,KAAKsvG,KAAKuI,cAAc,KAAK,+BAA+B,IAAI73G,KAAK2zG,cAAcmE,MAAMr3F,GAAGzgB,KAAK8zG,eAAegE,MAAMr3F,GAAGzgB,KAAK22G,eAAe32G,KAAK+2G,2BAA2B/2G,KAAK+3G,QAAQt3F,EAAEniB,QAAQ05G,IAAI93B,WAAW+3B,aAAar1F,EAAE,EAAEjhB,EAAE3B,KAAKi0G,eAAeh2G,OAAO2kB,EAAEjhB,EAAEihB,KAAK84B,EAAE17C,KAAKi0G,eAAerxF,IAAIs1F,UAAUx8D,EAAEw5D,MAAMmB,QAAQ36D,EAAEw5D,MAAMmB,QAAQ36D,EAAE06D,OAAO,IAAIxzF,EAAE,EAAEjhB,EAAE3B,KAAKi0G,eAAeh2G,OAAO2kB,EAAEjhB,EAAEihB,IAAI84B,EAAE17C,KAAKi0G,eAAerxF,GAAG5iB,KAAKi2G,aAAav6D,EAAEw5D,OAAM,GAAIx5D,EAAEw5D,MAAMmB,QAAQ36D,EAAEw8D,UAAUl4G,KAAKi0G,eAAe,GAAGj0G,KAAK01G,MAAMh4G,KAAKukC,MAAMjiC,KAAKsvG,KAAKoG,OAAO11G,KAAKk0G,oBAAoBl0G,KAAKm4G,4BAA4Bn4G,KAAKsvG,KAAKp2F,GAAG,UAAUlZ,KAAKo4G,SAASp4G,MAAMA,KAAKsvG,KAAKp2F,GAAG,UAAUlZ,KAAKq4G,SAASr4G,MAAMA,KAAKs4G,kBAAkBt4G,KAAKs4G,mBAAmBt4G,KAAKu4G,cAAc52G,EAAE3B,KAAKg0G,iBAAiBh0G,KAAKg0G,iBAAiB,GAAGh0G,KAAKg1G,UAAUrzG,GAAE,EAAG,EAAE6vD,SAAS,SAAS/wC,GAAGA,EAAEgyC,IAAI,UAAUzyD,KAAKo4G,SAASp4G,MAAMygB,EAAEgyC,IAAI,UAAUzyD,KAAKq4G,SAASr4G,MAAMA,KAAKw4G,gBAAgBx4G,KAAKsvG,KAAKmJ,SAASC,UAAU14G,KAAKsvG,KAAKmJ,SAASC,UAAU35G,QAAQ,wBAAwB,IAAIiB,KAAK24G,qBAAqB34G,KAAK24G,6BAA6B34G,KAAK+3G,QAAQ/3G,KAAK44G,gBAAgB54G,KAAK2zG,cAAcltG,SAASzG,KAAK8zG,eAAertG,SAASzG,KAAK2zG,cAAc+C,cAAc12G,KAAKsvG,KAAK,IAAI,EAAEuJ,iBAAiB,SAASp4F,GAAG,IAAI,IAAImC,EAAEnC,EAAEmC,IAAIA,EAAE40F,OAAO50F,EAAEA,EAAE+yF,SAAS,OAAO/yF,GAAG,IAAI,EAAEuzF,aAAa,SAAS11F,EAAEmC,GAAG,IAAI,IAAIjhB,EAAE8e,EAAExiB,OAAO,EAAE,GAAG0D,EAAEA,IAAI,GAAG8e,EAAE9e,KAAKihB,EAAE,OAAOnC,EAAEwG,OAAOtlB,EAAE,IAAG,CAAE,EAAEm3G,2BAA2B,SAASr4F,EAAEmC,GAAG,IAAI,IAAIjhB,EAAE3B,KAAKsvG,KAAK5zD,EAAE17C,KAAK42G,iBAAiB/4G,EAAEH,KAAKiqD,MAAM3nD,KAAKsvG,KAAKyJ,cAAcl7G,GAAG+kB,GAAG84B,EAAE94B,GAAGo2F,aAAav4F,EAAE9e,EAAE+8E,QAAQj+D,EAAEw0F,YAAYryF,IAAIA,KAAK,EAAEyxF,sBAAsB,SAAS5zF,GAAGA,EAAE9pB,OAAOsiH,YAAYx4F,EAAE9pB,OAAO0/G,OAAO,EAAE/B,kBAAkB,SAAS7zF,GAAG,IAAIzgB,KAAKk5G,cAAcz4F,EAAE9pB,OAAOsiH,YAAY,CAAC,IAAIr2F,EAAEnC,EAAE9pB,OAAOwiH,QAAQ14F,EAAE9pB,OAAOwiH,OAAOC,SAASp5G,KAAKq5G,WAAW54F,EAAE9pB,OAAO8pB,EAAE64F,UAAU74F,EAAE21F,QAAQxzF,GAAGnC,EAAE9pB,OAAO4iH,WAAW,CAAC,EAAEF,WAAW,SAAS54F,EAAEmC,EAAEjhB,GAAG8e,EAAE41F,QAAQzzF,EAAE5iB,KAAK81G,YAAYr1F,GAAGA,EAAE41F,QAAQ10G,EAAE3B,KAAK80G,SAASr0F,EAAE,EAAE8zF,oBAAoB,SAAS9zF,GAAG,IAAImC,EAAEnC,EAAE9pB,OAAOsiH,mBAAmBx4F,EAAE9pB,OAAOsiH,YAAYr2F,GAAG5iB,KAAKq5G,WAAW54F,EAAE9pB,OAAOisB,EAAEnC,EAAE9pB,OAAO0/G,QAAQ,EAAEJ,aAAa,SAASx1F,EAAEmC,EAAEjhB,GAAG,IAAI+5C,EAAE17C,KAAK22G,cAAc94G,EAAEmC,KAAK42G,iBAAiBhzG,EAAE5D,KAAK2zG,cAAcx2G,EAAE6C,KAAKsvG,KAAKh+F,EAAE5T,KAAKiqD,MAAM3nD,KAAKsvG,KAAKyJ,cAAcn2F,GAAG5iB,KAAK84G,2BAA2Br4F,EAAEzgB,KAAKs1G,UAAU,IAAI3yG,EAAE+1C,EAAEj4B,EAAEk1F,SAASn/C,EAAE9d,EAAE8gE,SAAS,IAAIx5G,KAAKm2G,aAAa3/C,EAAE/1C,GAAGi4B,IAAIA,EAAE+gE,cAAc/gE,EAAEghE,mBAAkB,IAAKhhE,EAAEg9D,MAAMpkG,KAAKsR,GAAG81B,EAAE+gE,aAAa,GAAG92G,EAAE+1C,EAAE8gE,SAAS,KAAK/4F,EAAEi4B,EAAE8gE,SAAS,GAAG9gE,EAAE8gE,SAAS,GAAG99D,EAAEhD,EAAEg9D,OAAOsD,aAAatgE,EAAEv7C,EAAEuhF,QAAQhmC,EAAEihE,SAASjhE,EAAEg9D,QAAQ73G,EAAE66C,EAAEg9D,OAAOkE,UAAUj3G,EAAExF,EAAEuhF,QAAQ/7E,EAAEsyG,YAAYv8D,EAAEg9D,QAAQ11G,KAAKm2G,aAAaz9D,EAAEi9D,SAASkE,eAAenhE,GAAGA,EAAEi9D,SAAS6D,SAAS13G,KAAKa,GAAGA,EAAEgzG,SAASj9D,EAAEi9D,SAASj9D,EAAE8+D,QAAQ5zG,EAAEkyG,YAAYp9D,GAAG/2C,GAAGiC,EAAEkxG,SAASnyG,KAAK+1C,EAAEohE,kBAAiB,EAAGphE,EAAEA,EAAEi9D,gBAAgBl1F,EAAEk1F,QAAQ,EAAEoE,cAAc,SAASt5F,EAAEmC,GAAG,KAAKA,GAAG,CAAC,GAAGnC,IAAImC,EAAE,OAAM,EAAGA,EAAEA,EAAE2C,UAAU,CAAC,OAAM,CAAE,EAAEwrF,KAAK,SAAStwF,EAAEmC,EAAEjhB,GAAG,GAAGihB,GAAGA,EAAEsyF,iBAAiBzmC,EAAEmmC,cAAc,CAAC,GAAGhyF,EAAEo3F,eAAeh6G,KAAK+5G,cAAcn3F,EAAEsyF,MAAMsC,MAAM50F,EAAEo3F,cAAc9nD,eAAe,OAAOzxC,EAAE,UAAUA,CAAC,CAACguD,EAAEwjC,aAAar2G,UAAUm1G,KAAKj0G,KAAKkD,KAAKygB,EAAEmC,EAAEjhB,EAAE,EAAEs4G,QAAQ,SAASx5F,EAAEmC,GAAG,OAAO6rD,EAAEwjC,aAAar2G,UAAUq+G,QAAQn9G,KAAKkD,KAAKygB,EAAEmC,IAAI6rD,EAAEwjC,aAAar2G,UAAUq+G,QAAQn9G,KAAKkD,KAAK,UAAUygB,EAAEmC,EAAE,EAAE8wF,2BAA2B,SAASjzF,GAAG,IAAImC,EAAEnC,EAAE81F,gBAAgB50G,EAAE,mBAAmB,OAAOA,GAAGihB,EAAE,GAAG,QAAQA,EAAE,IAAI,SAAS,QAAQ,IAAI6rD,EAAEyrC,QAAQ,CAACniG,KAAK,cAAc6K,EAAE,gBAAgB81F,UAAU,iBAAiB/2G,EAAEw4G,SAAS,IAAI1rC,EAAE0E,MAAM,GAAG,KAAK,EAAEolC,YAAY,WAAW,IAAI93F,EAAEzgB,KAAKsvG,KAAK1sF,EAAE5iB,KAAK1B,QAAQk0G,kBAAkB7wG,EAAE3B,KAAK1B,QAAQm0G,oBAAoB/2D,EAAE17C,KAAK1B,QAAQo0G,oBAAoB70G,EAAEmC,KAAK1B,QAAQi0G,qBAAqB3vF,GAAG84B,GAAG79C,IAAImC,KAAKkZ,GAAG,+BAA+BlZ,KAAKo6G,gBAAgBp6G,MAAM2B,IAAI3B,KAAKkZ,GAAG,mBAAmBlZ,KAAKq6G,cAAcr6G,MAAMA,KAAKkZ,GAAG,kBAAkBlZ,KAAK44G,cAAc54G,MAAMygB,EAAEvH,GAAG,UAAUlZ,KAAK44G,cAAc54G,MAAM,EAAEo6G,gBAAgB,SAAS35F,GAAG,IAAImC,EAAEnC,EAAEy0F,MAAMvzG,EAAEihB,EAAE,GAAG,oBAAoBnC,EAAErF,OAAOqF,EAAEu5F,eAAe,KAAKv5F,EAAEu5F,cAAc1N,QAAQ,CAAC,KAAK,IAAI3qG,EAAEk4G,eAAe57G,QAAQ0D,EAAEA,EAAEk4G,eAAe,GAAGl4G,EAAE+zG,QAAQ11G,KAAKs1G,UAAU3zG,EAAE83G,cAAc72F,EAAE62F,aAAaz5G,KAAK1B,QAAQk0G,kBAAkB5vF,EAAE80F,WAAW13G,KAAK1B,QAAQo0G,qBAAqB9vF,EAAEg1F,eAAe53G,KAAK1B,QAAQi0G,qBAAqB3vF,EAAE80F,WAAWj3F,EAAEu5F,eAAe,KAAKv5F,EAAEu5F,cAAc1N,SAAStsG,KAAKsvG,KAAKgL,WAAWxjF,OAAO,CAAC,EAAEujF,cAAc,SAAS55F,GAAG,IAAImC,EAAE5iB,KAAKsvG,KAAKtvG,KAAK+zG,mBAAmB/zG,KAAKu6G,eAAe33F,EAAEkzF,YAAY91G,KAAKu6G,eAAe,EAAE95F,EAAEy0F,MAAMqB,iBAAiB91F,EAAEy0F,QAAQl1G,KAAKw6G,cAAcx6G,KAAKu6G,cAAc,IAAI9rC,EAAEgF,QAAQhzD,EAAEy0F,MAAMuF,gBAAgBz6G,KAAK1B,QAAQi1G,gBAAgB3wF,EAAEkyF,SAAS90G,KAAKu6G,gBAAgB,EAAE3B,cAAc,WAAW54G,KAAKu6G,gBAAgBv6G,KAAKsvG,KAAKwG,YAAY91G,KAAKu6G,eAAev6G,KAAKu6G,cAAc,KAAK,EAAE/B,cAAc,WAAW,IAAI/3F,EAAEzgB,KAAK1B,QAAQk0G,kBAAkB5vF,EAAE5iB,KAAK1B,QAAQm0G,oBAAoB9wG,EAAE3B,KAAK1B,QAAQo0G,oBAAoBh3D,EAAE17C,KAAK1B,QAAQi0G,oBAAoB10G,EAAEmC,KAAKsvG,MAAM7uF,GAAG9e,GAAG+5C,IAAI17C,KAAKyyD,IAAI,+BAA+BzyD,KAAKo6G,gBAAgBp6G,MAAM4iB,IAAI5iB,KAAKyyD,IAAI,mBAAmBzyD,KAAKq6G,cAAcr6G,MAAMA,KAAKyyD,IAAI,kBAAkBzyD,KAAK44G,cAAc54G,MAAMnC,EAAE40D,IAAI,UAAUzyD,KAAK44G,cAAc54G,MAAM,EAAEo4G,SAAS,WAAWp4G,KAAKsvG,OAAOtvG,KAAK06G,sBAAsB16G,KAAK01G,MAAMh4G,KAAKukC,MAAMjiC,KAAKsvG,KAAKoG,OAAO11G,KAAKk0G,oBAAoBl0G,KAAKm4G,4BAA4B,EAAEE,SAAS,WAAW,IAAIr4G,KAAK+zG,iBAAiB,CAAC,IAAItzF,EAAEzgB,KAAKm4G,4BAA4Bn4G,KAAKu1G,iBAAiBoF,kCAAkC36G,KAAKk0G,oBAAoBx2G,KAAKiqD,MAAM3nD,KAAKsvG,KAAKyJ,cAAc/4G,KAAK01G,MAAMj1F,GAAGzgB,KAAKu1G,iBAAiBkB,6BAA6B,KAAK/4G,KAAKukC,MAAMjiC,KAAKsvG,KAAKoG,OAAOj1F,GAAGzgB,KAAKk0G,oBAAoBzzF,CAAC,CAAC,EAAEs2F,yBAAyB,WAAW,IAAIt2F,EAAE/iB,KAAKC,KAAKqC,KAAKsvG,KAAKuI,cAAcj1F,EAAEllB,KAAKiqD,MAAM3nD,KAAKsvG,KAAKyJ,cAAcp3G,EAAE3B,KAAK1B,QAAQ4zG,iBAAiBx2D,EAAE/5C,EAAE,mBAAmBA,IAAI+5C,EAAE,WAAW,OAAO/5C,CAAC,GAAG,OAAO3B,KAAK1B,QAAQs0G,0BAA0BnyF,EAAEzgB,KAAK1B,QAAQs0G,wBAAwB,GAAG5yG,KAAKs1G,SAAS70F,EAAEzgB,KAAK22G,cAAc,CAAC,EAAE32G,KAAK42G,iBAAiB,CAAC,EAAE,IAAI,IAAI/4G,EAAE4iB,EAAEmC,GAAG/kB,EAAEA,IAAImC,KAAK22G,cAAc94G,GAAG,IAAI4wE,EAAEmsC,aAAal/D,EAAE79C,IAAImC,KAAK42G,iBAAiB/4G,GAAG,IAAI4wE,EAAEmsC,aAAal/D,EAAE79C,IAAImC,KAAKu1G,iBAAiB,IAAIv1G,KAAK20G,eAAe30G,KAAK4iB,EAAE,EAAE,EAAEyyF,UAAU,SAAS50F,EAAEmC,GAAG,IAAIjhB,EAAE+5C,EAAE79C,EAAEmC,KAAK22G,cAAc/yG,EAAE5D,KAAK42G,iBAAiBz5G,EAAEO,KAAKiqD,MAAM3nD,KAAKsvG,KAAKyJ,cAAc,IAAI/4G,KAAK1B,QAAQq0G,kBAAkB3yG,KAAK66G,oBAAoBp6F,GAAGA,EAAEvH,GAAGlZ,KAAKo0G,0BAA0Bp0G,MAAM7C,GAAGylB,EAAEA,IAAI,CAACjhB,EAAE3B,KAAKsvG,KAAK5wB,QAAQj+D,EAAEw0F,YAAYryF,GAAG,IAAItR,EAAEzT,EAAE+kB,GAAGk4F,cAAcn5G,GAAG,GAAG2P,EAAE,OAAOA,EAAEypG,UAAUt6F,QAAQA,EAAEk1F,SAASrkG,GAAG,GAAGA,EAAE1N,EAAEgf,GAAGk4F,cAAcn5G,GAAG,CAAC,IAAIgB,EAAE2O,EAAEqkG,SAAShzG,GAAG3C,KAAKi2G,aAAa3kG,GAAE,GAAI,IAAIonC,EAAE,IAAI14C,KAAK20G,eAAe30G,KAAK4iB,EAAEtR,EAAEmP,GAAG5iB,EAAE+kB,GAAGg3F,UAAUlhE,EAAE14C,KAAKsvG,KAAK5wB,QAAQhmC,EAAEihE,SAAS/2F,IAAItR,EAAEqkG,SAASj9D,EAAE,IAAI8d,EAAE/1C,EAAEk1F,SAASj9D,EAAE,IAAIgD,EAAE94B,EAAE,EAAE84B,EAAE/4C,EAAE+yG,MAAMh6D,IAAI8a,EAAE,IAAIx2D,KAAK20G,eAAe30G,KAAK07C,EAAE8a,GAAG34D,EAAE69C,GAAGk+D,UAAUpjD,EAAEx2D,KAAKsvG,KAAK5wB,QAAQptE,EAAE2jG,YAAYv5D,IAAI,OAAO/4C,EAAEo4G,UAAUvkD,QAAQx2D,KAAK84G,2BAA2BxnG,EAAEsR,EAAE,CAAChf,EAAEgf,GAAGg3F,UAAUn5F,EAAE9e,EAAE,CAAC3B,KAAKu1G,iBAAiBwF,UAAUt6F,GAAGA,EAAEk1F,SAAS31G,KAAKu1G,gBAAgB,EAAEE,sBAAsB,WAAWz1G,KAAK2zG,cAAcmD,WAAU,SAASr2F,GAAGA,aAAaguD,EAAEmmC,eAAen0F,EAAEq5F,kBAAkBr5F,EAAEu6F,aAAa,GAAE,EAAEC,SAAS,SAASx6F,GAAGzgB,KAAKm0G,OAAOryG,KAAK2e,GAAGzgB,KAAKk7G,gBAAgBl7G,KAAKk7G,cAAc50F,WAAWmoD,EAAExlE,KAAKjJ,KAAKm7G,cAAcn7G,MAAM,KAAK,EAAEm7G,cAAc,WAAW,IAAI,IAAI16F,EAAE,EAAEA,EAAEzgB,KAAKm0G,OAAOl2G,OAAOwiB,IAAIzgB,KAAKm0G,OAAO1zF,GAAG3jB,KAAKkD,MAAMA,KAAKm0G,OAAOl2G,OAAO,EAAEooB,aAAarmB,KAAKk7G,eAAel7G,KAAKk7G,cAAc,IAAI,EAAER,oBAAoB,WAAW,IAAIj6F,EAAE/iB,KAAKukC,MAAMjiC,KAAKsvG,KAAKoG,OAAO11G,KAAKm7G,gBAAgBn7G,KAAK01G,MAAMj1F,GAAGzgB,KAAKk0G,oBAAoBkH,WAAWp7G,KAAKm4G,8BAA8Bn4G,KAAKq7G,kBAAkBr7G,KAAKu1G,iBAAiBoF,kCAAkC36G,KAAKk0G,oBAAoBx2G,KAAKiqD,MAAM3nD,KAAKsvG,KAAKyJ,cAAc/4G,KAAK01G,MAAM11G,KAAKm4G,6BAA6Bn4G,KAAKs7G,iBAAiBt7G,KAAK01G,MAAMj1F,IAAIzgB,KAAK01G,MAAMj1F,GAAGzgB,KAAKq7G,kBAAkBr7G,KAAKu7G,kBAAkBv7G,KAAK01G,MAAMj1F,IAAIzgB,KAAKq4G,UAAU,EAAEF,0BAA0B,WAAW,OAAOn4G,KAAK1B,QAAQu0G,2BAA2BpkC,EAAE+sC,QAAQC,OAAOz7G,KAAK07G,mBAAmB17G,KAAKsvG,KAAK0H,aAAah3G,KAAK07G,mBAAmB17G,KAAKsvG,KAAK0H,YAAY1X,IAAI,IAAIt/F,KAAK27G,kBAAkB,EAAED,mBAAmB,SAASj7F,GAAG,IAAImC,EAAE5iB,KAAK+3G,QAAQ,YAAO,IAASn1F,IAAInC,EAAEm7F,YAAYh5F,IAAInC,EAAEo7F,WAAWC,IAAI,KAAKr7F,EAAEs7F,aAAan5F,IAAInC,EAAEu7F,WAAWF,KAAI,MAAOr7F,CAAC,EAAEo1F,8BAA8B,SAASp1F,EAAEmC,GAAG,GAAGA,IAAInC,EAAEzgB,KAAK2zG,cAAcmB,SAASr0F,QAAQ,GAAG,IAAImC,EAAE62F,YAAY,CAAC72F,EAAEq5F,YAAY,IAAIt6G,EAAEihB,EAAE4zF,qBAAqBx2G,KAAK2zG,cAAcmC,YAAYn0G,EAAE,IAAI3B,KAAK2zG,cAAcmC,YAAYn0G,EAAE,GAAG,MAAMihB,EAAEo4F,aAAa,EAAE1E,uBAAuB,SAAS71F,EAAEmC,GAAG,IAAIjhB,EAAE+5C,EAAEj7B,EAAE02F,YAAYt5G,EAAE,EAAE,IAAI+kB,EAAEA,GAAG,GAAG/kB,EAAE69C,EAAEz9C,OAAOJ,KAAK8D,EAAE+5C,EAAE79C,cAAc4wE,EAAEsmC,WAAW/0G,KAAKs2G,uBAAuB30G,EAAEihB,GAAGA,EAAE9gB,KAAKH,GAAG,OAAOihB,CAAC,EAAEi4F,oBAAoB,SAASp6F,GAAG,OAAOA,EAAEniB,QAAQ49G,KAAKl8G,KAAK1B,QAAQ6zG,mBAAmB,CAACoE,cAAc,WAAW,OAAO,CAAC,EAAEC,mBAAmB,WAAW,MAAM,CAAC/1F,EAAE,GAAG,IAAIguD,EAAEujC,mBAAmBlC,QAAQ,CAAC6L,mBAAmB,IAAIltC,EAAEwoC,aAAa,IAAIxoC,EAAE0tC,QAAO,KAAK,KAAM,IAAI1tC,EAAE0tC,OAAO,IAAI,QAAQ1tC,EAAEujC,mBAAmBlC,QAAQ,CAAC4E,aAAa,CAAC2G,gBAAgB,WAAW,EAAEC,iBAAiB,SAAS76F,EAAEmC,GAAG5iB,KAAKu1G,iBAAiBoF,kCAAkC36G,KAAKk0G,oBAAoBx2G,KAAKiqD,MAAM3nD,KAAKsvG,KAAKyJ,cAAct4F,GAAGzgB,KAAKu1G,iBAAiBkB,6BAA6B,KAAK7zF,EAAE5iB,KAAKm4G,6BAA6Bn4G,KAAK+wG,KAAK,eAAe,EAAEwK,kBAAkB,SAAS96F,EAAEmC,GAAG5iB,KAAKu1G,iBAAiBoF,kCAAkC36G,KAAKk0G,oBAAoBx2G,KAAKiqD,MAAM3nD,KAAKsvG,KAAKyJ,cAAct4F,GAAGzgB,KAAKu1G,iBAAiBkB,6BAA6B,KAAK7zF,EAAE5iB,KAAKm4G,6BAA6Bn4G,KAAK+wG,KAAK,eAAe,EAAE6E,mBAAmB,SAASn1F,EAAEmC,GAAG5iB,KAAK61G,8BAA8Bp1F,EAAEmC,EAAE,GAAG6xF,eAAe,CAAC4G,gBAAgB,WAAWr7G,KAAKsvG,KAAKmJ,SAASC,WAAW,wBAAwB14G,KAAK+zG,kBAAkB,EAAEuH,iBAAiB,SAASz9G,EAAE+F,GAAG,IAAIzG,EAAEmU,EAAEtR,KAAKm4G,4BAA4Bx1G,EAAE3C,KAAK2zG,cAAclzF,EAAE/iB,KAAKiqD,MAAM3nD,KAAKsvG,KAAKyJ,cAAc/4G,KAAKk5G,aAAY,EAAGl5G,KAAKu1G,iBAAiB6G,aAAa9qG,EAAEzT,EAAE4iB,GAAE,SAASA,GAAG,IAAImC,EAAEjhB,EAAE8e,EAAE41F,QAAQ36D,EAAEj7B,EAAE+4F,SAAS,IAAIloG,EAAE4+C,SAASvuD,KAAKA,EAAE,MAAM8e,EAAE47F,mBAAmBx+G,EAAE,IAAI+F,GAAGjB,EAAEmzG,YAAYr1F,GAAGA,EAAEg2F,6BAA6B,KAAK7yG,EAAE0N,KAAKmP,EAAE67F,cAAc77F,EAAEg2F,6BAA6B90G,EAAEiC,EAAE0N,IAAInU,EAAEu+C,EAAEz9C,OAAO,EAAE,GAAGd,EAAEA,IAAIylB,EAAE84B,EAAEv+C,GAAGmU,EAAE4+C,SAASttC,EAAEyzF,UAAU1zG,EAAEmzG,YAAYlzF,EAAE,IAAG5iB,KAAKu8G,eAAev8G,KAAKu1G,iBAAiBiH,0BAA0BlrG,EAAE1N,GAAGjB,EAAEm0G,WAAU,SAASr2F,GAAGA,aAAaguD,EAAEmmC,gBAAgBn0F,EAAE+2F,OAAO/2F,EAAEy1F,aAAa,IAAGl2G,KAAKu1G,iBAAiB6G,aAAa9qG,EAAEzT,EAAE+F,GAAE,SAAS6c,GAAGA,EAAEg8F,kCAAkC74G,EAAE,IAAG5D,KAAKk5G,aAAY,EAAGl5G,KAAKi7G,UAAS,WAAWj7G,KAAKu1G,iBAAiB6G,aAAa9qG,EAAEzT,EAAE4iB,GAAE,SAASA,GAAG9d,EAAEmzG,YAAYr1F,GAAGA,EAAEy1F,aAAa,IAAGl2G,KAAK08G,eAAe,GAAE,EAAEnB,kBAAkB,SAAS96F,EAAEmC,GAAG5iB,KAAK28G,wBAAwB38G,KAAKu1G,iBAAiB90F,EAAE,EAAEmC,GAAG5iB,KAAKu1G,iBAAiBkB,6BAA6B,KAAK7zF,EAAE5iB,KAAKm4G,6BAA6Bn4G,KAAKu1G,iBAAiBoF,kCAAkC36G,KAAKk0G,oBAAoBx2G,KAAKiqD,MAAM3nD,KAAKsvG,KAAKyJ,cAAct4F,EAAEzgB,KAAKm4G,4BAA4B,EAAEvC,mBAAmB,SAASn1F,EAAEmC,GAAG,IAAIjhB,EAAE3B,KAAK07C,EAAE17C,KAAK2zG,cAAcj4D,EAAEo5D,SAASr0F,GAAGmC,IAAInC,IAAI,EAAEmC,EAAE62F,aAAa72F,EAAEo4F,cAAch7G,KAAKu8G,eAAev8G,KAAKq7G,kBAAkB56F,EAAEm8F,QAAQ58G,KAAKsvG,KAAKuN,mBAAmBj6F,EAAEqyF,cAAcx0F,EAAE67F,cAAct8G,KAAKi7G,UAAS,WAAWv/D,EAAEo6D,YAAYr1F,GAAGA,EAAEy1F,cAAcv0G,EAAE+6G,eAAe,MAAK18G,KAAKu8G,eAAe56G,EAAE05G,kBAAkB15G,EAAEg7G,wBAAwB/5F,EAAE5iB,KAAKsvG,KAAKuI,aAAa73G,KAAK01G,QAAQ,GAAGiH,wBAAwB,SAAS/5F,EAAEjhB,EAAE+5C,GAAG,IAAI79C,EAAEmC,KAAKm4G,4BAA4Bv0G,EAAElG,KAAKiqD,MAAM3nD,KAAKsvG,KAAKyJ,cAAcn2F,EAAEk6F,6CAA6Cj/G,EAAE+F,EAAEjC,EAAE,EAAE+5C,GAAG,IAAIv+C,EAAE6C,KAAKA,KAAKu8G,eAAe35F,EAAE45F,0BAA0B3+G,EAAE69C,GAAG17C,KAAKi7G,UAAS,WAAW,GAAG,IAAIr4F,EAAE62F,YAAY,CAAC,IAAIh5F,EAAEmC,EAAE42F,SAAS,GAAGx5G,KAAKk5G,aAAY,EAAGz4F,EAAEs8F,UAAUt8F,EAAEw0F,aAAaj1G,KAAKk5G,aAAY,EAAGz4F,EAAEy1F,aAAaz1F,EAAEy1F,aAAa,MAAMtzF,EAAEw5F,aAAav+G,EAAE69C,EAAE93C,GAAE,SAAS6c,GAAGA,EAAEk6F,kCAAkC98G,EAAE+F,EAAEjC,EAAE,EAAE,IAAGxE,EAAEu/G,eAAe,GAAE,EAAEA,cAAc,WAAW18G,KAAKsvG,OAAOtvG,KAAKsvG,KAAKmJ,SAASC,UAAU14G,KAAKsvG,KAAKmJ,SAASC,UAAU35G,QAAQ,wBAAwB,KAAKiB,KAAK+zG,mBAAmB/zG,KAAK+wG,KAAK,eAAe,EAAEwL,aAAa,WAAW9tC,EAAE+kC,KAAKwJ,QAAQplG,SAASi3F,KAAK9tD,YAAY,IAAI0tB,EAAEwuC,mBAAmB,SAASx8F,GAAG,OAAO,IAAIguD,EAAEujC,mBAAmBvxF,EAAE,EAAE,IAAI9e,EAAE8sE,EAAEmmC,cAAcnmC,EAAE4jC,OAAOnD,OAAO,CAAC5wG,QAAQmwE,EAAEyuC,KAAKthH,UAAU0C,QAAQoxB,WAAW,SAASjP,EAAEmC,EAAEjhB,EAAE+5C,GAAG+yB,EAAE4jC,OAAOz2G,UAAU8zB,WAAW5yB,KAAKkD,KAAK2B,EAAEA,EAAEg4G,UAAUh4G,EAAEszG,YAAY,IAAIxmC,EAAE0tC,OAAO,EAAE,GAAG,CAACD,KAAKl8G,KAAKsyG,KAAK7xF,EAAEniB,QAAQ8zG,cAAcpyG,KAAKs3G,OAAO72F,EAAEzgB,KAAK01G,MAAM9yF,EAAE5iB,KAAKw5G,SAAS,GAAGx5G,KAAK65G,eAAe,GAAG75G,KAAKy5G,YAAY,EAAEz5G,KAAK85G,kBAAiB,EAAG95G,KAAK05G,mBAAkB,EAAG15G,KAAKk3G,QAAQ,IAAIzoC,EAAEwoC,aAAat1G,GAAG3B,KAAK+6G,UAAUp5G,GAAG+5C,GAAG17C,KAAK+6G,UAAUr/D,EAAE,EAAE86D,mBAAmB,SAAS/1F,EAAEmC,GAAGnC,EAAEA,GAAG,GAAG,IAAI,IAAI9e,EAAE3B,KAAK65G,eAAe57G,OAAO,EAAE,GAAG0D,EAAEA,IAAI3B,KAAK65G,eAAel4G,GAAG60G,mBAAmB/1F,EAAEmC,GAAG,IAAI,IAAI84B,EAAE17C,KAAKw5G,SAASv7G,OAAO,EAAE,GAAGy9C,EAAEA,IAAI94B,GAAG5iB,KAAKw5G,SAAS99D,GAAGu9D,aAAax4F,EAAE3e,KAAK9B,KAAKw5G,SAAS99D,IAAI,OAAOj7B,CAAC,EAAE81F,cAAc,WAAW,OAAOv2G,KAAKy5G,WAAW,EAAE7B,aAAa,SAASn3F,GAAG,IAAI,IAAImC,EAAEjhB,EAAE3B,KAAK65G,eAAer1G,QAAQk3C,EAAE17C,KAAKs3G,OAAOhI,KAAKzxG,EAAE69C,EAAEyhE,cAAcn9G,KAAKk3G,SAAStzG,EAAE5D,KAAK01G,MAAM,EAAEv4G,EAAEu+C,EAAE0hE,UAAU,EAAEz7G,EAAE1D,QAAQ2F,EAAE/F,GAAG,CAAC+F,IAAI,IAAI0N,EAAE,GAAG,IAAIsR,EAAE,EAAEA,EAAEjhB,EAAE1D,OAAO2kB,IAAItR,EAAEA,EAAE9N,OAAO7B,EAAEihB,GAAGi3F,gBAAgBl4G,EAAE2P,CAAC,CAAC1N,EAAE/F,EAAEmC,KAAKs3G,OAAOhI,KAAK+N,QAAQr9G,KAAKq2G,QAAQzyG,GAAG/F,GAAGV,EAAE6C,KAAKs3G,OAAOhI,KAAK+N,QAAQr9G,KAAKq2G,QAAQl5G,EAAE,GAAG6C,KAAKs3G,OAAOhI,KAAKgO,UAAUt9G,KAAKk3G,QAAQz2F,EAAE,EAAEu2F,UAAU,WAAW,IAAIv2F,EAAE,IAAIguD,EAAEwoC,aAAa,OAAOx2F,EAAEyuF,OAAOlvG,KAAKk3G,SAASz2F,CAAC,EAAEu6F,YAAY,WAAWh7G,KAAK85G,kBAAiB,EAAG95G,KAAKw3G,OAAOx3G,KAAKu9G,QAAQv9G,KAAK,EAAEw9G,WAAW,WAAW,OAAOx9G,KAAK85G,mBAAmB95G,KAAKy9G,SAASz9G,KAAKs3G,OAAOh5G,QAAQ6zG,mBAAmBnyG,MAAMA,KAAK85G,kBAAiB,GAAI95G,KAAKy9G,SAASD,YAAY,EAAEE,aAAa,WAAW,OAAO19G,KAAKy9G,SAASC,cAAc,EAAE3C,UAAU,SAASt6F,EAAEmC,GAAG5iB,KAAK85G,kBAAiB,EAAG95G,KAAK05G,mBAAkB,EAAG15G,KAAK29G,kBAAkBl9F,GAAGA,aAAaguD,EAAEmmC,eAAehyF,IAAI5iB,KAAK65G,eAAe/3G,KAAK2e,GAAGA,EAAEk1F,SAAS31G,MAAMA,KAAKy5G,aAAah5F,EAAEg5F,cAAc72F,GAAG5iB,KAAKw5G,SAAS13G,KAAK2e,GAAGzgB,KAAKy5G,eAAez5G,KAAK21G,UAAU31G,KAAK21G,SAASoF,UAAUt6F,GAAE,EAAG,EAAEk9F,kBAAkB,SAASl9F,GAAGzgB,KAAK25G,WAAW35G,KAAK25G,SAASl5F,EAAEk5F,UAAUl5F,EAAE41F,QAAQ,EAAEuH,aAAa,WAAW,IAAIn9F,EAAEzgB,KAAKk3G,QAAQz2F,EAAEu7F,aAAav7F,EAAEu7F,WAAWF,IAAI,IAAIr7F,EAAEu7F,WAAW6B,IAAI,KAAKp9F,EAAEo7F,aAAap7F,EAAEo7F,WAAWC,KAAI,IAAKr7F,EAAEo7F,WAAWgC,KAAI,IAAK,EAAErI,mBAAmB,WAAW,IAAI/0F,EAAEmC,EAAEjhB,EAAE+5C,EAAE79C,EAAEmC,KAAKw5G,SAAS51G,EAAE5D,KAAK65G,eAAe18G,EAAE,EAAEmU,EAAE,EAAE3O,EAAE3C,KAAKy5G,YAAY,GAAG,IAAI92G,EAAE,CAAC,IAAI3C,KAAK49G,eAAen9F,EAAE,EAAEA,EAAE5iB,EAAEI,OAAOwiB,IAAI9e,EAAE9D,EAAE4iB,GAAG41F,QAAQr2G,KAAKk3G,QAAQhI,OAAOvtG,GAAGxE,GAAGwE,EAAEm6G,IAAIxqG,GAAG3P,EAAEk8G,IAAI,IAAIp9F,EAAE,EAAEA,EAAE7c,EAAE3F,OAAOwiB,KAAKmC,EAAEhf,EAAE6c,IAAIi5F,mBAAmB92F,EAAE4yF,qBAAqBx1G,KAAKk3G,QAAQhI,OAAOtsF,EAAEs0F,SAASv1G,EAAEihB,EAAEk7F,SAASpiE,EAAE94B,EAAE62F,YAAYt8G,GAAGwE,EAAEm6G,IAAIpgE,EAAEpqC,GAAG3P,EAAEk8G,IAAIniE,EAAE17C,KAAKq2G,QAAQr2G,KAAK89G,SAAS,IAAIrvC,EAAE0tC,OAAOh/G,EAAEwF,EAAE2O,EAAE3O,GAAG3C,KAAK05G,mBAAkB,CAAE,CAAC,EAAEuC,UAAU,SAASx7F,GAAGA,IAAIzgB,KAAK+9G,cAAc/9G,KAAKq2G,QAAQr2G,KAAK+8G,UAAUt8F,IAAIzgB,KAAKs3G,OAAO3D,cAAcmB,SAAS90G,KAAK,EAAEg+G,8BAA8B,SAASv9F,EAAE5iB,EAAE+kB,GAAG5iB,KAAKo8G,aAAa37F,EAAEzgB,KAAKs3G,OAAOhI,KAAKyJ,aAAan2F,EAAE,GAAE,SAASnC,GAAG,IAAImC,EAAEjhB,EAAE+5C,EAAEj7B,EAAE+4F,SAAS,IAAI52F,EAAE84B,EAAEz9C,OAAO,EAAE,GAAG2kB,EAAEA,KAAKjhB,EAAE+5C,EAAE94B,IAAI40F,QAAQ71G,EAAEi7G,QAAQ/+G,GAAG8D,EAAE26G,cAAc,IAAE,SAAS77F,GAAG,IAAImC,EAAEjhB,EAAE+5C,EAAEj7B,EAAEo5F,eAAe,IAAIj3F,EAAE84B,EAAEz9C,OAAO,EAAE,GAAG2kB,EAAEA,KAAKjhB,EAAE+5C,EAAE94B,IAAI40F,QAAQ71G,EAAEi7G,QAAQ/+G,GAAG8D,EAAE26G,cAAc,GAAE,EAAEQ,6CAA6C,SAASl6F,EAAEjhB,EAAE+5C,EAAE79C,GAAGmC,KAAKo8G,aAAax5F,EAAE/kB,EAAE8D,GAAE,SAAS8e,GAAGA,EAAEu9F,8BAA8Bp7F,EAAEnC,EAAE62F,OAAOhI,KAAKuN,mBAAmBp8F,EAAEw0F,aAAahzE,QAAQyZ,GAAGj7B,EAAE47F,mBAAmB3gE,EAAE,IAAI79C,GAAG4iB,EAAEy1F,cAAcz1F,EAAEk6F,kCAAkC/3F,EAAEjhB,EAAE+5C,IAAIj7B,EAAE67F,cAAc77F,EAAEw7F,WAAW,GAAE,EAAEO,0BAA0B,SAAS/7F,EAAEmC,GAAG5iB,KAAKo8G,aAAa37F,EAAEzgB,KAAKs3G,OAAOhI,KAAKyJ,aAAan2F,EAAE,MAAK,SAASnC,GAAGA,EAAEy1F,aAAa,GAAE,EAAEO,6BAA6B,SAAS/6D,EAAE79C,EAAE+F,GAAG5D,KAAKo8G,aAAax4G,EAAE5D,KAAKs3G,OAAOhI,KAAKyJ,aAAa,EAAEl7G,GAAE,SAAS4iB,GAAG,GAAG5iB,IAAI4iB,EAAEi1F,MAAM,IAAI,IAAI9yF,EAAEnC,EAAE+4F,SAASv7G,OAAO,EAAE,GAAG2kB,EAAEA,IAAI,CAAC,IAAIjhB,EAAE8e,EAAE+4F,SAAS52F,GAAGhf,EAAEssD,SAASvuD,EAAE00G,WAAW36D,IAAI/5C,EAAEo8G,cAAcp8G,EAAEszG,YAAYtzG,EAAEo7G,UAAUrhE,GAAG/5C,EAAE26G,aAAa36G,EAAE26G,eAAe77F,EAAE62F,OAAO3D,cAAcmB,SAASnzG,GAAG,CAAC,IAAE,SAAS8e,GAAGA,EAAEw7F,UAAUvgE,EAAE,GAAE,EAAE+gE,kCAAkC,SAASh8F,GAAG,IAAI,IAAImC,EAAE5iB,KAAKw5G,SAASv7G,OAAO,EAAE,GAAG2kB,EAAEA,IAAI,CAAC,IAAIjhB,EAAE3B,KAAKw5G,SAAS52F,GAAGjhB,EAAEo8G,gBAAgBp8G,EAAEo7G,UAAUp7G,EAAEo8G,sBAAsBp8G,EAAEo8G,cAAc,CAAC,GAAGt9F,EAAE,IAAIzgB,KAAK01G,MAAM,IAAI,IAAIh6D,EAAE17C,KAAK65G,eAAe57G,OAAO,EAAE,GAAGy9C,EAAEA,IAAI17C,KAAK65G,eAAen+D,GAAGuiE,wBAAwB,IAAI,IAAIpgH,EAAEmC,KAAK65G,eAAe57G,OAAO,EAAE,GAAGJ,EAAEA,IAAImC,KAAK65G,eAAeh8G,GAAG4+G,kCAAkCh8F,EAAE,EAAEw9F,iBAAiB,WAAWj+G,KAAK+9G,gBAAgB/9G,KAAK+8G,UAAU/8G,KAAK+9G,sBAAsB/9G,KAAK+9G,cAAc,EAAEpD,kCAAkC,SAASl6F,EAAEmC,EAAEjhB,EAAE+5C,GAAG,IAAI79C,EAAE+F,EAAE5D,KAAKo8G,aAAa37F,EAAEmC,EAAE,EAAEjhB,EAAE,GAAE,SAAS8e,GAAG,IAAI7c,EAAE6c,EAAE+4F,SAASv7G,OAAO,EAAE,GAAG2F,EAAEA,IAAI/F,EAAE4iB,EAAE+4F,SAAS51G,GAAG83C,GAAGA,EAAEwU,SAASryD,EAAEw4G,WAAW51F,EAAE62F,OAAO3D,cAAcmC,YAAYj4G,GAAGA,EAAEq4G,aAAar4G,EAAEq4G,cAAc,IAAE,SAASz1F,GAAG,IAAI7c,EAAE6c,EAAEo5F,eAAe57G,OAAO,EAAE,GAAG2F,EAAEA,IAAI/F,EAAE4iB,EAAEo5F,eAAej2G,GAAG83C,GAAGA,EAAEwU,SAASryD,EAAEw4G,WAAW51F,EAAE62F,OAAO3D,cAAcmC,YAAYj4G,GAAGA,EAAEq4G,aAAar4G,EAAEq4G,cAAc,GAAE,EAAEkG,aAAa,SAAS37F,EAAEmC,EAAEjhB,EAAE+5C,EAAE79C,GAAG,IAAI+F,EAAEzG,EAAEmU,EAAEtR,KAAK65G,eAAel3G,EAAE3C,KAAK01G,MAAM,GAAG9yF,GAAGjgB,IAAI+4C,GAAGA,EAAE17C,MAAMnC,GAAG8E,IAAIhB,GAAG9D,EAAEmC,OAAO2C,EAAEigB,GAAGjgB,EAAEhB,EAAE,IAAIiC,EAAE0N,EAAErT,OAAO,EAAE,GAAG2F,EAAEA,KAAKzG,EAAEmU,EAAE1N,IAAI81G,mBAAmBv8G,EAAEq4G,qBAAqB/0F,EAAE26F,WAAWj+G,EAAE+5G,UAAU/5G,EAAEi/G,aAAa37F,EAAEmC,EAAEjhB,EAAE+5C,EAAE79C,EAAE,EAAEw+G,gBAAgB,WAAW,OAAO,EAAEr8G,KAAK65G,eAAe57G,QAAQ+B,KAAK65G,eAAe,GAAGJ,cAAcz5G,KAAKy5G,WAAW,IAAIhrC,EAAE4jC,OAAOvC,QAAQ,CAACwM,YAAY,WAAW,IAAI77F,EAAEzgB,KAAK1B,QAAQqlB,QAAQ,OAAO3jB,KAAKk+G,WAAW,GAAGl+G,KAAK1B,QAAQqlB,QAAQlD,EAAEzgB,IAAI,EAAEk2G,YAAY,WAAW,OAAOl2G,KAAKk+G,WAAWl+G,KAAK1B,QAAQqlB,QAAQ,IAAI8qD,EAAEmsC,aAAa,SAASn6F,GAAGzgB,KAAKm+G,UAAU19F,EAAEzgB,KAAKo+G,YAAY39F,EAAEA,EAAEzgB,KAAKq+G,MAAM,CAAC,EAAEr+G,KAAKs+G,aAAa,CAAC,CAAC,EAAE7vC,EAAEmsC,aAAah/G,UAAU,CAACg+G,UAAU,SAASn5F,EAAEmC,GAAG,IAAIjhB,EAAE3B,KAAKu+G,UAAU37F,EAAErjB,GAAGm8C,EAAE17C,KAAKu+G,UAAU37F,EAAEpjB,GAAG3B,EAAEmC,KAAKq+G,MAAMz6G,EAAE/F,EAAE69C,GAAG79C,EAAE69C,IAAI,CAAC,EAAEv+C,EAAEyG,EAAEjC,GAAGiC,EAAEjC,IAAI,GAAG2P,EAAEm9D,EAAE+kC,KAAK6D,MAAM52F,GAAGzgB,KAAKs+G,aAAahtG,GAAGsR,EAAEzlB,EAAE2E,KAAK2e,EAAE,EAAE+9F,aAAa,SAAS/9F,EAAEmC,GAAG5iB,KAAKg5G,aAAav4F,GAAGzgB,KAAK45G,UAAUn5F,EAAEmC,EAAE,EAAEo2F,aAAa,SAASv4F,EAAEmC,GAAG,IAAIjhB,EAAE+5C,EAAE79C,EAAEmC,KAAKu+G,UAAU37F,EAAErjB,GAAGqE,EAAE5D,KAAKu+G,UAAU37F,EAAEpjB,GAAGrC,EAAE6C,KAAKq+G,MAAM/sG,EAAEnU,EAAEyG,GAAGzG,EAAEyG,IAAI,CAAC,EAAEjB,EAAE2O,EAAEzT,GAAGyT,EAAEzT,IAAI,GAAG,WAAWmC,KAAKs+G,aAAa7vC,EAAE+kC,KAAK6D,MAAM52F,IAAI9e,EAAE,EAAE+5C,EAAE/4C,EAAE1E,OAAO0D,EAAE+5C,EAAE/5C,IAAI,GAAGgB,EAAEhB,KAAK8e,EAAE,OAAO9d,EAAEskB,OAAOtlB,EAAE,GAAG,IAAI+5C,UAAUpqC,EAAEzT,IAAG,CAAE,EAAE4gH,WAAW,SAASh+F,EAAEmC,GAAG,IAAIjhB,EAAE+5C,EAAE79C,EAAE+F,EAAEzG,EAAEmU,EAAE3O,EAAE3C,KAAKq+G,MAAM,IAAI18G,KAAKgB,EAAE,IAAI+4C,KAAKv+C,EAAEwF,EAAEhB,GAAG,IAAI9D,EAAE,EAAE+F,GAAG0N,EAAEnU,EAAEu+C,IAAIz9C,OAAOJ,EAAE+F,EAAE/F,IAAI4iB,EAAE3jB,KAAK8lB,EAAEtR,EAAEzT,MAAMA,IAAI+F,IAAI,EAAEk3G,cAAc,SAASr6F,GAAG,IAAImC,EAAEjhB,EAAE+5C,EAAE79C,EAAE+F,EAAEzG,EAAEmU,EAAE3O,EAAE+1C,EAAE14C,KAAKu+G,UAAU99F,EAAElhB,GAAGi3D,EAAEx2D,KAAKu+G,UAAU99F,EAAEjhB,GAAGkqD,EAAE1pD,KAAKs+G,aAAavgH,EAAEiC,KAAKo+G,YAAY3tG,EAAE,KAAK,IAAImS,EAAE4zC,EAAE,EAAE5zC,GAAG4zC,EAAE,EAAE5zC,IAAI,GAAG/kB,EAAEmC,KAAKq+G,MAAMz7F,GAAG,IAAIjhB,EAAE+2C,EAAE,EAAE/2C,GAAG+2C,EAAE,EAAE/2C,IAAI,GAAGiC,EAAE/F,EAAE8D,GAAG,IAAI+5C,EAAE,EAAEv+C,EAAEyG,EAAE3F,OAAOy9C,EAAEv+C,EAAEu+C,IAAIpqC,EAAE1N,EAAE83C,KAAK/4C,EAAE3C,KAAK0+G,QAAQh1D,EAAE+kB,EAAE+kC,KAAK6D,MAAM/lG,IAAImP,IAAI1iB,GAAG4E,GAAG5E,GAAG,OAAO0S,KAAK1S,EAAE4E,EAAE8N,EAAEa,GAAG,OAAOb,CAAC,EAAE8tG,UAAU,SAAS99F,GAAG,IAAImC,EAAEllB,KAAKiqD,MAAMlnC,EAAEzgB,KAAKm+G,WAAW,OAAOpwF,SAASnL,GAAGA,EAAEnC,CAAC,EAAEi+F,QAAQ,SAASj+F,EAAEmC,GAAG,IAAIjhB,EAAEihB,EAAErjB,EAAEkhB,EAAElhB,EAAEm8C,EAAE94B,EAAEpjB,EAAEihB,EAAEjhB,EAAE,OAAOmC,EAAEA,EAAE+5C,EAAEA,CAAC,GAAG+yB,EAAEkwC,UAAU,CAACC,WAAW,SAASn+F,EAAEmC,GAAG,IAAIjhB,EAAEihB,EAAE,GAAGk5F,IAAIl5F,EAAE,GAAGk5F,IAAI,OAAOl5F,EAAE,GAAGi7F,IAAIj7F,EAAE,GAAGi7F,MAAMp9F,EAAEq7F,IAAIl5F,EAAE,GAAGk5F,KAAKn6G,GAAG8e,EAAEo9F,IAAIj7F,EAAE,GAAGi7F,IAAI,EAAEgB,iCAAiC,SAASp+F,EAAEmC,GAAG,IAAIjhB,EAAE+5C,EAAE79C,EAAE+F,EAAE,EAAEzG,EAAE,KAAKmU,EAAE,GAAG,IAAI3P,EAAEihB,EAAE3kB,OAAO,EAAE,GAAG0D,EAAEA,IAAI+5C,EAAE94B,EAAEjhB,GAAG,GAAG9D,EAAEmC,KAAK4+G,WAAWljE,EAAEj7B,MAAMnP,EAAExP,KAAK45C,GAAG93C,EAAE/F,IAAI+F,EAAE/F,EAAEV,EAAEu+C,IAAI,MAAM,CAACojE,SAAS3hH,EAAE4hH,UAAUztG,EAAE,EAAE0tG,gBAAgB,SAASv+F,EAAEmC,GAAG,IAAIjhB,EAAE,GAAG+5C,EAAE17C,KAAK6+G,iCAAiCp+F,EAAEmC,GAAG,OAAO84B,EAAEojE,SAASn9G,GAAGA,EAAEA,EAAE6B,OAAOxD,KAAKg/G,gBAAgB,CAACv+F,EAAE,GAAGi7B,EAAEojE,UAAUpjE,EAAEqjE,aAAav7G,OAAOxD,KAAKg/G,gBAAgB,CAACtjE,EAAEojE,SAASr+F,EAAE,IAAIi7B,EAAEqjE,YAAY,CAACt+F,EAAE,GAAG,EAAEg6F,cAAc,SAASh6F,GAAG,IAAImC,EAAEjhB,GAAE,EAAG+5C,GAAE,EAAG79C,GAAE,EAAG+F,GAAE,EAAGzG,EAAE,KAAKmU,EAAE,KAAK3O,EAAE,KAAK+1C,EAAE,KAAK8d,EAAE,KAAK9M,EAAE,KAAK,IAAI9mC,EAAEnC,EAAExiB,OAAO,EAAE,GAAG2kB,EAAEA,IAAI,CAAC,IAAI7kB,EAAE0iB,EAAEmC,KAAI,IAAKjhB,GAAG5D,EAAE+9G,IAAIn6G,KAAKA,GAAGxE,EAAEY,GAAG+9G,OAAM,IAAKpgE,GAAG39C,EAAE+9G,IAAIpgE,KAAKA,GAAGpqC,EAAEvT,GAAG+9G,OAAM,IAAKj+G,GAAGE,EAAE8/G,IAAIhgH,KAAKA,GAAG8E,EAAE5E,GAAG8/G,OAAM,IAAKj6G,GAAG7F,EAAE8/G,IAAIj6G,KAAKA,GAAG80C,EAAE36C,GAAG8/G,IAAI,CAAC,OAAOrnD,EAAE9a,IAAI/5C,GAAG+nD,EAAEp4C,EAAEnU,IAAIusD,EAAEhR,EAAE/1C,GAAG,GAAGa,OAAOxD,KAAKg/G,gBAAgB,CAACt1D,EAAE8M,GAAG/1C,GAAGzgB,KAAKg/G,gBAAgB,CAACxoD,EAAE9M,GAAGjpC,GAAG,GAAGguD,EAAEmmC,cAAc9E,QAAQ,CAAC2K,cAAc,WAAW,IAAIh6F,EAAEmC,EAAEjhB,EAAE3B,KAAKw2G,qBAAqB96D,EAAE,GAAG,IAAI94B,EAAEjhB,EAAE1D,OAAO,EAAE,GAAG2kB,EAAEA,IAAInC,EAAE9e,EAAEihB,GAAGqyF,YAAYv5D,EAAE55C,KAAK2e,GAAG,OAAOguD,EAAEkwC,UAAUlE,cAAc/+D,EAAE,IAAI+yB,EAAEmmC,cAAc9E,QAAQ,CAACmP,KAAK,EAAEvhH,KAAK6H,GAAG25G,sBAAsB,GAAGC,kBAAkB,EAAEC,sBAAsB,GAAGC,mBAAmB,GAAGC,oBAAoB,EAAEC,wBAAwB,EAAE7H,SAAS,WAAW,GAAG13G,KAAKs3G,OAAOkD,cAAcx6G,OAAOA,KAAKs3G,OAAOvD,iBAAiB,CAAC,IAAItzF,EAAEmC,EAAE5iB,KAAKw2G,mBAAmB,MAAK,GAAI70G,EAAE3B,KAAKs3G,OAAOhI,KAAKuN,mBAAmB78G,KAAKq2G,SAASr2G,KAAKs3G,OAAOlC,cAAc30F,GAAGzgB,KAAKs3G,OAAOkD,YAAYx6G,MAAMs3G,OAAOh5G,QAAQ00G,uBAAuBhzG,KAAKs3G,OAAOh5G,QAAQ00G,uBAAuBpwF,EAAE3kB,OAAO0D,GAAGihB,EAAE3kB,QAAQ+B,KAAKu/G,wBAAwBv/G,KAAKw/G,sBAAsB58F,EAAE3kB,OAAO0D,IAAIA,EAAEnC,GAAG,GAAGQ,KAAKy/G,sBAAsB78F,EAAE3kB,OAAO0D,IAAI3B,KAAK0/G,mBAAmB98F,EAAEnC,EAAE,CAAC,EAAEk/F,WAAW,SAASl/F,GAAGzgB,KAAKs3G,OAAOvD,mBAAmB/zG,KAAK4/G,qBAAqBn/F,GAAGzgB,KAAKs3G,OAAOkD,YAAY,KAAK,EAAEiF,sBAAsB,SAASh/F,EAAEmC,GAAG,IAAIjhB,EAAE+5C,EAAE79C,EAAEmC,KAAKs3G,OAAOh5G,QAAQ20G,2BAA2BjzG,KAAKk/G,uBAAuB,EAAEz+F,GAAGzgB,KAAKi/G,KAAKr7G,EAAE5D,KAAKi/G,KAAKx+F,EAAEtjB,EAAE,GAAG,IAAIU,EAAEH,KAAK+G,IAAI5G,EAAE,IAAIV,EAAEc,OAAOwiB,EAAE9e,EAAE,EAAEA,EAAE8e,EAAE9e,IAAI+5C,EAAE17C,KAAKm/G,kBAAkBx9G,EAAEiC,EAAEzG,EAAEwE,GAAG,IAAI8sE,EAAE0E,MAAMvwD,EAAErjB,EAAE1B,EAAEH,KAAKugC,IAAIyd,GAAG94B,EAAEpjB,EAAE3B,EAAEH,KAAK4H,IAAIo2C,IAAImkE,SAAS,OAAO1iH,CAAC,EAAEqiH,sBAAsB,SAAS/+F,EAAEmC,GAAG,IAAIjhB,EAAE+5C,EAAE17C,KAAKs3G,OAAOh5G,QAAQ20G,2BAA2Bp1G,EAAE69C,EAAE17C,KAAKq/G,mBAAmBz7G,EAAE83C,EAAE17C,KAAKo/G,sBAAsBjiH,EAAEu+C,EAAE17C,KAAKs/G,oBAAoBt/G,KAAKi/G,KAAK3tG,EAAE,EAAE3O,EAAE,GAAG,IAAIhB,EAAEgB,EAAE1E,OAAOwiB,EAAE,GAAG9e,EAAEA,IAAIA,EAAE8e,IAAI9d,EAAEhB,GAAG,IAAI8sE,EAAE0E,MAAMvwD,EAAErjB,EAAE1B,EAAEH,KAAKugC,IAAI3sB,GAAGsR,EAAEpjB,EAAE3B,EAAEH,KAAK4H,IAAIgM,IAAIuuG,UAAUhiH,GAAGV,GAAGmU,GAAG1N,EAAE/F,EAAE,KAAK8D,GAAG,OAAOgB,CAAC,EAAEk0G,uBAAuB,WAAW,IAAIp2F,EAAEmC,EAAEjhB,EAAE3B,KAAKs3G,OAAO57D,EAAE/5C,EAAE2tG,KAAKzxG,EAAE8D,EAAEgyG,cAAc/vG,EAAE5D,KAAKw2G,mBAAmB,MAAK,GAAI,IAAI70G,EAAEu3G,aAAY,EAAGl5G,KAAKk+G,WAAW,GAAGt7F,EAAEhf,EAAE3F,OAAO,EAAE,GAAG2kB,EAAEA,IAAInC,EAAE7c,EAAEgf,GAAG/kB,EAAEi4G,YAAYr1F,GAAGA,EAAEq/F,qBAAqBr/F,EAAEs8F,UAAUt8F,EAAEq/F,2BAA2Br/F,EAAEq/F,oBAAoBr/F,EAAEs/F,iBAAiBt/F,EAAEs/F,gBAAgB,GAAGt/F,EAAEu/F,aAAatkE,EAAEo6D,YAAYr1F,EAAEu/F,mBAAmBv/F,EAAEu/F,YAAYr+G,EAAEovG,KAAK,eAAe,CAAC/R,QAAQh/F,KAAKigH,QAAQr8G,IAAIjC,EAAEu3G,aAAY,EAAGv3G,EAAE64G,YAAY,IAAI,IAAI/rC,EAAEomC,yBAAyBpmC,EAAEmmC,cAAc1F,OAAO,CAACwQ,mBAAmB,SAASj/F,EAAEmC,GAAG,IAAIjhB,EAAE+5C,EAAE79C,EAAE+F,EAAEzG,EAAE6C,KAAKs3G,OAAOhmG,EAAEnU,EAAEmyG,KAAK3sG,EAAExF,EAAEw2G,cAAcj7D,EAAE14C,KAAKs3G,OAAOh5G,QAAQ40G,yBAAyB,IAAI/1G,EAAE+7G,aAAY,EAAGv3G,EAAE,EAAEA,EAAE8e,EAAExiB,OAAO0D,IAAIiC,EAAE0N,EAAE4uG,mBAAmBt9F,EAAEjhB,IAAI+5C,EAAEj7B,EAAE9e,GAAG9D,EAAE,IAAI4wE,EAAE0xC,SAAS,CAACngH,KAAKq2G,QAAQzyG,GAAG80C,GAAGpnC,EAAEwjG,SAASj3G,GAAG69C,EAAEskE,WAAWniH,EAAE69C,EAAEokE,mBAAmBpkE,EAAE26D,QAAQ36D,EAAEqhE,UAAUn5G,GAAG83C,EAAEqkE,iBAAiBrkE,EAAEqkE,gBAAgB,KAAKp9G,EAAEmyG,SAASp5D,GAAG17C,KAAKk+G,WAAW,IAAI/gH,EAAE+7G,aAAY,EAAG/7G,EAAE4zG,KAAK,aAAa,CAAC/R,QAAQh/F,KAAKigH,QAAQx/F,GAAG,EAAEm/F,qBAAqB,WAAW5/G,KAAK62G,wBAAwB,IAAIpoC,EAAEmmC,cAAc9E,QAAQ,CAAC4P,mBAAmB,SAASj/F,EAAEmC,GAAG,IAAIjhB,EAAE+5C,EAAE79C,EAAE+F,EAAEzG,EAAEmU,EAAE3O,EAAE3C,KAAK04C,EAAE14C,KAAKs3G,OAAO9gD,EAAE9d,EAAE42D,KAAK5lD,EAAEhR,EAAEi7D,cAAc51G,EAAEiC,KAAKq2G,QAAQ5lG,EAAE+lD,EAAEqmD,mBAAmB9+G,GAAG+6B,EAAE21C,EAAE2xC,KAAKC,IAAIr5F,EAAEynD,EAAEygC,OAAO,CAAC,EAAElvG,KAAKs3G,OAAOh5G,QAAQ40G,0BAA0BnrD,EAAE/gC,EAAErD,QAAQ,SAAI,IAASokC,IAAIA,EAAE0mB,EAAEujC,mBAAmBp2G,UAAU0C,QAAQ40G,yBAAyBvvF,SAASmV,GAAG9R,EAAErD,QAAQ,EAAEqD,EAAE0xF,WAAW1xF,EAAE0xF,WAAW,IAAI,+BAA+B1xF,EAAErD,QAAQokC,EAAErP,EAAEwgE,aAAY,EAAGv3G,EAAE,EAAEA,EAAE8e,EAAExiB,OAAO0D,IAAI+5C,EAAEj7B,EAAE9e,GAAG2P,EAAEklD,EAAE0pD,mBAAmBt9F,EAAEjhB,IAAI9D,EAAE,IAAI4wE,EAAE0xC,SAAS,CAACpiH,EAAEuT,GAAG0V,GAAGwvC,EAAEs+C,SAASj3G,GAAG69C,EAAEskE,WAAWniH,EAAEi7B,IAAI37B,GAAGyG,EAAE/F,EAAEyiH,OAAO14G,iBAAiB,GAAGhE,EAAE0C,MAAMi6G,gBAAgBpjH,EAAEyG,EAAE0C,MAAMk6G,iBAAiBrjH,GAAGu+C,EAAEqkE,iBAAiBrkE,EAAEqkE,gBAAgB,KAAKrkE,EAAE4gE,aAAa5gE,EAAE4gE,cAAc5yD,EAAEorD,SAASp5D,GAAGA,EAAEkhE,SAASlhE,EAAEkhE,QAAQnsG,GAAG,IAAIioC,EAAE6jE,eAAe7jE,EAAE2iE,kBAAkB15G,EAAE8e,EAAExiB,OAAO,EAAE,GAAG0D,EAAEA,IAAI2P,EAAEklD,EAAE0pD,mBAAmBt9F,EAAEjhB,KAAK+5C,EAAEj7B,EAAE9e,IAAIm+G,mBAAmBpkE,EAAE26D,QAAQ36D,EAAEqhE,UAAUzrG,GAAGoqC,EAAEw6D,aAAax6D,EAAEw6D,cAAcp9E,KAAKl1B,GAAG/F,EAAE69C,EAAEskE,YAAYM,OAAOh6G,MAAMk6G,iBAAiB,EAAE3iH,EAAE4iH,SAAS,CAAC98F,QAAQokC,KAAK/nD,KAAKk+G,WAAW,IAAIxlE,EAAEwgE,aAAY,EAAG5yF,YAAW,WAAWoyB,EAAEgkE,gBAAgBhkE,EAAEq4D,KAAK,aAAa,CAAC/R,QAAQr8F,EAAEs9G,QAAQx/F,GAAG,GAAE,IAAI,EAAEm/F,qBAAqB,SAASn/F,GAAG,IAAImC,EAAEjhB,EAAE+5C,EAAE79C,EAAE+F,EAAEzG,EAAEmU,EAAEtR,KAAK2C,EAAE3C,KAAKs3G,OAAO5+D,EAAE/1C,EAAE2sG,KAAK94C,EAAE7zD,EAAEgxG,cAAcjqD,EAAEjpC,EAAEi4B,EAAEgoE,uBAAuB1gH,KAAKq2G,QAAQ51F,EAAExH,KAAKwH,EAAEmxB,QAAQ8G,EAAEmkE,mBAAmB78G,KAAKq2G,SAASt4G,EAAEiC,KAAKw2G,mBAAmB,MAAK,GAAI/lG,EAAEg+D,EAAE2xC,KAAKC,IAAI,IAAI19G,EAAEu2G,aAAY,EAAGv2G,EAAE04G,kBAAkBr7G,KAAKk+G,WAAW,GAAGv8G,EAAE5D,EAAEE,OAAO,EAAE,GAAG0D,EAAEA,KAAKihB,EAAE7kB,EAAE4D,IAAIm+G,qBAAqBl9F,EAAE+9F,aAAa/9F,EAAEm6F,UAAUn6F,EAAEk9F,2BAA2Bl9F,EAAEk9F,mBAAmB3iH,GAAE,EAAGylB,EAAEg6F,UAAUh6F,EAAEg6F,QAAQlzD,GAAGvsD,GAAE,GAAIylB,EAAE05F,cAAc15F,EAAE05F,cAAcn/G,GAAE,GAAIA,GAAGq5D,EAAEs/C,YAAYlzF,GAAGnS,IAAI7M,GAAG/F,GAAG69C,EAAE94B,EAAEo9F,YAAYM,OAAO14G,iBAAiB,GAAG/J,EAAEyI,MAAMk6G,iBAAiB58G,EAAE83C,EAAE+kE,SAAS,CAAC98F,QAAQ,MAAMhhB,EAAEu2G,aAAY,EAAG5yF,YAAW,WAAW,IAAI7F,EAAE,EAAE,IAAI9e,EAAE5D,EAAEE,OAAO,EAAE,GAAG0D,EAAEA,KAAKihB,EAAE7kB,EAAE4D,IAAIq+G,YAAYv/F,IAAI,IAAI9e,EAAE5D,EAAEE,OAAO,EAAE,GAAG0D,EAAEA,KAAKihB,EAAE7kB,EAAE4D,IAAIq+G,aAAap9F,EAAEszF,aAAatzF,EAAEszF,cAActzF,EAAEm9F,iBAAiBn9F,EAAEm9F,gBAAgB,GAAG,EAAEt/F,GAAG+1C,EAAEs/C,YAAYlzF,GAAG81B,EAAEo9D,YAAYlzF,EAAEo9F,mBAAmBp9F,EAAEo9F,YAAYr9G,EAAE+5G,gBAAgB/5G,EAAEouG,KAAK,eAAe,CAAC/R,QAAQ1tF,EAAE2uG,QAAQliH,GAAG,GAAE,IAAI,IAAI0wE,EAAEujC,mBAAmBlC,QAAQ,CAAC0K,YAAY,KAAKmF,WAAW,WAAW3/G,KAAKo1G,YAAYvzG,MAAM7B,KAAKkH,UAAU,EAAEoxG,iBAAiB,WAAWt4G,KAAKsvG,KAAKp2F,GAAG,QAAQlZ,KAAK4gH,mBAAmB5gH,MAAMA,KAAKsvG,KAAKhxG,QAAQuiH,eAAe7gH,KAAKsvG,KAAKp2F,GAAG,YAAYlZ,KAAK8gH,qBAAqB9gH,MAAMA,KAAKsvG,KAAKp2F,GAAG,UAAUlZ,KAAK62G,uBAAuB72G,MAAMyuE,EAAE+sC,QAAQ1nD,OAAO9zD,KAAKsvG,KAAKyR,YAAY/gH,KAAK,EAAE24G,oBAAoB,WAAW34G,KAAKsvG,KAAK78C,IAAI,QAAQzyD,KAAK4gH,mBAAmB5gH,MAAMA,KAAKsvG,KAAK78C,IAAI,YAAYzyD,KAAK8gH,qBAAqB9gH,MAAMA,KAAKsvG,KAAK78C,IAAI,WAAWzyD,KAAKghH,oBAAoBhhH,MAAMA,KAAKsvG,KAAK78C,IAAI,UAAUzyD,KAAK62G,uBAAuB72G,MAAMA,KAAK62G,wBAAwB,EAAEiK,qBAAqB,WAAW9gH,KAAKsvG,MAAMtvG,KAAKsvG,KAAKp2F,GAAG,WAAWlZ,KAAKghH,oBAAoBhhH,KAAK,EAAEghH,oBAAoB,SAASvgG,GAAGguD,EAAE2gC,QAAQ6R,SAASjhH,KAAKsvG,KAAKmJ,SAAS,sBAAsBz4G,KAAKsvG,KAAK78C,IAAI,WAAWzyD,KAAKghH,oBAAoBhhH,MAAMA,KAAKo1G,YAAY30F,GAAG,EAAEmgG,mBAAmB,WAAW5gH,KAAKo1G,aAAa,EAAEA,YAAY,SAAS30F,GAAGzgB,KAAKw6G,aAAax6G,KAAKw6G,YAAYmF,WAAWl/F,EAAE,EAAEo2F,uBAAuB,WAAW72G,KAAKw6G,aAAax6G,KAAKw6G,YAAY3D,wBAAwB,EAAEb,iBAAiB,SAASv1F,GAAGA,EAAEu/F,aAAahgH,KAAK2zG,cAAcmC,YAAYr1F,GAAGA,EAAEy1F,aAAaz1F,EAAEy1F,cAAcz1F,EAAEs/F,iBAAiBt/F,EAAEs/F,gBAAgB,GAAG//G,KAAKsvG,KAAKwG,YAAYr1F,EAAEu/F,mBAAmBv/F,EAAEu/F,WAAW,IAAIvxC,EAAEujC,mBAAmBlC,QAAQ,CAACoR,gBAAgB,SAASzgG,GAAG,OAAOA,EAAEA,aAAaguD,EAAEujC,mBAAmBvxF,EAAEA,EAAE80F,iBAAiBiB,qBAAqB/1F,aAAaguD,EAAEsmC,WAAWt0F,EAAEA,EAAE0gG,QAAQ1gG,aAAaguD,EAAEmmC,cAAcn0F,EAAEA,EAAE+1F,qBAAqB/1F,aAAaguD,EAAE4jC,SAAS5xF,EAAE,CAACA,IAAIA,EAAEzgB,KAAKu1G,iBAAiBiB,qBAAqBx2G,KAAKohH,4BAA4B3gG,GAAGzgB,KAAKy1G,wBAAwBz1G,KAAK1B,QAAQq0G,kBAAkB3yG,KAAKqhH,gCAAgC5gG,GAAGzgB,IAAI,EAAEohH,4BAA4B,SAAS3gG,GAAG,IAAImC,EAAEjhB,EAAE,IAAIihB,KAAKnC,EAAE,IAAI9e,EAAE8e,EAAEmC,GAAG+yF,SAASh0G,GAAGA,EAAEm4G,kBAAiB,EAAGn4G,EAAEA,EAAEg0G,QAAQ,EAAE0L,gCAAgC,SAAS5gG,GAAG,IAAImC,EAAEjhB,EAAE,IAAIihB,KAAKnC,EAAE9e,EAAE8e,EAAEmC,GAAG5iB,KAAKm1G,SAASxzG,IAAIA,EAAE47G,QAAQv9G,KAAK66G,oBAAoBl5G,GAAG,IAAI8sE,EAAE4jC,OAAOvC,QAAQ,CAACwR,mBAAmB,SAAS7gG,EAAEmC,GAAG,IAAIjhB,EAAE3B,KAAK1B,QAAQ49G,KAAK,OAAOztC,EAAEglC,WAAW9xG,EAAE8e,GAAGzgB,KAAKu9G,QAAQ57G,GAAGihB,GAAG5iB,KAAK21G,UAAU31G,KAAK21G,SAAS2B,OAAO4J,gBAAgBlhH,MAAMA,IAAI,IAAIygB,EAAEuxF,mBAAmBpvF,EAAEnC,EAAEm0F,cAAcjzG,EAAEvF,OAAOmuB,eAAe9J,EAAE,aAAa,CAACnkB,OAAM,GAAI,CAA/tiCsmB,CAAErsB,E,sBCI+I,SAASqsB,GAAG,aAAa,SAAS81B,EAAE91B,GAAG,IAAI,IAAIjhB,EAAE8e,EAAE5iB,EAAE,EAAEV,EAAE+J,UAAUjJ,OAAOJ,EAAEV,EAAEU,IAAI,IAAI8D,KAAK8e,EAAEvZ,UAAUrJ,GAAG+kB,EAAEjhB,GAAG8e,EAAE9e,GAAG,OAAOihB,CAAC,CAAC,IAAI4mE,EAAEptF,OAAOC,QAAQ,SAASumB,GAAG,OAAOglD,EAAEhsE,UAAUgnB,EAAE,IAAIglD,CAAC,EAAE,SAASA,IAAI,CAAC,SAASt2D,EAAEsR,EAAEjhB,GAAG,IAAI8e,EAAEpjB,MAAMzB,UAAU4I,MAAM,GAAGoe,EAAE3Z,KAAK,OAAO2Z,EAAE3Z,KAAKpH,MAAM+gB,EAAEnC,EAAE3jB,KAAKoK,UAAU,IAAI,IAAIrJ,EAAE4iB,EAAE3jB,KAAKoK,UAAU,GAAG,OAAO,WAAW,OAAO0b,EAAE/gB,MAAMF,EAAE9D,EAAEI,OAAOJ,EAAE2F,OAAOid,EAAE3jB,KAAKoK,YAAYA,UAAU,CAAC,CAAC,IAAI+9F,EAAE,EAAE,SAAStiG,EAAEigB,GAAG,MAAM,gBAAgBA,IAAIA,EAAE2+F,cAActc,GAAGriF,EAAE2+F,WAAW,CAAC,SAASnsF,EAAExS,EAAEjhB,EAAE8e,GAAG,IAAI5iB,EAAEV,EAAEyG,EAAE,WAAW/F,GAAE,EAAGV,IAAIu+C,EAAE75C,MAAM4e,EAAEtjB,GAAGA,GAAE,EAAG,EAAEu+C,EAAE,WAAW79C,EAAEV,EAAE+J,WAAW0b,EAAE/gB,MAAM4e,EAAEvZ,WAAWof,WAAW1iB,EAAEjC,GAAG9D,GAAE,EAAG,EAAE,OAAO69C,CAAC,CAAC,SAASgM,EAAE9kC,EAAEjhB,EAAE8e,GAAG,IAAI5iB,EAAE8D,EAAE,GAAUxE,EAAEU,GAAT8D,EAAEA,EAAE,IAAS,OAAOihB,IAAI/kB,GAAG4iB,EAAEmC,IAAIA,EAAEjhB,GAAGxE,EAAEA,GAAGA,EAAEwE,CAAC,CAAC,SAAS60D,IAAI,OAAM,CAAE,CAAC,SAAS/1C,EAAEmC,EAAEjhB,GAAG,OAAG,IAAKA,EAASihB,GAAEjhB,EAAEjE,KAAKy0B,IAAI,QAAG,IAASxwB,EAAE,EAAEA,GAAUjE,KAAKukC,MAAMrf,EAAEjhB,GAAGA,EAAC,CAAC,SAASktE,EAAEjsD,GAAG,OAAOA,EAAE4rC,KAAK5rC,EAAE4rC,OAAO5rC,EAAE7jB,QAAQ,aAAa,GAAG,CAAC,SAAS4lF,EAAE/hE,GAAG,OAAOisD,EAAEjsD,GAAGve,MAAM,MAAM,CAAC,SAASy0B,EAAElW,EAAEjhB,GAAG,IAAI,IAAI8e,KAAKrkB,OAAOR,UAAU2wD,eAAezvD,KAAK8lB,EAAE,aAAaA,EAAEtkB,QAAQskB,EAAEtkB,QAAQkrF,EAAE5mE,EAAEtkB,SAAS,CAAC,GAAGqD,EAAEihB,EAAEtkB,QAAQmiB,GAAG9e,EAAE8e,GAAG,OAAOmC,EAAEtkB,OAAO,CAAC,SAASwwE,EAAElsD,EAAEjhB,EAAE8e,GAAG,IAAI5iB,EAAEV,EAAE,GAAG,IAAIU,KAAK+kB,EAAEzlB,EAAE2E,KAAK0/G,mBAAmB/gG,EAAE5iB,EAAE2sD,cAAc3sD,GAAG,IAAI2jH,mBAAmB5+F,EAAE/kB,KAAK,OAAO8D,IAAI,IAAIA,EAAEwL,QAAQ,KAAK,IAAI,KAAKhQ,EAAEoqE,KAAK,IAAI,CAAC,IAAIk6C,EAAE,sBAAsB,SAAS3oD,EAAEl2C,EAAEnC,GAAG,OAAOmC,EAAE7jB,QAAQ0iH,GAAE,SAAS7+F,EAAEjhB,GAAU,QAAG,KAAVA,EAAE8e,EAAE9e,IAAiB,MAAM,IAAIgS,MAAM,kCAAkCiP,GAAG,MAAS,mBAAmBjhB,EAAEA,EAAE8e,GAAG9e,CAAC,GAAE,CAAC,IAAI5D,EAAEV,MAAMD,SAAS,SAASwlB,GAAG,MAAM,mBAAmBxmB,OAAOR,UAAUwI,SAAStH,KAAK8lB,EAAE,EAAE,SAASkiE,EAAEliE,EAAEjhB,GAAG,IAAI,IAAI8e,EAAE,EAAEA,EAAEmC,EAAE3kB,OAAOwiB,IAAI,GAAGmC,EAAEnC,KAAK9e,EAAE,OAAO8e,EAAE,OAAO,CAAC,CAAC,IAAIihG,EAAE,6DAA6D,SAASxxC,EAAEttD,GAAG,OAAOjQ,OAAO,SAASiQ,IAAIjQ,OAAO,MAAMiQ,IAAIjQ,OAAO,KAAKiQ,EAAE,CAAC,IAAImoD,EAAE,EAAE,SAAS42C,EAAE/+F,GAAG,IAAIjhB,GAAG,IAAIyP,KAAKqP,EAAE/iB,KAAK+G,IAAI,EAAE,IAAI9C,EAAEopE,IAAI,OAAOA,EAAEppE,EAAE8e,EAAE9N,OAAO2T,WAAW1D,EAAEnC,EAAE,CAAC,IAAIgxC,EAAE9+C,OAAOivG,uBAAuB1xC,EAAE,0BAA0ByxC,EAAEE,EAAElvG,OAAOmvG,sBAAsB5xC,EAAE,yBAAyBA,EAAE,gCAAgC,SAASttD,GAAGjQ,OAAO0T,aAAazD,EAAE,EAAE,SAASrjB,EAAEqjB,EAAEjhB,EAAE8e,GAAG,IAAIA,GAAGgxC,IAAIkwD,EAAE,OAAOlwD,EAAE30D,KAAK6V,OAAOrB,EAAEsR,EAAEjhB,IAAIihB,EAAE9lB,KAAK6E,EAAE,CAAC,SAAS+5C,EAAE94B,GAAGA,GAAGi/F,EAAE/kH,KAAK6V,OAAOiQ,EAAE,CAAC,IAAIm/F,EAAG,CAACplH,UAAU,KAAKuyG,OAAOx2D,EAAEr8C,OAAOmtF,EAAEvgF,KAAKqI,EAAE,UAAI0wG,GAAS,OAAO/c,CAAC,EAAEoS,MAAM10G,EAAEs/G,SAAS7sF,EAAE8sF,QAAQx6D,EAAEs1D,QAAQxmD,EAAE2rD,UAAU1hG,EAAE+tC,KAAKqgB,EAAEuzC,WAAWz9B,EAAE8uB,WAAW36E,EAAEupF,eAAevzC,EAAET,SAASvV,EAAE17D,QAAQW,EAAEoP,QAAQ23E,EAAEw9B,cAAcZ,EAAEa,UAAU9wD,EAAE+wD,SAASX,EAAEY,iBAAiBljH,EAAEmjH,gBAAgBhnE,GAAG,SAASinE,IAAK,CAACA,EAAGzT,OAAO,SAAStsF,GAAG,SAASjhB,IAAIm3B,EAAE94B,MAAMA,KAAK0vB,YAAY1vB,KAAK0vB,WAAW7tB,MAAM7B,KAAKkH,WAAWlH,KAAK4iH,eAAe,CAAC,IAAIniG,EAAE5iB,EAAE8D,EAAEkhH,UAAU7iH,KAAKpE,UAAUuB,EAAEqsF,EAAE3rF,GAAG,IAAI4iB,KAAKtjB,EAAExB,YAAYgG,GAAG/F,UAAUuB,EAAE6C,KAAK5D,OAAOR,UAAU2wD,eAAezvD,KAAKkD,KAAKygB,IAAI,cAAcA,GAAG,cAAcA,IAAI9e,EAAE8e,GAAGzgB,KAAKygB,IAAI,GAAGmC,EAAEkgG,SAASpqE,EAAE/2C,EAAEihB,EAAEkgG,SAASlgG,EAAEmgG,SAAS,CAAC,IAAIn/G,EAAEgf,EAAEmgG,SAAS,GAAG,oBAAoBt0C,GAAGA,GAAGA,EAAEu0C,MAAM,CAACp/G,EAAE7F,EAAE6F,GAAGA,EAAE,CAACA,GAAG,IAAI,IAAI83C,EAAE,EAAEA,EAAE93C,EAAE3F,OAAOy9C,IAAI93C,EAAE83C,KAAK+yB,EAAEu0C,MAAMC,QAAQn9F,QAAQo9F,KAAK,kIAAiI,IAAKvvG,OAAOglF,MAAM,CAACjgD,EAAE72C,MAAM,KAAK,CAAC1E,GAAGqG,OAAOof,EAAEmgG,UAAU,CAAC,OAAOrqE,EAAEv7C,EAAEylB,UAAUzlB,EAAE2lH,eAAe3lH,EAAE4lH,SAAS5lH,EAAEmB,UAAUnB,EAAEmB,QAAQT,EAAES,QAAQkrF,EAAE3rF,EAAES,SAAS,CAAC,EAAEo6C,EAAEv7C,EAAEmB,QAAQskB,EAAEtkB,UAAUnB,EAAEgmH,WAAW,GAAGhmH,EAAEylH,cAAc,WAAW,IAAI5iH,KAAKojH,iBAAiB,CAACvlH,EAAE+kH,eAAe/kH,EAAE+kH,cAAc9lH,KAAKkD,MAAMA,KAAKojH,kBAAiB,EAAG,IAAI,IAAIxgG,EAAE,EAAEjhB,EAAExE,EAAEgmH,WAAWllH,OAAO2kB,EAAEjhB,EAAEihB,IAAIzlB,EAAEgmH,WAAWvgG,GAAG9lB,KAAKkD,KAAK,CAAC,EAAE2B,CAAC,EAAEghH,EAAG7S,QAAQ,SAASltF,GAAG,IAAIjhB,EAAE3B,KAAKpE,UAAU0C,QAAQ,OAAOo6C,EAAE14C,KAAKpE,UAAUgnB,GAAGA,EAAEtkB,UAAU0B,KAAKpE,UAAU0C,QAAQqD,EAAE3B,KAAKwxG,aAAa5uF,EAAEtkB,UAAU0B,IAAI,EAAE2iH,EAAGnR,aAAa,SAAS5uF,GAAG,OAAO81B,EAAE14C,KAAKpE,UAAU0C,QAAQskB,GAAG5iB,IAAI,EAAE2iH,EAAGjR,YAAY,SAAS9uF,GAAG,IAAIjhB,EAAEtE,MAAMzB,UAAU4I,MAAM1H,KAAKoK,UAAU,GAAGuZ,EAAE,mBAAmBmC,EAAEA,EAAE,WAAW5iB,KAAK4iB,GAAG/gB,MAAM7B,KAAK2B,EAAE,EAAE,OAAO3B,KAAKpE,UAAUunH,WAAWnjH,KAAKpE,UAAUunH,YAAY,GAAGnjH,KAAKpE,UAAUunH,WAAWrhH,KAAK2e,GAAGzgB,IAAI,EAAE,IAAI2B,EAAE,CAACuX,GAAG,SAAS0J,EAAEjhB,EAAE8e,GAAG,GAAG,iBAAiBmC,EAAE,IAAI,IAAI/kB,KAAK+kB,EAAE5iB,KAAKqjH,IAAIxlH,EAAE+kB,EAAE/kB,GAAG8D,QAAQ,IAAI,IAAIxE,EAAE,EAAEyG,GAAGgf,EAAE+hE,EAAE/hE,IAAI3kB,OAAOd,EAAEyG,EAAEzG,IAAI6C,KAAKqjH,IAAIzgG,EAAEzlB,GAAGwE,EAAE8e,GAAG,OAAOzgB,IAAI,EAAEyyD,IAAI,SAAS7vC,EAAEjhB,EAAE8e,GAAG,GAAGvZ,UAAUjJ,OAAO,GAAG,iBAAiB2kB,EAAE,IAAI,IAAI/kB,KAAK+kB,EAAE5iB,KAAKsjH,KAAKzlH,EAAE+kB,EAAE/kB,GAAG8D,OAAO,CAACihB,EAAE+hE,EAAE/hE,GAAG,IAAI,IAAIzlB,EAAE,IAAI+J,UAAUjJ,OAAO2F,EAAE,EAAE83C,EAAE94B,EAAE3kB,OAAO2F,EAAE83C,EAAE93C,IAAIzG,EAAE6C,KAAKsjH,KAAK1gG,EAAEhf,IAAI5D,KAAKsjH,KAAK1gG,EAAEhf,GAAGjC,EAAE8e,EAAE,aAAazgB,KAAKujH,QAAQ,OAAOvjH,IAAI,EAAEqjH,IAAI,SAASzgG,EAAEjhB,EAAE8e,GAAG,GAAG,mBAAmB9e,EAAEmkB,QAAQo9F,KAAK,+BAA+BvhH,OAAO,CAAC3B,KAAKujH,QAAQvjH,KAAKujH,SAAS,CAAC,EAAE,IAAI,IAAI1lH,EAAEmC,KAAKujH,QAAQ3gG,GAAgEzlB,GAA1DU,IAAImC,KAAKujH,QAAQ3gG,GAAG/kB,EAAE,IAAzB+kB,EAA6B,CAAC1a,GAAGvG,EAAE6hH,IAAI/iG,EAAEA,IAAIzgB,UAAK,EAAOygB,GAAM5iB,GAAE+F,EAAE,EAAE83C,EAAEv+C,EAAEc,OAAO2F,EAAE83C,EAAE93C,IAAI,GAAGzG,EAAEyG,GAAGsE,KAAKvG,GAAGxE,EAAEyG,GAAG4/G,MAAM/iG,EAAE,OAAOtjB,EAAE2E,KAAK8gB,EAAE,CAAC,EAAE0gG,KAAK,SAAS1gG,EAAEjhB,EAAE8e,GAAG,IAAI5iB,EAAEV,EAAEyG,EAAE,GAAG5D,KAAKujH,UAAU1lH,EAAEmC,KAAKujH,QAAQ3gG,IAAI,GAAG,IAAI1b,UAAUjJ,OAAO,CAAC,GAAG+B,KAAKyjH,aAAa,IAAItmH,EAAE,EAAEyG,EAAE/F,EAAEI,OAAOd,EAAEyG,EAAEzG,IAAIU,EAAEV,GAAG+K,GAAGsuD,SAASx2D,KAAKujH,QAAQ3gG,EAAE,MAAM,GAAGnC,IAAIzgB,OAAOygB,OAAE,GAAQ,mBAAmB9e,EAAEmkB,QAAQo9F,KAAK,+BAA+BvhH,OAAO,CAAC,IAAIxE,EAAE,EAAEyG,EAAE/F,EAAEI,OAAOd,EAAEyG,EAAEzG,IAAI,CAAC,IAAIu+C,EAAE79C,EAAEV,GAAG,GAAGu+C,EAAE8nE,MAAM/iG,GAAGi7B,EAAExzC,KAAKvG,EAAE,OAAO3B,KAAKyjH,eAAe/nE,EAAExzC,GAAGsuD,EAAEx2D,KAAKujH,QAAQ3gG,GAAG/kB,EAAEA,EAAE2G,cAAc3G,EAAEopB,OAAO9pB,EAAE,EAAE,CAAC2oB,QAAQo9F,KAAK,qBAAqB,CAAC,EAAEnS,KAAK,SAASnuF,EAAEjhB,EAAE8e,GAAG,IAAIzgB,KAAKi6G,QAAQr3F,EAAEnC,GAAG,OAAOzgB,KAAK,IAAInC,EAAE66C,EAAE,CAAC,EAAE/2C,EAAE,CAACyZ,KAAKwH,EAAEjsB,OAAOqJ,KAAK0jH,aAAa/hH,GAAGA,EAAE+hH,cAAc1jH,OAAO,GAAGA,KAAKujH,QAAQ,CAAC,IAAIpmH,EAAE6C,KAAKujH,QAAQ3gG,GAAG,GAAGzlB,EAAE,CAAC6C,KAAKyjH,aAAazjH,KAAKyjH,aAAa,GAAG,EAAE,IAAI,IAAI7/G,EAAE,EAAE83C,EAAEv+C,EAAEc,OAAO2F,EAAE83C,EAAE93C,IAAI,CAAC,IAAI0N,EAAEnU,EAAEyG,GAAG0N,EAAEpJ,GAAGpL,KAAKwU,EAAEkyG,KAAKxjH,KAAKnC,EAAE,CAACmC,KAAKyjH,cAAc,CAAC,CAAC,OAAOhjG,GAAGzgB,KAAK2jH,gBAAgB9lH,GAAGmC,IAAI,EAAEi6G,QAAQ,SAASr3F,EAAEjhB,GAAG,iBAAiBihB,GAAGkD,QAAQo9F,KAAK,mCAAmC,IAAIziG,EAAEzgB,KAAKujH,SAASvjH,KAAKujH,QAAQ3gG,GAAG,GAAGnC,GAAGA,EAAExiB,OAAO,OAAM,EAAG,GAAG0D,EAAE,IAAI,IAAI9D,KAAKmC,KAAK4jH,cAAc,GAAG5jH,KAAK4jH,cAAc/lH,GAAGo8G,QAAQr3F,EAAEjhB,GAAG,OAAM,EAAG,OAAM,CAAE,EAAE81G,KAAK,SAAS70F,EAAEjhB,EAAE8e,GAAG,GAAG,iBAAiBmC,EAAE,CAAC,IAAI,IAAI/kB,KAAK+kB,EAAE5iB,KAAKy3G,KAAK55G,EAAE+kB,EAAE/kB,GAAG8D,GAAG,OAAO3B,IAAI,CAAC,IAAI7C,EAAEmU,GAAE,WAAWtR,KAAKyyD,IAAI7vC,EAAEjhB,EAAE8e,GAAGgyC,IAAI7vC,EAAEzlB,EAAEsjB,EAAE,GAAEzgB,MAAM,OAAOA,KAAKkZ,GAAG0J,EAAEjhB,EAAE8e,GAAGvH,GAAG0J,EAAEzlB,EAAEsjB,EAAE,EAAEozF,eAAe,SAASjxF,GAAG,OAAO5iB,KAAK4jH,cAAc5jH,KAAK4jH,eAAe,CAAC,EAAE5jH,KAAK4jH,cAAcjhH,EAAEigB,IAAIA,EAAE5iB,IAAI,EAAE6jH,kBAAkB,SAASjhG,GAAG,OAAO5iB,KAAK4jH,sBAAsB5jH,KAAK4jH,cAAcjhH,EAAEigB,IAAI5iB,IAAI,EAAE2jH,gBAAgB,SAAS/gG,GAAG,IAAI,IAAIjhB,KAAK3B,KAAK4jH,cAAc5jH,KAAK4jH,cAAcjiH,GAAGovG,KAAKnuF,EAAExH,KAAKs9B,EAAE,CAACw8D,MAAMtyF,EAAEjsB,OAAOmtH,eAAelhG,EAAEjsB,QAAQisB,IAAG,EAAG,GAAGmhG,GAAIpiH,EAAEilB,iBAAiBjlB,EAAEuX,GAAGvX,EAAEqyB,oBAAoBryB,EAAEqiH,uBAAuBriH,EAAE8wD,IAAI9wD,EAAEsiH,wBAAwBtiH,EAAE81G,KAAK91G,EAAEuiH,UAAUviH,EAAEovG,KAAKpvG,EAAEwiH,kBAAkBxiH,EAAEs4G,QAAQ0I,EAAGzT,OAAOvtG,IAAI,SAAS8O,EAAEmS,EAAEjhB,EAAE8e,GAAGzgB,KAAKT,EAAEkhB,EAAE/iB,KAAKukC,MAAMrf,GAAGA,EAAE5iB,KAAKR,EAAEihB,EAAE/iB,KAAKukC,MAAMtgC,GAAGA,CAAC,CAAC,IAAIyiH,EAAG1mH,KAAK2mH,OAAO,SAASzhG,GAAG,OAAO,EAAEA,EAAEllB,KAAKiqD,MAAM/kC,GAAGllB,KAAKC,KAAKilB,EAAE,EAAE,SAAS8mC,EAAE9mC,EAAEjhB,EAAE8e,GAAG,OAAOmC,aAAanS,EAAEmS,EAAE7kB,EAAE6kB,GAAG,IAAInS,EAAEmS,EAAE,GAAGA,EAAE,IAAI,MAAMA,EAAEA,EAAE,iBAAiBA,GAAG,MAAMA,GAAG,MAAMA,EAAE,IAAInS,EAAEmS,EAAErjB,EAAEqjB,EAAEpjB,GAAG,IAAIiR,EAAEmS,EAAEjhB,EAAE8e,EAAE,CAAC,SAASsnC,EAAEnlC,EAAEjhB,GAAG,GAAGihB,EAAE,IAAI,IAAInC,EAAE9e,EAAE,CAACihB,EAAEjhB,GAAGihB,EAAE/kB,EAAE,EAAEV,EAAEsjB,EAAExiB,OAAOJ,EAAEV,EAAEU,IAAImC,KAAKkvG,OAAOzuF,EAAE5iB,GAAG,CAAC,SAASmpB,EAAEpE,EAAEjhB,GAAG,OAAOihB,GAAGA,aAAamlC,EAAEnlC,EAAE,IAAImlC,EAAEnlC,EAAEjhB,EAAE,CAAC,SAASiC,EAAEgf,EAAEjhB,GAAG,GAAGihB,EAAE,IAAI,IAAInC,EAAE9e,EAAE,CAACihB,EAAEjhB,GAAGihB,EAAE/kB,EAAE,EAAEV,EAAEsjB,EAAExiB,OAAOJ,EAAEV,EAAEU,IAAImC,KAAKkvG,OAAOzuF,EAAE5iB,GAAG,CAAC,SAAS6H,EAAEkd,EAAEjhB,GAAG,OAAOihB,aAAahf,EAAEgf,EAAE,IAAIhf,EAAEgf,EAAEjhB,EAAE,CAAC,SAAS1E,EAAE2lB,EAAEjhB,EAAE8e,GAAG,GAAGgH,MAAM7E,IAAI6E,MAAM9lB,GAAG,MAAM,IAAIgS,MAAM,2BAA2BiP,EAAE,KAAKjhB,EAAE,KAAK3B,KAAK87G,KAAKl5F,EAAE5iB,KAAK69G,KAAKl8G,OAAE,IAAS8e,IAAIzgB,KAAKskH,KAAK7jG,EAAE,CAAC,SAAS7d,EAAEggB,EAAEjhB,EAAE8e,GAAG,OAAOmC,aAAa3lB,EAAE2lB,EAAE7kB,EAAE6kB,IAAI,iBAAiBA,EAAE,GAAG,IAAIA,EAAE3kB,OAAO,IAAIhB,EAAE2lB,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAI,IAAIA,EAAE3kB,OAAO,IAAIhB,EAAE2lB,EAAE,GAAGA,EAAE,IAAI,KAAK,MAAMA,EAAEA,EAAE,iBAAiBA,GAAG,QAAQA,EAAE,IAAI3lB,EAAE2lB,EAAEk5F,IAAI,QAAQl5F,EAAEA,EAAEi7F,IAAIj7F,EAAE2hG,IAAI3hG,EAAE0hG,UAAK,IAAS3iH,EAAE,KAAK,IAAI1E,EAAE2lB,EAAEjhB,EAAE8e,EAAE,CAAChQ,EAAE7U,UAAU,CAACuuB,MAAM,WAAW,OAAO,IAAI1Z,EAAEzQ,KAAKT,EAAES,KAAKR,EAAE,EAAEqjB,IAAI,SAASD,GAAG,OAAO5iB,KAAKmqB,QAAQq6F,KAAK96D,EAAE9mC,GAAG,EAAE4hG,KAAK,SAAS5hG,GAAG,OAAO5iB,KAAKT,GAAGqjB,EAAErjB,EAAES,KAAKR,GAAGojB,EAAEpjB,EAAEQ,IAAI,EAAEykH,SAAS,SAAS7hG,GAAG,OAAO5iB,KAAKmqB,QAAQu6F,UAAUh7D,EAAE9mC,GAAG,EAAE8hG,UAAU,SAAS9hG,GAAG,OAAO5iB,KAAKT,GAAGqjB,EAAErjB,EAAES,KAAKR,GAAGojB,EAAEpjB,EAAEQ,IAAI,EAAE2kH,SAAS,SAAS/hG,GAAG,OAAO5iB,KAAKmqB,QAAQy6F,UAAUhiG,EAAE,EAAEgiG,UAAU,SAAShiG,GAAG,OAAO5iB,KAAKT,GAAGqjB,EAAE5iB,KAAKR,GAAGojB,EAAE5iB,IAAI,EAAE6kH,WAAW,SAASjiG,GAAG,OAAO5iB,KAAKmqB,QAAQ26F,YAAYliG,EAAE,EAAEkiG,YAAY,SAASliG,GAAG,OAAO5iB,KAAKT,GAAGqjB,EAAE5iB,KAAKR,GAAGojB,EAAE5iB,IAAI,EAAE+kH,QAAQ,SAASniG,GAAG,OAAO,IAAInS,EAAEzQ,KAAKT,EAAEqjB,EAAErjB,EAAES,KAAKR,EAAEojB,EAAEpjB,EAAE,EAAEwlH,UAAU,SAASpiG,GAAG,OAAO,IAAInS,EAAEzQ,KAAKT,EAAEqjB,EAAErjB,EAAES,KAAKR,EAAEojB,EAAEpjB,EAAE,EAAEyiC,MAAM,WAAW,OAAOjiC,KAAKmqB,QAAQ01F,QAAQ,EAAEA,OAAO,WAAW,OAAO7/G,KAAKT,EAAE7B,KAAKukC,MAAMjiC,KAAKT,GAAGS,KAAKR,EAAE9B,KAAKukC,MAAMjiC,KAAKR,GAAGQ,IAAI,EAAE2nD,MAAM,WAAW,OAAO3nD,KAAKmqB,QAAQ86F,QAAQ,EAAEA,OAAO,WAAW,OAAOjlH,KAAKT,EAAE7B,KAAKiqD,MAAM3nD,KAAKT,GAAGS,KAAKR,EAAE9B,KAAKiqD,MAAM3nD,KAAKR,GAAGQ,IAAI,EAAErC,KAAK,WAAW,OAAOqC,KAAKmqB,QAAQ+6F,OAAO,EAAEA,MAAM,WAAW,OAAOllH,KAAKT,EAAE7B,KAAKC,KAAKqC,KAAKT,GAAGS,KAAKR,EAAE9B,KAAKC,KAAKqC,KAAKR,GAAGQ,IAAI,EAAEqkH,MAAM,WAAW,OAAOrkH,KAAKmqB,QAAQg7F,QAAQ,EAAEA,OAAO,WAAW,OAAOnlH,KAAKT,EAAE6kH,EAAGpkH,KAAKT,GAAGS,KAAKR,EAAE4kH,EAAGpkH,KAAKR,GAAGQ,IAAI,EAAEolH,WAAW,SAASxiG,GAAG,IAAIjhB,GAAGihB,EAAE8mC,EAAE9mC,IAAIrjB,EAAES,KAAKT,EAAe,OAAbqjB,EAAEA,EAAEpjB,EAAEQ,KAAKR,EAAS9B,KAAKogC,KAAKn8B,EAAEA,EAAEihB,EAAEA,EAAE,EAAEyiG,OAAO,SAASziG,GAAG,OAAOA,EAAE8mC,EAAE9mC,IAAIrjB,IAAIS,KAAKT,GAAGqjB,EAAEpjB,IAAIQ,KAAKR,CAAC,EAAE0wD,SAAS,SAASttC,GAAG,OAAOA,EAAE8mC,EAAE9mC,GAAGllB,KAAKwgC,IAAItb,EAAErjB,IAAI7B,KAAKwgC,IAAIl+B,KAAKT,IAAI7B,KAAKwgC,IAAItb,EAAEpjB,IAAI9B,KAAKwgC,IAAIl+B,KAAKR,EAAE,EAAE4E,SAAS,WAAW,MAAM,SAASqc,EAAEzgB,KAAKT,GAAG,KAAKkhB,EAAEzgB,KAAKR,GAAG,GAAG,GAAGuoD,EAAEnsD,UAAU,CAACszG,OAAO,SAAStsF,GAAG,OAAOA,EAAE8mC,EAAE9mC,GAAG5iB,KAAKP,KAAKO,KAAKyE,KAAKzE,KAAKP,IAAIF,EAAE7B,KAAK+B,IAAImjB,EAAErjB,EAAES,KAAKP,IAAIF,GAAGS,KAAKyE,IAAIlF,EAAE7B,KAAK+G,IAAIme,EAAErjB,EAAES,KAAKyE,IAAIlF,GAAGS,KAAKP,IAAID,EAAE9B,KAAK+B,IAAImjB,EAAEpjB,EAAEQ,KAAKP,IAAID,GAAGQ,KAAKyE,IAAIjF,EAAE9B,KAAK+G,IAAIme,EAAEpjB,EAAEQ,KAAKyE,IAAIjF,KAAKQ,KAAKP,IAAImjB,EAAEuH,QAAQnqB,KAAKyE,IAAIme,EAAEuH,SAASnqB,IAAI,EAAEslH,UAAU,SAAS1iG,GAAG,OAAO,IAAInS,GAAGzQ,KAAKP,IAAIF,EAAES,KAAKyE,IAAIlF,GAAG,GAAGS,KAAKP,IAAID,EAAEQ,KAAKyE,IAAIjF,GAAG,EAAEojB,EAAE,EAAE2iG,cAAc,WAAW,OAAO,IAAI90G,EAAEzQ,KAAKP,IAAIF,EAAES,KAAKyE,IAAIjF,EAAE,EAAEgmH,YAAY,WAAW,OAAO,IAAI/0G,EAAEzQ,KAAKyE,IAAIlF,EAAES,KAAKP,IAAID,EAAE,EAAEimH,WAAW,WAAW,OAAOzlH,KAAKP,GAAG,EAAEimH,eAAe,WAAW,OAAO1lH,KAAKyE,GAAG,EAAEkhH,QAAQ,WAAW,OAAO3lH,KAAKyE,IAAIggH,SAASzkH,KAAKP,IAAI,EAAEywD,SAAS,SAASttC,GAAG,IAAIjhB,EAAE8e,EAAE,OAAOmC,GAAG,iBAAiBA,EAAE,IAAIA,aAAanS,EAAEi5C,EAAE1iC,GAAGpE,cAAcmlC,GAAGpmD,EAAEihB,EAAEnjB,IAAIghB,EAAEmC,EAAEne,KAAK9C,EAAE8e,EAAEmC,EAAEjhB,EAAEpC,GAAGS,KAAKP,IAAIF,GAAGkhB,EAAElhB,GAAGS,KAAKyE,IAAIlF,GAAGoC,EAAEnC,GAAGQ,KAAKP,IAAID,GAAGihB,EAAEjhB,GAAGQ,KAAKyE,IAAIjF,CAAC,EAAE47G,WAAW,SAASx4F,GAAGA,EAAEoE,EAAEpE,GAAG,IAAIjhB,EAAE3B,KAAKP,IAAIghB,EAAEzgB,KAAKyE,IAAI5G,EAAE+kB,EAAEnjB,IAAYtC,GAARylB,EAAEA,EAAEne,KAAQlF,GAAGoC,EAAEpC,GAAG1B,EAAE0B,GAAGkhB,EAAElhB,EAAuB,OAArBqjB,EAAEA,EAAEpjB,GAAGmC,EAAEnC,GAAG3B,EAAE2B,GAAGihB,EAAEjhB,EAASrC,GAAGylB,CAAC,EAAEgjG,SAAS,SAAShjG,GAAGA,EAAEoE,EAAEpE,GAAG,IAAIjhB,EAAE3B,KAAKP,IAAIghB,EAAEzgB,KAAKyE,IAAI5G,EAAE+kB,EAAEnjB,IAAYtC,GAARylB,EAAEA,EAAEne,KAAQlF,EAAEoC,EAAEpC,GAAG1B,EAAE0B,EAAEkhB,EAAElhB,EAAqB,OAAnBqjB,EAAEA,EAAEpjB,EAAEmC,EAAEnC,GAAG3B,EAAE2B,EAAEihB,EAAEjhB,EAASrC,GAAGylB,CAAC,EAAEijG,QAAQ,WAAW,SAAS7lH,KAAKP,MAAMO,KAAKyE,IAAI,GAAGb,EAAEhI,UAAU,CAACszG,OAAO,SAAStsF,GAAG,IAAIjhB,EAAE8e,EAAE5iB,EAAEmC,KAAKg8G,WAAW7+G,EAAE6C,KAAK67G,WAAW,GAAGj5F,aAAa3lB,EAAEwjB,EAAE9e,EAAEihB,MAAM,CAAC,KAAKA,aAAahf,GAAG,OAAOgf,EAAE5iB,KAAKkvG,OAAOtsG,EAAEggB,IAAIld,EAAEkd,IAAI5iB,KAAK,GAAG2B,EAAEihB,EAAEo5F,WAAWv7F,EAAEmC,EAAEi5F,YAAYl6G,IAAI8e,EAAE,OAAOzgB,IAAI,CAAC,OAAOnC,GAAGV,GAAGU,EAAEi+G,IAAIp+G,KAAK+B,IAAIkC,EAAEm6G,IAAIj+G,EAAEi+G,KAAKj+G,EAAEggH,IAAIngH,KAAK+B,IAAIkC,EAAEk8G,IAAIhgH,EAAEggH,KAAK1gH,EAAE2+G,IAAIp+G,KAAK+G,IAAIgc,EAAEq7F,IAAI3+G,EAAE2+G,KAAK3+G,EAAE0gH,IAAIngH,KAAK+G,IAAIgc,EAAEo9F,IAAI1gH,EAAE0gH,OAAO79G,KAAKg8G,WAAW,IAAI/+G,EAAE0E,EAAEm6G,IAAIn6G,EAAEk8G,KAAK79G,KAAK67G,WAAW,IAAI5+G,EAAEwjB,EAAEq7F,IAAIr7F,EAAEo9F,MAAM79G,IAAI,EAAEs/F,IAAI,SAAS18E,GAAG,IAAIjhB,EAAE3B,KAAKg8G,WAAWv7F,EAAEzgB,KAAK67G,WAAWh+G,EAAEH,KAAKwgC,IAAIv8B,EAAEm6G,IAAIr7F,EAAEq7F,KAAKl5F,EAA4B,OAA1BA,EAAEllB,KAAKwgC,IAAIv8B,EAAEk8G,IAAIp9F,EAAEo9F,KAAKj7F,EAAS,IAAIhf,EAAE,IAAI3G,EAAE0E,EAAEm6G,IAAIj+G,EAAE8D,EAAEk8G,IAAIj7F,GAAG,IAAI3lB,EAAEwjB,EAAEq7F,IAAIj+G,EAAE4iB,EAAEo9F,IAAIj7F,GAAG,EAAE0iG,UAAU,WAAW,OAAO,IAAIroH,GAAG+C,KAAKg8G,WAAWF,IAAI97G,KAAK67G,WAAWC,KAAK,GAAG97G,KAAKg8G,WAAW6B,IAAI79G,KAAK67G,WAAWgC,KAAK,EAAE,EAAEiI,aAAa,WAAW,OAAO9lH,KAAKg8G,UAAU,EAAE+J,aAAa,WAAW,OAAO/lH,KAAK67G,UAAU,EAAEmK,aAAa,WAAW,OAAO,IAAI/oH,EAAE+C,KAAK47G,WAAW57G,KAAKimH,UAAU,EAAEC,aAAa,WAAW,OAAO,IAAIjpH,EAAE+C,KAAK+7G,WAAW/7G,KAAKmmH,UAAU,EAAEF,QAAQ,WAAW,OAAOjmH,KAAKg8G,WAAW6B,GAAG,EAAE9B,SAAS,WAAW,OAAO/7G,KAAKg8G,WAAWF,GAAG,EAAEqK,QAAQ,WAAW,OAAOnmH,KAAK67G,WAAWgC,GAAG,EAAEjC,SAAS,WAAW,OAAO57G,KAAK67G,WAAWC,GAAG,EAAE5rD,SAAS,SAASttC,GAAGA,GAAG,iBAAiBA,EAAE,IAAIA,aAAa3lB,GAAG,QAAQ2lB,EAAEhgB,EAAE8C,GAAGkd,GAAG,IAAIjhB,EAAE8e,EAAE5iB,EAAEmC,KAAKg8G,WAAW7+G,EAAE6C,KAAK67G,WAAW,OAAOj5F,aAAahf,GAAGjC,EAAEihB,EAAEkjG,eAAerlG,EAAEmC,EAAEmjG,gBAAgBpkH,EAAE8e,EAAEmC,EAAEjhB,EAAEm6G,KAAKj+G,EAAEi+G,KAAKr7F,EAAEq7F,KAAK3+G,EAAE2+G,KAAKn6G,EAAEk8G,KAAKhgH,EAAEggH,KAAKp9F,EAAEo9F,KAAK1gH,EAAE0gH,GAAG,EAAEzC,WAAW,SAASx4F,GAAGA,EAAEld,EAAEkd,GAAG,IAAIjhB,EAAE3B,KAAKg8G,WAAWv7F,EAAEzgB,KAAK67G,WAAWh+G,EAAE+kB,EAAEkjG,eAAkC3oH,GAAnBylB,EAAEA,EAAEmjG,gBAAmBjK,KAAKn6G,EAAEm6G,KAAKj+G,EAAEi+G,KAAKr7F,EAAEq7F,IAAiC,OAA7Bl5F,EAAEA,EAAEi7F,KAAKl8G,EAAEk8G,KAAKhgH,EAAEggH,KAAKp9F,EAAEo9F,IAAW1gH,GAAGylB,CAAC,EAAEgjG,SAAS,SAAShjG,GAAGA,EAAEld,EAAEkd,GAAG,IAAIjhB,EAAE3B,KAAKg8G,WAAWv7F,EAAEzgB,KAAK67G,WAAWh+G,EAAE+kB,EAAEkjG,eAAkC3oH,GAAnBylB,EAAEA,EAAEmjG,gBAAmBjK,IAAIn6G,EAAEm6G,KAAKj+G,EAAEi+G,IAAIr7F,EAAEq7F,IAA+B,OAA3Bl5F,EAAEA,EAAEi7F,IAAIl8G,EAAEk8G,KAAKhgH,EAAEggH,IAAIp9F,EAAEo9F,IAAW1gH,GAAGylB,CAAC,EAAEwjG,aAAa,WAAW,MAAM,CAACpmH,KAAKimH,UAAUjmH,KAAK+7G,WAAW/7G,KAAKmmH,UAAUnmH,KAAK47G,YAAYr0C,KAAK,IAAI,EAAE89C,OAAO,SAASziG,EAAEjhB,GAAG,QAAQihB,IAAIA,EAAEld,EAAEkd,GAAG5iB,KAAKg8G,WAAWqJ,OAAOziG,EAAEkjG,eAAenkH,IAAI3B,KAAK67G,WAAWwJ,OAAOziG,EAAEmjG,eAAepkH,GAAG,EAAEkkH,QAAQ,WAAW,SAAS7lH,KAAKg8G,aAAah8G,KAAK67G,WAAW,GAAG,IAAIwK,EAAG,CAACC,cAAc,SAAS1jG,EAAEjhB,GAAgD,OAA7CihB,EAAE5iB,KAAKkgF,WAAWxB,QAAQ97D,GAAGjhB,EAAE3B,KAAKE,MAAMyB,GAAU3B,KAAKumH,eAAeC,WAAW5jG,EAAEjhB,EAAE,EAAE8kH,cAAc,SAAS7jG,EAAEjhB,GAA0D,OAAvDA,EAAE3B,KAAKE,MAAMyB,GAAGihB,EAAE5iB,KAAKumH,eAAeG,YAAY9jG,EAAEjhB,GAAU3B,KAAKkgF,WAAWymC,UAAU/jG,EAAE,EAAE87D,QAAQ,SAAS97D,GAAG,OAAO5iB,KAAKkgF,WAAWxB,QAAQ97D,EAAE,EAAE+jG,UAAU,SAAS/jG,GAAG,OAAO5iB,KAAKkgF,WAAWymC,UAAU/jG,EAAE,EAAE1iB,MAAM,SAAS0iB,GAAG,OAAO,IAAIllB,KAAKy0B,IAAI,EAAEvP,EAAE,EAAE3J,KAAK,SAAS2J,GAAG,OAAOllB,KAAKy4D,IAAIvzC,EAAE,KAAKllB,KAAKm7D,GAAG,EAAE+tD,mBAAmB,SAAShkG,GAAG,GAAG5iB,KAAK6mH,SAAS,OAAO,KAAK,IAAIllH,EAAE3B,KAAKkgF,WAAWnK,OAAuB,OAAhBnzD,EAAE5iB,KAAKE,MAAM0iB,GAAU,IAAImlC,EAAE/nD,KAAKumH,eAAe/wF,UAAU7zB,EAAElC,IAAImjB,GAAG5iB,KAAKumH,eAAe/wF,UAAU7zB,EAAE8C,IAAIme,GAAG,EAAEikG,WAAW5pH,EAAErB,UAAU,CAACypH,OAAO,SAASziG,EAAEjhB,GAAG,QAAQihB,IAAIA,EAAEhgB,EAAEggB,GAAGllB,KAAK+G,IAAI/G,KAAKwgC,IAAIl+B,KAAK87G,IAAIl5F,EAAEk5F,KAAKp+G,KAAKwgC,IAAIl+B,KAAK69G,IAAIj7F,EAAEi7F,aAAQ,IAASl8G,EAAE,KAAKA,GAAG,EAAEyC,SAAS,SAASwe,GAAG,MAAM,UAAUnC,EAAEzgB,KAAK87G,IAAIl5F,GAAG,KAAKnC,EAAEzgB,KAAK69G,IAAIj7F,GAAG,GAAG,EAAEwiG,WAAW,SAASxiG,GAAG,OAAOkkG,EAAGh5F,SAAS9tB,KAAK4C,EAAEggB,GAAG,EAAEyuC,KAAK,WAAW,OAAOy1D,EAAGC,WAAW/mH,KAAK,EAAEgnH,SAAS,SAASpkG,GAAG,IAAqBjhB,GAAjBihB,EAAE,IAAIA,EAAE,UAAallB,KAAKugC,IAAIvgC,KAAK6H,GAAG,IAAIvF,KAAK87G,KAAK,OAAOp2G,EAAE,CAAC1F,KAAK87G,IAAIl5F,EAAE5iB,KAAK69G,IAAIl8G,GAAG,CAAC3B,KAAK87G,IAAIl5F,EAAE5iB,KAAK69G,IAAIl8G,GAAG,EAAEwoB,MAAM,WAAW,OAAO,IAAIltB,EAAE+C,KAAK87G,IAAI97G,KAAK69G,IAAI79G,KAAKskH,IAAI,IAAIyC,WAAW,SAASnkG,GAAG,IAAIjhB,EAAE3B,KAAKinH,QAAQv/D,EAAE9kC,EAAEi7F,IAAI79G,KAAKinH,SAAQ,GAAIrkG,EAAEi7F,IAAI,OAAO,IAAI5gH,EAAE+C,KAAKknH,QAAQx/D,EAAE9kC,EAAEk5F,IAAI97G,KAAKknH,SAAQ,GAAItkG,EAAEk5F,IAAIn6G,EAAEihB,EAAE0hG,IAAI,EAAE6C,iBAAiB,SAASvkG,GAAG,IAAIjhB,EAAEihB,EAAE0iG,YAAY7kG,EAAEzgB,KAAK+mH,WAAWplH,GAAG9D,EAAE8D,EAAEm6G,IAAIr7F,EAAEq7F,IAAkB,OAAdn6G,EAAEA,EAAEk8G,IAAIp9F,EAAEo9F,IAAO,GAAGhgH,GAAG,GAAG8D,EAASihB,GAAEnC,EAAEmC,EAAEkjG,eAAeljG,EAAEA,EAAEmjG,eAAsB,IAAIniH,EAAE,IAAI3G,EAAEwjB,EAAEq7F,IAAIj+G,EAAE4iB,EAAEo9F,IAAIl8G,GAAG,IAAI1E,EAAE2lB,EAAEk5F,IAAIj+G,EAAE+kB,EAAEi7F,IAAIl8G,IAAG,GAAGmlH,EAAGpuE,EAAE,CAAC,EAAE2tE,EAAG,CAACY,QAAQ,EAAE,IAAI,KAAKz9B,EAAE,OAAO17D,SAAS,SAASlL,EAAEjhB,GAAG,IAAI8e,EAAE/iB,KAAK6H,GAAG,IAAI1H,EAAE+kB,EAAEk5F,IAAIr7F,EAAEtjB,EAAEwE,EAAEm6G,IAAIr7F,EAAE7c,EAAElG,KAAK4H,KAAK3D,EAAEm6G,IAAIl5F,EAAEk5F,KAAKr7F,EAAE,GAA+G,OAA5G9e,EAAEjE,KAAK4H,KAAK3D,EAAEk8G,IAAIj7F,EAAEi7F,KAAKp9F,EAAE,GAAGmC,EAAEhf,EAAEA,EAAElG,KAAKugC,IAAIpgC,GAAGH,KAAKugC,IAAI9gC,GAAGwE,EAAEA,EAAE8e,EAAE,EAAE/iB,KAAK69D,MAAM79D,KAAKogC,KAAKlb,GAAGllB,KAAKogC,KAAK,EAAElb,IAAW5iB,KAAKwpF,EAAE/oE,CAAC,IAAe2mG,EAAG,CAAC59B,EAAf49B,EAAG,QAAiBnP,aAAa,cAAcv5B,QAAQ,SAAS97D,GAAG,IAAIjhB,EAAEjE,KAAK6H,GAAG,IAAIkb,EAAEzgB,KAAKi4G,aAA8D,OAAjDx3F,EAAE/iB,KAAK+G,IAAI/G,KAAK+B,IAAIghB,EAAEmC,EAAEk5F,MAAMr7F,GAAGA,EAAE/iB,KAAK4H,IAAImb,EAAE9e,GAAU,IAAI8O,EAAEzQ,KAAKwpF,EAAE5mE,EAAEi7F,IAAIl8G,EAAE3B,KAAKwpF,EAAE9rF,KAAKy4D,KAAK,EAAE11C,IAAI,EAAEA,IAAI,EAAE,EAAEkmG,UAAU,SAAS/jG,GAAG,IAAIjhB,EAAE,IAAIjE,KAAK6H,GAAG,OAAO,IAAItI,GAAG,EAAES,KAAKm8E,KAAKn8E,KAAK43D,IAAI1yC,EAAEpjB,EAAEQ,KAAKwpF,IAAI9rF,KAAK6H,GAAG,GAAG5D,EAAEihB,EAAErjB,EAAEoC,EAAE3B,KAAKwpF,EAAE,EAAEzT,OAAO,IAAIhuB,EAAE,GAAGq/D,GAAM1pH,KAAK6H,KAAK6hH,GAAI,CAACA,EAAGA,KAAM,SAASC,EAAGzkG,EAAEjhB,EAAE8e,EAAE5iB,GAAG,GAAGE,EAAE6kB,GAAG,OAAO5iB,KAAKsnH,GAAG1kG,EAAE,GAAG5iB,KAAKunH,GAAG3kG,EAAE,GAAG5iB,KAAKwnH,GAAG5kG,EAAE,QAAQ5iB,KAAKynH,GAAG7kG,EAAE,IAAI5iB,KAAKsnH,GAAG1kG,EAAE5iB,KAAKunH,GAAG5lH,EAAE3B,KAAKwnH,GAAG/mG,EAAEzgB,KAAKynH,GAAG5pH,CAAC,CAAC,SAAS6pH,EAAG9kG,EAAEjhB,EAAE8e,EAAE5iB,GAAG,OAAO,IAAIwpH,EAAGzkG,EAAEjhB,EAAE8e,EAAE5iB,EAAE,CAACwpH,EAAGzrH,UAAU,CAAC45B,UAAU,SAAS5S,EAAEjhB,GAAG,OAAO3B,KAAKwmH,WAAW5jG,EAAEuH,QAAQxoB,EAAE,EAAE6kH,WAAW,SAAS5jG,EAAEjhB,GAAG,OAAOihB,EAAErjB,GAAGoC,EAAEA,GAAG,IAAI3B,KAAKsnH,GAAG1kG,EAAErjB,EAAES,KAAKunH,IAAI3kG,EAAEpjB,EAAEmC,GAAG3B,KAAKwnH,GAAG5kG,EAAEpjB,EAAEQ,KAAKynH,IAAI7kG,CAAC,EAAE8jG,YAAY,SAAS9jG,EAAEjhB,GAAG,OAAO,IAAI8O,GAAGmS,EAAErjB,GAAGoC,EAAEA,GAAG,GAAG3B,KAAKunH,IAAIvnH,KAAKsnH,IAAI1kG,EAAEpjB,EAAEmC,EAAE3B,KAAKynH,IAAIznH,KAAKwnH,GAAG,GAAG,IAAIG,EAAGjvE,EAAE,CAAC,EAAEouE,EAAG,CAACjmC,KAAK,YAAYX,WAAWknC,EAAGb,eAAemB,EAAGC,EAAG,IAAIjqH,KAAK6H,GAAG6hH,EAAG59B,GAAG,IAAIm+B,EAAG,MAAMC,EAAGlvE,EAAE,CAAC,EAAEivE,EAAG,CAAC9mC,KAAK,gBAAgB,SAASgnC,EAAGjlG,GAAG,OAAOhL,SAASqW,gBAAgB,6BAA6BrL,EAAE,CAAC,SAASsqD,EAAGtqD,EAAEjhB,GAAG,IAAI,IAAI8e,EAAE5iB,EAAEV,EAAEyG,EAAE83C,EAAE,GAAGpqC,EAAE,EAAE3O,EAAEigB,EAAE3kB,OAAOqT,EAAE3O,EAAE2O,IAAI,CAAC,IAAImP,EAAE,EAAE5iB,GAAGV,EAAEylB,EAAEtR,IAAIrT,OAAOwiB,EAAE5iB,EAAE4iB,IAAIi7B,IAAIj7B,EAAE,IAAI,MAAM7c,EAAEzG,EAAEsjB,IAAIlhB,EAAE,IAAIqE,EAAEpE,EAAEk8C,GAAG/5C,EAAE8mF,GAAEn5E,IAAI,IAAI,IAAI,EAAE,CAAC,OAAOosC,GAAG,MAAM,CAAC,IAAIosE,EAAGlwG,SAAS8tC,gBAAgBp/C,MAAMyhH,EAAG,kBAAkBp1G,OAAOq1G,EAAGD,IAAKnwG,SAASgP,iBAAiB/oB,EAAE,gBAAgBomC,aAAa,iBAAiBrsB,UAAUqwG,GAAGzoH,GAAE,UAAU0oH,GAAG1oH,GAAE,WAAW2oH,GAAG3oH,GAAE,cAAcA,GAAE,aAAa4oH,GAAGnsD,SAAS,qBAAqBJ,KAAK53B,UAAU0gB,WAAW,GAAG,IAAwD0jE,IAApDD,GAAGF,IAAI1oH,GAAE,WAAW4oH,GAAG,OAAO,cAAcz1G,UAAaA,OAAO21G,OAAMC,IAAI1qH,GAAG2B,GAAE,UAAUgpH,GAAGhpH,GAAE,WAAWyoH,KAAKI,KAAKN,EAAGU,IAAIF,IAAI/oH,GAAE,UAAUkpH,GAAGlpH,GAAE,WAAWrC,GAAE,gBAAgB2qH,EAAGa,GAAG,IAAI1kF,UAAU2kF,SAASz7G,QAAQ,OAAO07G,GAAGd,GAAI,eAAeD,EAAGgB,GAAG,oBAAoBn2G,QAAQ,QAAQ,IAAIA,OAAOo2G,kBAAkBZ,GAA4Ba,IAAzBlB,EAAG,mBAAmBA,GAAOn1G,OAAOs2G,eAAeJ,IAAIC,IAAIhB,KAAM3qH,KAAIurH,IAAmDQ,IAAhDC,GAAG,oBAAoBC,aAAa5pH,GAAE,YAAiByoH,GAAGoB,GAAGF,IAAIL,GAAGQ,IAAI32G,OAAO42G,cAAc52G,OAAO62G,eAAeC,MAAM92G,OAAO42G,eAAeD,IAAII,GAAG,iBAAiB/2G,UAAUA,OAAOg3G,WAAWC,IAAIj3G,OAAOk3G,aAAaH,IAAID,IAAIK,GAAGX,IAAId,GAAG0B,GAAGZ,IAAIX,GAAGwB,GAAG,GAAGr3G,OAAOs3G,kBAAkBt3G,OAAOu3G,OAAOC,WAAWx3G,OAAOu3G,OAAOE,aAAaC,GAAG,WAAW,IAAIznG,GAAE,EAAG,IAAI,IAAIjhB,EAAEvF,OAAOmuB,eAAe,CAAC,EAAE,UAAU,CAACC,IAAI,WAAW5H,GAAE,CAAE,IAAIjQ,OAAOiU,iBAAiB,0BAA0B4vC,EAAE70D,GAAGgR,OAAOqhB,oBAAoB,0BAA0BwiC,EAAE70D,EAAE,CAAC,MAAMihB,GAAG,CAAC,OAAOA,CAAC,CAA5N,GAAgO0nG,KAAK1yG,SAASC,cAAc,UAAU0yG,WAAWC,MAAM5yG,SAASqW,kBAAkB45F,EAAG,OAAO4C,eAAeC,KAAKF,MAAME,GAAG9yG,SAASC,cAAc,QAAQw4C,UAAU,SAAS,gCAAgCq6D,GAAGC,YAAYD,GAAGC,WAAWp7D,eAAe,SAAS/vD,GAAEojB,GAAG,OAAO,GAAGqhB,UAAU0gB,UAAUxgB,cAAch3B,QAAQyV,EAAE,CAAC,IAAI6lE,GAAE,CAACmiC,GAAG7C,EAAG8C,MAAM7C,EAAGhgC,KAAKnqF,EAAEitH,OAAO7C,GAAG8C,QAAQ7C,GAAG8C,UAAU7C,GAAG8C,aAAa7C,GAAGE,MAAMD,GAAG6C,OAAO3C,GAAG4C,MAAM3C,GAAG4C,OAAO3C,GAAG4C,QAAQ3C,GAAG4C,QAAQnuH,GAAEouH,IAAI5C,GAAG6C,KAAK3C,GAAG4C,SAAS3C,GAAG4C,QAAQ5D,EAAG6D,MAAM3C,GAAGvN,OAAO0N,GAAGyC,aAAa1C,GAAG2C,eAAexC,GAAGyC,UAAUxC,GAAGyC,QAAQtC,GAAG31D,MAAM81D,GAAGoC,YAAYtC,GAAGuC,YAAYnC,GAAGoC,YAAYnC,GAAGoC,OAAOnC,GAAGoC,cAAc/B,GAAGgC,OAAO/B,GAAGh7G,IAAIk7G,GAAG8B,KAAK9B,IAAI,WAAW,IAAI,IAAI5nG,EAAEhL,SAASC,cAAc,OAAOlW,GAAGihB,EAAEytC,UAAU,qBAAqBztC,EAAE+nG,YAAY,OAAOhpH,EAAE2E,MAAM0wC,SAAS,oBAAoBr1C,GAAG,iBAAiBA,EAAE4qH,GAAG,CAAC,MAAM3pG,GAAG,OAAM,CAAE,CAAC,CAA7L,GAAiM4pG,UAAU9B,IAAI+B,GAAGhkC,GAAEqjC,UAAU,gBAAgB,cAAcY,GAAGjkC,GAAEqjC,UAAU,gBAAgB,cAAca,GAAGlkC,GAAEqjC,UAAU,cAAc,YAAYc,GAAGnkC,GAAEqjC,UAAU,kBAAkB,gBAAgBe,GAAG,CAAC54D,WAAWw4D,GAAGn0D,UAAUo0D,GAAGn0D,SAASo0D,GAAGG,YAAYF,IAAIG,GAAG,CAAC94D,WAAW,SAASrxC,EAAEjhB,GAAGA,EAAEqrH,sBAAsBrrH,EAAEsrH,cAActrH,EAAEqrH,sBAAsBn9C,GAAEluE,GAAGurH,GAAGtqG,EAAEjhB,EAAE,EAAE22D,UAAU40D,GAAG30D,SAAS20D,GAAGJ,YAAYI,IAAIC,GAAG,CAAC,EAAEC,IAAG,EAAG,SAASC,GAAGzqG,EAAEjhB,EAAE8e,GAAG,MAAM,eAAe9e,GAAGyrH,KAAKx1G,SAASgP,iBAAiB6lG,GAAGa,IAAG,GAAI11G,SAASgP,iBAAiB8lG,GAAGa,IAAG,GAAI31G,SAASgP,iBAAiB+lG,GAAGa,IAAG,GAAI51G,SAASgP,iBAAiBgmG,GAAGY,IAAG,GAAIJ,IAAG,GAAIL,GAAGprH,IAAI8e,EAAEssG,GAAGprH,GAAGsH,KAAKjJ,KAAKygB,GAAGmC,EAAEgE,iBAAiBimG,GAAGlrH,GAAG8e,GAAE,GAAIA,IAAIqF,QAAQo9F,KAAK,yBAAyBvhH,GAAG8sE,EAAE+kC,KAAKwJ,QAAQ,CAAC,SAASsQ,GAAG1qG,GAAGuqG,GAAGvqG,EAAE6qG,WAAW7qG,CAAC,CAAC,SAAS2qG,GAAG3qG,GAAGuqG,GAAGvqG,EAAE6qG,aAAaN,GAAGvqG,EAAE6qG,WAAW7qG,EAAE,CAAC,SAAS4qG,GAAG5qG,UAAUuqG,GAAGvqG,EAAE6qG,UAAU,CAAC,SAASP,GAAGtqG,EAAEjhB,GAAG,GAAGA,EAAEsrH,eAAetrH,EAAE+rH,sBAAsB,SAAS,CAAC,IAAI,IAAIjtG,KAAK9e,EAAEoyD,QAAQ,GAAGo5D,GAAGxrH,EAAEoyD,QAAQjyD,KAAKqrH,GAAG1sG,IAAI9e,EAAEkxD,eAAe,CAAClxD,GAAGihB,EAAEjhB,EAAE,CAAC,CAAC,IAAIgsH,GAAG,IAAI,SAASC,GAAGhrG,EAAEnC,GAAGmC,EAAEgE,iBAAiB,WAAWnG,GAAG,IAAI5iB,EAAEV,EAAE,EAAE,SAASwE,EAAEihB,GAAG,IAAIjhB,EAAE,IAAIihB,EAAE22C,OAAO17D,EAAE+kB,EAAE22C,OAAO,UAAU32C,EAAEqqG,aAAarqG,EAAEirG,qBAAqBjrG,EAAEirG,mBAAmBC,oBAAoBnsH,EAAEyP,KAAK40C,OAAO7oD,GAAGwwH,GAAG,KAAM9vH,GAAG4iB,EAAE,SAASmC,GAAG,IAAIjhB,EAAE8e,EAAE5iB,EAAE,CAAC,EAAE,IAAI4iB,KAAKmC,EAAEjhB,EAAEihB,EAAEnC,GAAG5iB,EAAE4iB,GAAG9e,GAAGA,EAAEsH,KAAKtH,EAAEsH,KAAK2Z,GAAGjhB,EAAE,OAAOihB,EAAE/kB,GAAGud,KAAK,WAAWvd,EAAE07D,OAAO,EAAE17D,EAAEkwH,WAAU,EAAGlwH,EAAEmwH,YAAW,EAAGnwH,CAAC,CAA7I,CAA+I+kB,IAAI/kB,EAAE,EAAEV,EAAEwE,EAAE,CAAC,OAAOihB,EAAEgE,iBAAiB,QAAQjlB,GAAG,CAACssH,SAASxtG,EAAEytG,YAAYvsH,EAAE,CAAC,IAAIwsH,GAAGC,GAAGC,GAAGC,GAAGnnE,GAAGonE,GAAGC,GAAGC,GAAG,CAAC,YAAY,kBAAkB,aAAa,eAAe,gBAAgBC,GAAGD,GAAG,CAAC,mBAAmB,aAAa,cAAc,gBAAgB,iBAAiBj4B,GAAG,qBAAqBk4B,IAAI,gBAAgBA,GAAGA,GAAG,MAAM,gBAAgB,SAASC,GAAG/rG,GAAG,MAAM,iBAAiBA,EAAEhL,SAASg3G,eAAehsG,GAAGA,CAAC,CAAC,SAASsjF,GAAGtjF,EAAEjhB,GAAG,IAAI8e,EAAEmC,EAAEtc,MAAM3E,IAAIihB,EAAEisG,cAAcjsG,EAAEisG,aAAaltH,GAAG,MAAM,UAAU8e,EAAEA,GAAG,SAASA,IAAI7I,SAASguC,YAAYnlC,GAAGmC,EAAEhL,SAASguC,YAAYuK,iBAAiBvtC,EAAE,OAAOA,EAAEjhB,GAAG,MAAM,KAAK8e,CAAC,CAAC,SAASlP,GAAEqR,EAAEjhB,EAAE8e,GAA+B,OAA5BmC,EAAEhL,SAASC,cAAc+K,IAAY81F,UAAU/2G,GAAG,GAAG8e,GAAGA,EAAE6vC,YAAY1tC,GAAGA,CAAC,CAAC,SAASksG,GAAElsG,GAAG,IAAIjhB,EAAEihB,EAAE2C,WAAW5jB,GAAGA,EAAE8tD,YAAY7sC,EAAE,CAAC,SAASmsG,GAAGnsG,GAAG,KAAKA,EAAE+nG,YAAY/nG,EAAE6sC,YAAY7sC,EAAE+nG,WAAW,CAAC,SAASqE,GAAGpsG,GAAG,IAAIjhB,EAAEihB,EAAE2C,WAAW5jB,GAAGA,EAAEstH,YAAYrsG,GAAGjhB,EAAE2uD,YAAY1tC,EAAE,CAAC,SAASssG,GAAGtsG,GAAG,IAAIjhB,EAAEihB,EAAE2C,WAAW5jB,GAAGA,EAAEgpH,aAAa/nG,GAAGjhB,EAAE6uD,aAAa5tC,EAAEjhB,EAAEgpH,WAAW,CAAC,SAASwE,GAAGvsG,EAAEjhB,GAAG,YAAG,IAASihB,EAAEmsC,UAAiBnsC,EAAEmsC,UAAUmB,SAASvuD,GAAkB,GAAfihB,EAAEg/E,GAAGh/E,IAAc3kB,QAAQ,IAAIywD,OAAO,UAAU/sD,EAAE,WAAWstD,KAAKrsC,EAAE,CAAC,SAASsiC,GAAEtiC,EAAEjhB,GAAG,IAAI8e,EAAE,QAAG,IAASmC,EAAEmsC,UAAU,IAAI,IAAIlxD,EAAE8mF,EAAEhjF,GAAGxE,EAAE,EAAEyG,EAAE/F,EAAEI,OAAOd,EAAEyG,EAAEzG,IAAIylB,EAAEmsC,UAAUlsC,IAAIhlB,EAAEV,SAASgyH,GAAGvsG,EAAEjhB,IAAIirG,GAAGhqF,IAAInC,EAAEmhF,GAAGh/E,IAAInC,EAAE,IAAI,IAAI9e,EAAE,CAAC,SAAS6sE,GAAE5rD,EAAEjhB,QAAG,IAASihB,EAAEmsC,UAAUnsC,EAAEmsC,UAAUtoD,OAAO9E,GAAGirG,GAAGhqF,EAAEisD,GAAG,IAAI+yB,GAAGh/E,GAAG,KAAK7jB,QAAQ,IAAI4C,EAAE,IAAI,MAAM,CAAC,SAASirG,GAAGhqF,EAAEjhB,QAAG,IAASihB,EAAE81F,UAAUxlB,QAAQtwE,EAAE81F,UAAU/2G,EAAEihB,EAAE81F,UAAUxlB,QAAQvxF,CAAC,CAAC,SAASigG,GAAGh/E,GAAG,YAAO,KAAUA,EAAEA,EAAEyxC,qBAAqBzxC,EAAEyxC,qBAAqBzxC,GAAG81F,UAAUxlB,QAAQtwE,EAAE81F,UAAU91F,EAAE81F,UAAUxlB,OAAO,CAAC,SAAStX,GAAEh5D,EAAEjhB,GAAG,GAAG,YAAYihB,EAAEtc,MAAMsc,EAAEtc,MAAMqd,QAAQhiB,OAAO,GAAG,WAAWihB,EAAEtc,MAAM,CAAC,IAAIma,GAAE,EAAG5iB,EAAE,mCAAmC,IAAI4iB,EAAEmC,EAAEwsG,QAAQr/F,KAAKlyB,EAAE,CAAC,MAAM+kB,GAAG,GAAG,IAAIjhB,EAAE,MAAM,CAACA,EAAEjE,KAAKukC,MAAM,IAAItgC,GAAG8e,GAAGA,EAAE4uG,QAAQ,MAAM1tH,EAAE8e,EAAE6uG,QAAQ3tH,GAAGihB,EAAEtc,MAAM6R,QAAQ,WAAWta,EAAE,YAAY8D,EAAE,GAAG,CAAC,CAAC,SAAS8sH,GAAG7rG,GAAG,IAAI,IAAIjhB,EAAEiW,SAAS8tC,gBAAgBp/C,MAAMma,EAAE,EAAEA,EAAEmC,EAAE3kB,OAAOwiB,IAAI,GAAGmC,EAAEnC,KAAK9e,EAAE,OAAOihB,EAAEnC,GAAG,OAAM,CAAE,CAAC,SAAS8uG,GAAG3sG,EAAEjhB,EAAE8e,GAAG9e,EAAEA,GAAG,IAAI8O,EAAE,EAAE,GAAGmS,EAAEtc,MAAMkoH,KAAK/lC,GAAE+iC,KAAK,aAAa7pH,EAAEpC,EAAE,MAAMoC,EAAEnC,EAAE,MAAM,eAAemC,EAAEpC,EAAE,MAAMoC,EAAEnC,EAAE,UAAUihB,EAAE,UAAUA,EAAE,IAAI,GAAG,CAAC,SAASiuD,GAAE9rD,EAAEjhB,GAAGihB,EAAE4sG,aAAa7tH,EAAE8mF,GAAEkjC,MAAM4D,GAAG3sG,EAAEjhB,IAAIihB,EAAEtc,MAAMgB,KAAK3F,EAAEpC,EAAE,KAAKqjB,EAAEtc,MAAMa,IAAIxF,EAAEnC,EAAE,KAAK,CAAC,SAASgvF,GAAG5rE,GAAG,OAAOA,EAAE4sG,cAAc,IAAI/+G,EAAE,EAAE,EAAE,CAAC,SAASg/G,KAAK95D,GAAEhjD,OAAO,YAAYk9D,GAAE,CAAC,SAAS6/C,KAAKC,GAAEh9G,OAAO,YAAYk9D,GAAE,CAAC,SAAS+/C,GAAGhtG,GAAG,MAAM,IAAIA,EAAEitG,UAAUjtG,EAAEA,EAAE2C,WAAW3C,EAAEtc,QAAQwpH,KAAKvB,IAAIpnE,GAAGvkC,GAAGtc,MAAM48E,QAAQtgE,EAAEtc,MAAM48E,QAAQ,OAAOvtB,GAAEhjD,OAAO,UAAUm9G,IAAI,CAAC,SAASA,KAAK3oE,KAAKA,GAAG7gD,MAAM48E,QAAQqrC,GAAGA,GAAGpnE,QAAG,EAAOwoE,GAAEh9G,OAAO,UAAUm9G,IAAI,CAAC,SAASC,GAAGntG,GAAG,QAAQA,EAAEA,EAAE2C,YAAYw7B,aAAan+B,EAAEotG,cAAcptG,IAAIhL,SAASi3F,QAAQ,OAAOjsF,CAAC,CAAC,SAASqtG,GAAGrtG,GAAG,IAAIjhB,EAAEihB,EAAEzjB,wBAAwB,MAAM,CAACI,EAAEoC,EAAEjC,MAAMkjB,EAAEm+B,aAAa,EAAEvhD,EAAEmC,EAAEhC,OAAOijB,EAAEotG,cAAc,EAAEE,mBAAmBvuH,EAAE,CAA2xB,SAASg0D,GAAE/yC,EAAEjhB,EAAE8e,EAAE5iB,GAAG,GAAG8D,GAAG,iBAAiBA,EAAE,IAAI,IAAIxE,KAAKwE,EAAEwuH,GAAGvtG,EAAEzlB,EAAEwE,EAAExE,GAAGsjB,QAAQ,IAAI,IAAI7c,EAAE,EAAE83C,GAAG/5C,EAAEgjF,EAAEhjF,IAAI1D,OAAO2F,EAAE83C,EAAE93C,IAAIusH,GAAGvtG,EAAEjhB,EAAEiC,GAAG6c,EAAE5iB,GAAG,OAAOmC,IAAI,CAA16BsuH,GAAG,kBAAkB12G,UAAUy2G,GAAG,WAAW14D,GAAEhjD,OAAO,cAAck9D,GAAE,EAAE,WAAW8/C,GAAEh9G,OAAO,cAAck9D,GAAE,IAAIu+C,GAAGK,GAAG,CAAC,aAAa,mBAAmB,cAAc,gBAAgB,iBAAiBJ,GAAG,WAAW,IAAIzrG,EAAEwrG,KAAKxrG,EAAEhL,SAAS8tC,gBAAgBp/C,MAAM6nH,GAAGvrG,EAAEwrG,IAAIxrG,EAAEwrG,IAAI,OAAO,EAAE,WAAWA,KAAKx2G,SAAS8tC,gBAAgBp/C,MAAM8nH,IAAID,GAAGA,QAAG,EAAO,GAAGpG,EAAG,CAACprH,UAAU,KAAKyzH,UAAU5B,GAAGha,WAAWka,GAAG2B,eAAe75B,GAAGhsE,IAAImkG,GAAG2B,SAASpqB,GAAG7pG,OAAOkV,GAAE9K,OAAOqoH,GAAEv1H,MAAMw1H,GAAGwB,QAAQvB,GAAGwB,OAAOtB,GAAGjO,SAASkO,GAAGte,SAAS3rD,GAAE8rD,YAAYxiC,GAAEiiD,SAAS7jB,GAAG8jB,SAAS9uB,GAAGsc,WAAWtiC,GAAE+0C,SAASlC,GAAGmC,aAAarB,GAAGsB,YAAYniD,GAAEoiD,YAAYtiC,GAAG,wBAAIuiC,GAAuB,OAAO1C,EAAE,EAAE,uBAAI2C,GAAsB,OAAO1C,EAAE,EAAE2C,iBAAiBxB,GAAGyB,gBAAgBxB,GAAGyB,eAAevB,GAAGwB,eAAetB,GAAGuB,mBAAmBtB,GAAGr1E,SAASu1E,IAAqJ,IAAIhkF,GAAE,kBAAkB,SAAS0jF,GAAE/sG,EAAEjhB,EAAE8e,EAAE5iB,GAAG,GAAG,IAAIqJ,UAAUjJ,OAAOqzH,GAAG1uG,UAAUA,EAAEqpB,SAAQ,GAAGtqC,GAAG,iBAAiBA,EAAE,IAAI,IAAIxE,KAAKwE,EAAE4vH,GAAG3uG,EAAEzlB,EAAEwE,EAAExE,GAAGsjB,QAAQ,GAAG9e,EAAEgjF,EAAEhjF,GAAG,IAAIuF,UAAUjJ,OAAOqzH,GAAG1uG,GAAE,SAASA,GAAG,OAAO,IAAIkiE,EAAEnjF,EAAEihB,EAAE,SAAQ,IAAI,IAAIhf,EAAE,EAAE83C,EAAE/5C,EAAE1D,OAAO2F,EAAE83C,EAAE93C,IAAI2tH,GAAG3uG,EAAEjhB,EAAEiC,GAAG6c,EAAE5iB,GAAG,OAAOmC,IAAI,CAAC,SAASsxH,GAAG1uG,EAAEjhB,GAAG,IAAI,IAAI8e,KAAKmC,EAAEqpB,IAAG,CAAC,IAAIpuC,EAAE4iB,EAAEpc,MAAM,MAAM,GAAG1C,IAAIA,EAAE9D,IAAI0zH,GAAG3uG,EAAE/kB,EAAE,KAAK,KAAK4iB,EAAE,CAAC,CAAC,IAAI+wG,GAAG,CAACz/D,WAAW,YAAYC,WAAW,WAAWy/D,QAAQ,YAAY9+G,SAAS,cAAc,SAASw9G,GAAGxuH,EAAEihB,EAAEnC,EAAE5iB,GAAG,IAAIV,EAAEyG,EAAE83C,EAAE94B,EAAEjgB,EAAE8d,IAAI5iB,EAAE,IAAI8E,EAAE9E,GAAG,IAAI8D,EAAEsqC,KAAItqC,EAAEsqC,IAAGyP,KAAK93C,EAAEzG,EAAE,SAASylB,GAAG,OAAOnC,EAAE3jB,KAAKe,GAAG8D,EAAEihB,GAAGjQ,OAAOykC,MAAM,GAAGqxC,GAAEujC,aAAavjC,GAAEsjC,SAAS,IAAInpG,EAAEzV,QAAQ,SAAShQ,EAAEkwH,GAAG1rH,EAAEihB,EAAEzlB,GAAGsrF,GAAE30B,OAAO,aAAalxC,EAAEzlB,EAAEywH,GAAGjsH,EAAExE,GAAG,qBAAqBwE,EAAE,eAAeihB,GAAG,cAAcA,GAAG,UAAUA,GAAG,eAAeA,EAAEjhB,EAAEilB,iBAAiB4qG,GAAG5uG,IAAIA,EAAEzlB,IAAIsrF,GAAE2jC,eAAe,CAACsF,SAAQ,IAAK,eAAe9uG,GAAG,eAAeA,EAAEjhB,EAAEilB,iBAAiB4qG,GAAG5uG,GAAGzlB,EAAE,SAASylB,GAAGA,EAAEA,GAAGjQ,OAAOykC,MAAMu6E,GAAGhwH,EAAEihB,IAAIhf,EAAEgf,EAAE,GAAE,GAAIjhB,EAAEilB,iBAAiBhE,EAAEhf,GAAE,GAAIjC,EAAEglB,YAAY,KAAK/D,EAAEzlB,GAAGwE,EAAEsqC,IAAGtqC,EAAEsqC,KAAI,CAAC,EAAEtqC,EAAEsqC,IAAGyP,GAAGv+C,EAAE,CAAC,SAASo0H,GAAG3uG,EAAEjhB,EAAE8e,EAAE5iB,EAAEV,GAA+B,IAAIyG,EAAE83C,EAAlCv+C,EAAEA,GAAGwE,EAAEgB,EAAE8d,IAAI5iB,EAAE,IAAI8E,EAAE9E,GAAG,KAAY4iB,EAAEmC,EAAEqpB,KAAIrpB,EAAEqpB,IAAG9uC,OAAQsrF,GAAEujC,aAAavjC,GAAEsjC,SAAS,IAAIpqH,EAAEwL,QAAQ,UAAUtP,EAAE+kB,EAAE84B,EAAEj7B,EAAEosG,GAAGjpH,EAAEjC,GAAG9D,EAAEm2B,oBAAoB64F,GAAGjpH,GAAG83C,GAAE,GAAI51B,QAAQo9F,KAAK,yBAAyBt/G,IAAI6kF,GAAE30B,OAAO,aAAanyD,GAAG9D,EAAE4iB,GAAGi7B,EAAE94B,GAAGoR,oBAAoB,WAAWn2B,EAAEowH,UAAUvyE,EAAE1nB,oBAAoB,QAAQn2B,EAAEqwH,cAAc,wBAAwBtrG,EAAEA,EAAEoR,oBAAoBw9F,GAAG7vH,IAAIA,EAAE8e,GAAE,GAAImC,EAAEmR,YAAY,KAAKpyB,EAAE8e,GAAGmC,EAAEqpB,IAAG9uC,GAAG,KAAK,CAAC,SAASy0H,GAAGhvG,GAAG,OAAOA,EAAE8sF,gBAAgB9sF,EAAE8sF,kBAAkB9sF,EAAEo3F,cAAcp3F,EAAEo3F,cAAc6X,UAAS,EAAGjvG,EAAEkvG,cAAa,EAAG9xH,IAAI,CAAC,SAAS+xH,GAAGnvG,GAAG,OAAOutG,GAAGvtG,EAAE,QAAQgvG,IAAI5xH,IAAI,CAAC,SAASgyH,GAAGpvG,GAAG,OAAO+yC,GAAE/yC,EAAE,4CAA4CgvG,IAAIhvG,EAAEqvG,wBAAuB,EAAGjyH,IAAI,CAAC,SAAS6vE,GAAEjtD,GAAG,OAAOA,EAAEmpC,eAAenpC,EAAEmpC,iBAAiBnpC,EAAEsvG,aAAY,EAAGlyH,IAAI,CAAC,SAASmyH,GAAGvvG,GAAG,OAAOitD,GAAEjtD,GAAGgvG,GAAGhvG,GAAG5iB,IAAI,CAAC,SAASoyH,GAAGxvG,EAAEjhB,GAAG,IAAIA,EAAE,OAAO,IAAI8O,EAAEmS,EAAEmiC,QAAQniC,EAAEoiC,SAAS,IAAIvkC,EAAEwvG,GAAGtuH,GAAG9D,EAAE4iB,EAAEyvG,mBAAmB,OAAO,IAAIz/G,GAAGmS,EAAEmiC,QAAQlnD,EAAEyJ,MAAMmZ,EAAElhB,EAAEoC,EAAE+xD,YAAY9wC,EAAEoiC,QAAQnnD,EAAEsJ,KAAKsZ,EAAEjhB,EAAEmC,EAAEgyD,UAAU,CAAC,IAAI0+D,GAAG5pC,GAAE8iC,KAAK9iC,GAAEyiC,OAAO,EAAEv4G,OAAOs3G,iBAAiBxhC,GAAE0iC,MAAMx4G,OAAOs3G,iBAAiB,EAAE,SAASqI,GAAG1vG,GAAG,OAAO6lE,GAAET,KAAKplE,EAAE2vG,YAAY,EAAE3vG,EAAEw2C,QAAQ,IAAIx2C,EAAEy2C,WAAWz2C,EAAEw2C,OAAOi5D,GAAGzvG,EAAEw2C,QAAQ,IAAIx2C,EAAEy2C,UAAU,IAAIz2C,EAAEw2C,OAAOx2C,EAAEw2C,QAAQ,IAAIx2C,EAAEy2C,UAAU,IAAIz2C,EAAEw2C,OAAOx2C,EAAE4vG,QAAQ5vG,EAAE6vG,OAAO,EAAE7vG,EAAE02C,YAAY12C,EAAE2vG,aAAa3vG,EAAE02C,YAAY,EAAE12C,EAAE22C,QAAQ77D,KAAKwgC,IAAItb,EAAE22C,QAAQ,MAAM,IAAI32C,EAAE22C,OAAO32C,EAAE22C,OAAO32C,EAAE22C,QAAQ,MAAM,GAAG,CAAC,CAAC,SAASo4D,GAAG/uG,EAAEjhB,GAAG,IAAI8e,EAAE9e,EAAEuwD,cAAc,IAAIzxC,EAAE,OAAM,EAAG,IAAI,KAAKA,GAAGA,IAAImC,GAAGnC,EAAEA,EAAE8E,UAAU,CAAC,MAAM3C,GAAG,OAAM,CAAE,CAAC,OAAOnC,IAAImC,CAAC,CAAKolG,EAAG,CAACrrH,UAAU,KAAKuc,GAAGy8C,GAAElD,IAAIk9D,GAAEjgB,gBAAgBkiB,GAAGc,yBAAyBX,GAAGY,wBAAwBX,GAAGjmE,eAAe8jB,GAAEpuE,KAAK0wH,GAAGS,iBAAiBR,GAAGS,cAAcP,GAAGQ,iBAAiBnB,GAAGoB,YAAYp9D,GAAEq9D,eAAerD,IAA3N,IAA8NsD,GAAGlP,EAAG7U,OAAO,CAACgkB,IAAI,SAAStwG,EAAEjhB,EAAE8e,EAAE5iB,GAAGmC,KAAKyB,OAAOzB,KAAKmzH,IAAIvwG,EAAE5iB,KAAKozH,aAAY,EAAGpzH,KAAKqzH,UAAU5yG,GAAG,IAAIzgB,KAAKszH,cAAc,EAAE51H,KAAK+G,IAAI5G,GAAG,GAAG,IAAImC,KAAKuzH,UAAU/kC,GAAG5rE,GAAG5iB,KAAKwzH,QAAQ7xH,EAAE8iH,SAASzkH,KAAKuzH,WAAWvzH,KAAKyzH,YAAY,IAAIriH,KAAKpR,KAAK+wG,KAAK,SAAS/wG,KAAK0zH,UAAU,EAAEjyH,KAAK,WAAWzB,KAAKozH,cAAcpzH,KAAK2zH,OAAM,GAAI3zH,KAAK4zH,YAAY,EAAEF,SAAS,WAAW1zH,KAAK6zH,QAAQt0H,EAAES,KAAK0zH,SAAS1zH,MAAMA,KAAK2zH,OAAO,EAAEA,MAAM,SAAS/wG,GAAG,IAAIjhB,GAAG,IAAIyP,KAAKpR,KAAKyzH,WAAWhzG,EAAE,IAAIzgB,KAAKqzH,UAAU1xH,EAAE8e,EAAEzgB,KAAK8zH,UAAU9zH,KAAK+zH,SAASpyH,EAAE8e,GAAGmC,IAAI5iB,KAAK8zH,UAAU,GAAG9zH,KAAK4zH,YAAY,EAAEE,UAAU,SAASlxG,EAAEjhB,GAAGihB,EAAE5iB,KAAKuzH,UAAU1wG,IAAI7iB,KAAKwzH,QAAQ3O,WAAWjiG,IAAIjhB,GAAGihB,EAAEi9F,SAASnxC,GAAE1uE,KAAKmzH,IAAIvwG,GAAG5iB,KAAK+wG,KAAK,OAAO,EAAE6iB,UAAU,WAAWl4E,EAAE17C,KAAK6zH,SAAS7zH,KAAKozH,aAAY,EAAGpzH,KAAK+wG,KAAK,MAAM,EAAEgjB,SAAS,SAASnxG,GAAG,OAAO,EAAEllB,KAAKy0B,IAAI,EAAEvP,EAAE5iB,KAAKszH,cAAc,IAAI1jD,GAAEm0C,EAAG7U,OAAO,CAAC5wG,QAAQ,CAAC05G,IAAI2P,EAAG/1E,YAAO,EAAO34B,UAAK,EAAO+6G,aAAQ,EAAOC,aAAQ,EAAOC,OAAO,GAAGC,eAAU,EAAOC,cAAS,EAAOvT,eAAc,EAAGwT,uBAAuB,EAAEC,eAAc,EAAGC,qBAAoB,EAAGC,iBAAiB,QAAQC,SAAS,EAAEC,UAAU,EAAEC,aAAY,GAAIjlG,WAAW,SAAS9M,EAAEjhB,GAAGA,EAAEm3B,EAAE94B,KAAK2B,GAAG3B,KAAK40H,UAAU,GAAG50H,KAAKmhH,QAAQ,CAAC,EAAEnhH,KAAK60H,iBAAiB,CAAC,EAAE70H,KAAK80H,cAAa,EAAG90H,KAAK+0H,eAAenyG,GAAG5iB,KAAKg1H,cAAch1H,KAAKi1H,UAAU3jH,EAAEtR,KAAKi1H,UAAUj1H,MAAMA,KAAKk1H,cAAcvzH,EAAEwyH,WAAWn0H,KAAKm1H,aAAaxzH,EAAEwyH,gBAAW,IAASxyH,EAAEsX,OAAOjZ,KAAK01G,MAAM11G,KAAKo1H,WAAWzzH,EAAEsX,OAAOtX,EAAEiwC,aAAQ,IAASjwC,EAAEsX,MAAMjZ,KAAKq9G,QAAQz6G,EAAEjB,EAAEiwC,QAAQjwC,EAAEsX,KAAK,CAAC6gC,OAAM,IAAK95C,KAAK4iH,gBAAgB5iH,KAAKq1H,cAAc3G,IAAIjmC,GAAEkjC,QAAQljC,GAAEwjC,aAAajsH,KAAK1B,QAAQuiH,cAAc7gH,KAAKq1H,gBAAgBr1H,KAAKs1H,mBAAmB3/D,GAAE31D,KAAKu1H,OAAO/+B,GAAGx2F,KAAKw1H,oBAAoBx1H,OAAOA,KAAKy1H,WAAWz1H,KAAK1B,QAAQ41H,OAAO,EAAE7W,QAAQ,SAASz6F,EAAEjhB,EAAE8e,GAAG,OAAI9e,OAAE,IAASA,EAAE3B,KAAK01G,MAAM11G,KAAKo1H,WAAWzzH,GAAGihB,EAAE5iB,KAAK01H,aAAa9yH,EAAEggB,GAAGjhB,EAAE3B,KAAK1B,QAAQ61H,WAAW1zG,EAAEA,GAAG,CAAC,EAAEzgB,KAAK21H,QAAQ31H,KAAK41H,UAAUn1G,EAAEq5B,QAAO,IAAKr5B,SAAK,IAASA,EAAEqyF,UAAUryF,EAAExH,KAAKy/B,EAAE,CAACo6D,QAAQryF,EAAEqyF,SAASryF,EAAExH,MAAMwH,EAAEo1G,IAAIn9E,EAAE,CAACo6D,QAAQryF,EAAEqyF,QAAQrhG,SAASgP,EAAEhP,UAAUgP,EAAEo1G,MAAM71H,KAAK01G,QAAQ/zG,EAAE3B,KAAK81H,kBAAkB91H,KAAK81H,iBAAiBlzG,EAAEjhB,EAAE8e,EAAExH,MAAMjZ,KAAK+1H,gBAAgBnzG,EAAEnC,EAAEo1G,OAAaxvG,aAAarmB,KAAKg2H,YAAYh2H,OAAYA,KAAKi2H,WAAWrzG,EAAEjhB,GAAG3B,KAAI,EAAEk2H,QAAQ,SAAStzG,EAAEjhB,GAAG,OAAO3B,KAAK41H,QAAQ51H,KAAKq9G,QAAQr9G,KAAKslH,YAAY1iG,EAAE,CAAC3J,KAAKtX,KAAK3B,KAAK01G,MAAM9yF,EAAE5iB,KAAK,EAAEm2H,OAAO,SAASvzG,EAAEjhB,GAAG,OAAOihB,EAAEA,IAAI6lE,GAAEkjC,MAAM3rH,KAAK1B,QAAQo2H,UAAU,GAAG10H,KAAKk2H,QAAQl2H,KAAK01G,MAAM9yF,EAAEjhB,EAAE,EAAEy0H,QAAQ,SAASxzG,EAAEjhB,GAAG,OAAOihB,EAAEA,IAAI6lE,GAAEkjC,MAAM3rH,KAAK1B,QAAQo2H,UAAU,GAAG10H,KAAKk2H,QAAQl2H,KAAK01G,MAAM9yF,EAAEjhB,EAAE,EAAE00H,cAAc,SAASzzG,EAAEjhB,EAAE8e,GAAG,IAAI5iB,EAAEmC,KAAKs2H,aAAa30H,GAAGxE,EAAE6C,KAAK2lH,UAAUhB,SAAS,GAA6H,OAA1H/hG,GAAGA,aAAanS,EAAEmS,EAAE5iB,KAAKu2H,uBAAuB3zG,IAAI6hG,SAAStnH,GAAG0nH,WAAW,EAAE,EAAEhnH,GAAGA,EAAEmC,KAAKw2H,uBAAuBr5H,EAAE0lB,IAAID,IAAW5iB,KAAKq9G,QAAQx/G,EAAE8D,EAAE,CAACsX,KAAKwH,GAAG,EAAEg2G,qBAAqB,SAAS7zG,EAAEjhB,GAAGA,EAAEA,GAAG,CAAC,EAAEihB,EAAEA,EAAEo0F,UAAUp0F,EAAEo0F,YAAYtxG,EAAEkd,GAAG,IAAInC,EAAEipC,EAAE/nD,EAAE+0H,gBAAgB/0H,EAAE4O,SAAS,CAAC,EAAE,IAAI1S,EAAE6rD,EAAE/nD,EAAEg1H,oBAAoBh1H,EAAE4O,SAAS,CAAC,EAAE,IAAIpT,EAAE6C,KAAKm9G,cAAcv6F,GAAE,EAAGnC,EAAEoC,IAAIhlB,IAAI,OAAIV,EAAE,iBAAiBwE,EAAEsyH,QAAQv2H,KAAK+B,IAAIkC,EAAEsyH,QAAQ92H,GAAGA,KAAK,IAAU,CAACy0C,OAAOhvB,EAAE0iG,YAAYrsG,KAAK9b,IAAGwE,EAAE9D,EAAE4mH,SAAShkG,GAAGkkG,SAAS,GAAG9mH,EAAEmC,KAAK0+E,QAAQ97D,EAAEkjG,eAAe3oH,GAAGsjB,EAAEzgB,KAAK0+E,QAAQ97D,EAAEmjG,eAAe5oH,GAAS,CAACy0C,OAAO5xC,KAAK2mH,UAAU9oH,EAAEglB,IAAIpC,GAAGkkG,SAAS,GAAG9hG,IAAIlhB,GAAGxE,GAAG8b,KAAK9b,GAAE,EAAEmgH,UAAU,SAAS16F,EAAEjhB,GAAG,KAAKihB,EAAEld,EAAEkd,IAAIijG,UAAU,MAAM,IAAIlyG,MAAM,yBAA0D,OAAjCiP,EAAE5iB,KAAKy2H,qBAAqB7zG,EAAEjhB,GAAU3B,KAAKq9G,QAAQz6F,EAAEgvB,OAAOhvB,EAAE3J,KAAKtX,EAAE,EAAEi1H,SAAS,SAASh0G,GAAG,OAAO5iB,KAAKs9G,UAAU,CAAC,EAAE,IAAI,KAAK,CAAC,GAAG,MAAM16F,EAAE,EAAE+0F,MAAM,SAAS/0F,EAAEjhB,GAAG,OAAO3B,KAAKq9G,QAAQz6F,EAAE5iB,KAAK01G,MAAM,CAACmgB,IAAIl0H,GAAG,EAAEk1H,MAAM,SAASj0G,EAAEjhB,GAAG,OAAOA,EAAEA,GAAG,CAAC,GAAGihB,EAAE8mC,EAAE9mC,GAAGqf,SAAS1iC,GAAGqjB,EAAEpjB,IAAG,IAAKmC,EAAEmxG,SAAS9yG,KAAK2lH,UAAUz1D,SAASttC,IAAI5iB,KAAK82H,WAAW92H,KAAK82H,SAAS,IAAI7D,GAAGjzH,KAAK82H,SAAS59G,GAAG,CAAC0+B,KAAK53C,KAAK+2H,qBAAqB9lH,IAAIjR,KAAKg3H,qBAAqBh3H,OAAO2B,EAAEs1H,aAAaj3H,KAAK+wG,KAAK,cAAa,IAAKpvG,EAAEmxG,SAAS5tD,GAAEllD,KAAKy4G,SAAS,oBAAoBh4F,EAAEzgB,KAAKk3H,iBAAiBzS,SAAS7hG,GAAGqf,QAAQjiC,KAAK82H,SAAS5D,IAAIlzH,KAAKy4G,SAASh4F,EAAE9e,EAAE8P,UAAU,IAAI9P,EAAEw1H,iBAAiBn3H,KAAKo3H,UAAUx0G,GAAG5iB,KAAK+wG,KAAK,QAAQA,KAAK,aAAa/wG,KAAKi2H,WAAWj2H,KAAK2mH,UAAU3mH,KAAK0+E,QAAQ1+E,KAAKslH,aAAaziG,IAAID,IAAI5iB,KAAKo9G,WAAWp9G,MAAMA,KAAK+wG,KAAK,WAAW,IAAItwF,CAAC,EAAE42G,MAAM,SAASx5H,EAAEV,EAAEylB,GAAG,IAAG,KAAMA,EAAEA,GAAG,CAAC,GAAGkwF,UAAUrqB,GAAEkjC,MAAM,OAAO3rH,KAAKq9G,QAAQx/G,EAAEV,EAAEylB,GAAG5iB,KAAK21H,QAAQ,IAAI/xH,EAAE5D,KAAK0+E,QAAQ1+E,KAAKslH,aAAa5pE,EAAE17C,KAAK0+E,QAAQ7gF,GAAG8D,EAAE3B,KAAK2lH,UAAUr0G,EAAEtR,KAAK01G,MAAM/yG,GAAG9E,EAAE+E,EAAE/E,GAAGV,OAAE,IAASA,EAAEmU,EAAEnU,EAAEO,KAAK+G,IAAI9C,EAAEpC,EAAEoC,EAAEnC,IAAIihB,EAAE9d,EAAE3C,KAAKs2H,aAAahlH,EAAEnU,GAAGu7C,EAAEgD,EAAE0pE,WAAWxhH,IAAI,EAAE4yD,EAAE,KAAK19B,EAAE09B,EAAEA,EAAE,SAASz4D,EAAE6kB,GAAqE,OAAlEA,GAAGnC,EAAEA,EAAE9d,EAAEA,GAAGigB,GAAG,EAAE,GAAGkW,EAAEA,EAAE4f,EAAEA,IAAI,GAAG91B,EAAEnC,EAAE9d,GAAGm2B,EAAE4f,IAAG91B,EAAEllB,KAAKogC,KAAKlb,EAAEA,EAAE,GAAGA,GAAW,MAAM,GAAGllB,KAAKy4D,IAAIvzC,EAAE,CAAC,SAAS8mC,EAAE9mC,GAAG,OAAOllB,KAAK43D,IAAI1yC,GAAGllB,KAAK43D,KAAK1yC,IAAI,CAAC,CAAC,SAASnS,EAAEmS,GAAG,OAAOllB,KAAK43D,IAAI1yC,GAAGllB,KAAK43D,KAAK1yC,IAAI,CAAC,CAAC,IAAImlC,EAAEhqD,EAAE,GAAG,SAASipB,EAAEpE,GAAG,OAAOjgB,GAAG8N,EAAEs3C,IAAI2B,EAAE9mC,EAAEmlC,EAAEyO,EAAE5zC,GAAGnS,EAAEmS,IAAI8mC,EAAE3B,IAAIjvB,CAAC,CAAC,IAAIpzB,EAAE0L,KAAK40C,MAAM/oD,GAAGc,EAAE,GAAGgqD,GAAGyO,EAAEh3D,EAAEojB,EAAEnR,SAAS,IAAImR,EAAEnR,SAAS,IAAIxU,EAAE,GAAG,OAAO+C,KAAKs3H,YAAW,EAAG10G,EAAEq0G,aAAa,SAASr0G,IAAI,IAAIjhB,GAAGyP,KAAK40C,MAAMtgD,GAAGlG,EAAEihB,GAAG,EAAE/iB,KAAKy0B,IAAI,EAAExwB,EAAE,MAAM1E,EAAE0E,GAAG,GAAG3B,KAAKu3H,YAAYh4H,EAAEqjB,EAAE5iB,MAAMA,KAAKw3H,MAAMx3H,KAAK2mH,UAAU/iH,EAAEif,IAAI64B,EAAE+oE,SAAS7gH,GAAGihH,WAAW79F,EAAEvG,GAAGi4B,IAAIpnC,GAAGtR,KAAKy3H,aAAa90H,GAAGhB,EAAE8e,EAAE9d,GAAG8N,EAAEs3C,GAAGt3C,EAAEs3C,EAAEyO,EAAE70D,KAAK2P,GAAG,CAAC+lH,OAAM,KAAMr3H,KAAKw3H,MAAM35H,EAAEV,GAAGk7G,UAAS,EAAG,EAAEv7G,KAAKkD,MAAMA,IAAI,EAAE03H,YAAY,SAAS90G,EAAEjhB,GAAoC,OAAjCihB,EAAE5iB,KAAKy2H,qBAAqB7zG,EAAEjhB,GAAU3B,KAAKq3H,MAAMz0G,EAAEgvB,OAAOhvB,EAAE3J,KAAKtX,EAAE,EAAEwzH,aAAa,SAASvyG,GAAG,OAAOA,EAAEld,EAAEkd,IAAIijG,WAAW7lH,KAAK1B,QAAQ61H,WAAWn0H,KAAKyyD,IAAI,UAAUzyD,KAAK23H,qBAAqB33H,KAAK1B,QAAQ61H,UAAUvxG,EAAE5iB,KAAK41H,SAAS51H,KAAK23H,sBAAsB33H,KAAKkZ,GAAG,UAAUlZ,KAAK23H,uBAAuB33H,KAAK1B,QAAQ61H,UAAU,KAAKn0H,KAAKyyD,IAAI,UAAUzyD,KAAK23H,qBAAqB,EAAEC,WAAW,SAASh1G,GAAG,IAAIjhB,EAAE3B,KAAK1B,QAAQ01H,QAAQ,OAAOh0H,KAAK1B,QAAQ01H,QAAQpxG,EAAE5iB,KAAK41H,SAASj0H,IAAIihB,IAAI5iB,KAAK+wG,KAAK,oBAAoB/wG,KAAKo9G,UAAUp9G,KAAK1B,QAAQ01H,SAASh0H,KAAKk2H,QAAQtzG,GAAG5iB,IAAI,EAAE63H,WAAW,SAASj1G,GAAG,IAAIjhB,EAAE3B,KAAK1B,QAAQ21H,QAAQ,OAAOj0H,KAAK1B,QAAQ21H,QAAQrxG,EAAE5iB,KAAK41H,SAASj0H,IAAIihB,IAAI5iB,KAAK+wG,KAAK,oBAAoB/wG,KAAKo9G,UAAUp9G,KAAK1B,QAAQ21H,SAASj0H,KAAKk2H,QAAQtzG,GAAG5iB,IAAI,EAAE83H,gBAAgB,SAASl1G,EAAEjhB,GAAG3B,KAAK+3H,kBAAiB,EAAG,IAAIt3G,EAAEzgB,KAAKslH,YAAmD,OAAvC1iG,EAAE5iB,KAAK01H,aAAaj1G,EAAEzgB,KAAK01G,MAAMhwG,EAAEkd,IAAWnC,EAAE4kG,OAAOziG,IAAI5iB,KAAK23G,MAAM/0F,EAAEjhB,GAAG3B,KAAK+3H,kBAAiB,EAAG/3H,IAAI,EAAEg4H,UAAU,SAASp1G,EAAEjhB,GAAG,IAAI8e,EAAEipC,GAAG/nD,EAAEA,GAAG,CAAC,GAAG+0H,gBAAgB/0H,EAAE4O,SAAS,CAAC,EAAE,IAAI1S,EAAE6rD,EAAE/nD,EAAEg1H,oBAAoBh1H,EAAE4O,SAAS,CAAC,EAAE,IAAIpT,EAAE6C,KAAK0+E,QAAQ1+E,KAAKslH,aAA6F1hH,GAAhFgf,EAAE5iB,KAAK0+E,QAAQ97D,IAA2BnC,EAAEuG,EAAE,EAA5BpjB,EAAE5D,KAAKi4H,kBAAwBx4H,IAAIojB,IAAIpC,GAAG7c,EAAEa,IAAIggH,SAAS5mH,MAAS8nH,WAAU,OAAOllG,EAAEyvC,SAASttC,KAAK5iB,KAAK+3H,kBAAiB,EAAGl6H,EAAE+kB,EAAE6hG,SAAShkG,EAAE6kG,aAAa7kG,EAAEA,EAAEyuF,OAAOtsF,GAAG+iG,UAAUlB,SAAS7gH,GAAGzG,EAAEoC,GAAG1B,EAAE0B,EAAE,GAAGkhB,EAAElhB,EAAEkhB,EAAElhB,EAAEpC,EAAEqC,GAAG3B,EAAE2B,EAAE,GAAGihB,EAAEjhB,EAAEihB,EAAEjhB,EAAEQ,KAAK23G,MAAM33G,KAAK2mH,UAAUxpH,GAAGwE,GAAG3B,KAAK+3H,kBAAiB,GAAI/3H,IAAI,EAAEkxG,eAAe,SAAStuF,GAAG,IAAI5iB,KAAK41H,QAAQ,OAAO51H,KAAK4iB,EAAE81B,EAAE,CAACo6D,SAAQ,EAAG+iB,KAAI,IAAI,IAAKjzG,EAAE,CAACkwF,SAAQ,GAAIlwF,GAAG,IAAIjhB,EAAE3B,KAAK2lH,UAAUllG,GAAGzgB,KAAK80H,cAAa,EAAG90H,KAAKk4H,YAAY,KAAKl4H,KAAK2lH,WAAW9nH,EAAE8D,EAAEgjH,SAAS,GAAG1iF,QAAQ9kC,EAAEsjB,EAAEkkG,SAAS,GAAG1iF,QAAwB,OAAhBpkC,EAAEA,EAAE4mH,SAAStnH,IAAYoC,GAAG1B,EAAE2B,GAAGojB,EAAEkwF,SAASlwF,EAAEizG,IAAI71H,KAAK62H,MAAMh5H,IAAI+kB,EAAEizG,KAAK71H,KAAKo3H,UAAUv5H,GAAGmC,KAAK+wG,KAAK,QAAQnuF,EAAEu1G,iBAAiB9xG,aAAarmB,KAAKg2H,YAAYh2H,KAAKg2H,WAAW1vG,WAAWhV,EAAEtR,KAAK+wG,KAAK/wG,KAAK,WAAW,MAAMA,KAAK+wG,KAAK,YAAY/wG,KAAK+wG,KAAK,SAAS,CAACqnB,QAAQz2H,EAAE02H,QAAQ53G,KAAKzgB,IAAI,EAAEyB,KAAK,WAAW,OAAOzB,KAAKk2H,QAAQl2H,KAAKo1H,WAAWp1H,KAAK01G,QAAQ11G,KAAK1B,QAAQm2H,UAAUz0H,KAAK+wG,KAAK,aAAa/wG,KAAK21H,OAAO,EAAE2C,OAAO,SAAS11G,GAAG,GAAGA,EAAE5iB,KAAKu4H,eAAe7/E,EAAE,CAAC8/E,QAAQ,IAAIC,OAAM,GAAI71G,KAAK,gBAAgBqhB,WAAW,OAAOjkC,KAAK04H,wBAAwB,CAAC73C,KAAK,EAAE83C,QAAQ,+BAA+B34H,KAAK,IAAI2B,EAAE2P,EAAEtR,KAAK44H,2BAA2B54H,MAAMygB,EAAEnP,EAAEtR,KAAK04H,wBAAwB14H,MAAM,OAAO4iB,EAAE61G,MAAMz4H,KAAK64H,iBAAiB50F,UAAU60F,YAAYC,cAAcp3H,EAAE8e,EAAEmC,GAAGqhB,UAAU60F,YAAYE,mBAAmBr3H,EAAE8e,EAAEmC,GAAG5iB,IAAI,EAAEi5H,WAAW,WAAW,OAAOh1F,UAAU60F,aAAa70F,UAAU60F,YAAYI,YAAYj1F,UAAU60F,YAAYI,WAAWl5H,KAAK64H,kBAAkB74H,KAAKu4H,iBAAiBv4H,KAAKu4H,eAAelb,SAAQ,GAAIr9G,IAAI,EAAE04H,wBAAwB,SAAS91G,GAAG,IAAIjhB,EAAE3B,KAAKs6G,WAAWiH,cAAc5/G,EAAEihB,EAAEi+D,KAAKj+D,EAAEA,EAAE+1G,UAAU,IAAIh3H,EAAE,oBAAoB,IAAIA,EAAE,uBAAuB,WAAW3B,KAAKu4H,eAAelb,UAAUr9G,KAAK41H,SAAS51H,KAAK42H,WAAW52H,KAAK+wG,KAAK,gBAAgB,CAAClwB,KAAKl/E,EAAEg3H,QAAQ,sBAAsB/1G,EAAE,MAAM,EAAEg2G,2BAA2B,SAASh2G,GAAG,GAAG5iB,KAAKs6G,WAAWiH,YAAY,CAAC,IAAI5/G,EAAE8e,EAAE5iB,EAAE,IAAIZ,EAAE2lB,EAAEu2G,OAAOC,SAASx2G,EAAEu2G,OAAOE,WAAWl8H,EAAEU,EAAEmpH,SAAS,EAAEpkG,EAAEu2G,OAAOG,UAAU11H,EAAE5D,KAAKu4H,eAAe78E,GAAG93C,EAAEy5G,UAAU17G,EAAE3B,KAAKm9G,cAAchgH,GAAG6C,KAAKq9G,QAAQx/G,EAAE+F,EAAEqwH,QAAQv2H,KAAK+B,IAAIkC,EAAEiC,EAAEqwH,SAAStyH,IAAI,CAACy0G,OAAOv4G,EAAEk4E,OAAO54E,EAAEo8H,UAAU32G,EAAE22G,YAAY,IAAI94G,KAAKmC,EAAEu2G,OAAO,iBAAiBv2G,EAAEu2G,OAAO14G,KAAKi7B,EAAEj7B,GAAGmC,EAAEu2G,OAAO14G,IAAIzgB,KAAK+wG,KAAK,gBAAgBr1D,EAAE,CAAC,EAAE89E,WAAW,SAAS52G,EAAEjhB,GAAG,OAAIA,GAAcA,EAAE3B,KAAK4iB,GAAG,IAAIjhB,EAAE3B,MAAaA,KAAK40H,UAAU9yH,KAAKH,GAAG3B,KAAK1B,QAAQskB,IAAIjhB,EAAEk5B,SAAS76B,MAArFA,IAAyF,EAAEyG,OAAO,WAAW,GAAGzG,KAAKk1H,aAAY,GAAIl1H,KAAK1B,QAAQ61H,WAAWn0H,KAAKyyD,IAAI,UAAUzyD,KAAK23H,qBAAqB33H,KAAKy5H,eAAez5H,KAAKs6G,WAAWiH,YAAY,MAAM,IAAI5tG,MAAM,qDAAqD,WAAW3T,KAAKs6G,WAAWiH,mBAAmBvhH,KAAKy5H,YAAY,CAAC,MAAM72G,GAAG5iB,KAAKs6G,WAAWiH,iBAAY,EAAOvhH,KAAKy5H,kBAAa,CAAM,CAAC,IAAI,IAAI72G,UAAK,IAAS5iB,KAAK64H,kBAAkB74H,KAAKi5H,aAAaj5H,KAAK21H,QAAQ7G,GAAE9uH,KAAKy4G,UAAUz4G,KAAK05H,kBAAkB15H,KAAK05H,mBAAmB15H,KAAK25H,iBAAiBj+E,EAAE17C,KAAK25H,gBAAgB35H,KAAK25H,eAAe,MAAM35H,KAAK45H,iBAAiB55H,KAAK41H,SAAS51H,KAAK+wG,KAAK,UAAU/wG,KAAKmhH,QAAQnhH,KAAKmhH,QAAQv+F,GAAGnc,SAAS,IAAImc,KAAK5iB,KAAK65H,OAAO/K,GAAE9uH,KAAK65H,OAAOj3G,IAAI,OAAO5iB,KAAKmhH,QAAQ,GAAGnhH,KAAK65H,OAAO,UAAU75H,KAAKy4G,gBAAgBz4G,KAAK85H,UAAU95H,IAAI,EAAE+5H,WAAW,SAASn3G,EAAEjhB,GAA8F,OAA3FA,EAAE4P,GAAE,MAAM,gBAAgBqR,EAAE,YAAYA,EAAE7jB,QAAQ,OAAO,IAAI,QAAQ,IAAI4C,GAAG3B,KAAKy4G,UAAiB71F,IAAI5iB,KAAK65H,OAAOj3G,GAAGjhB,GAAGA,CAAC,EAAE2jH,UAAU,WAAW,OAAOtlH,KAAKg6H,iBAAiBh6H,KAAKk4H,cAAcl4H,KAAKi6H,SAASj6H,KAAKk4H,YAAYl4H,KAAKkgH,mBAAmBlgH,KAAKk6H,uBAAuB,EAAE9c,QAAQ,WAAW,OAAOp9G,KAAK01G,KAAK,EAAEsB,UAAU,WAAW,IAAIp0F,EAAE5iB,KAAKi4H,iBAAiB,OAAO,IAAIr0H,EAAE5D,KAAK2mH,UAAU/jG,EAAE2iG,iBAAiBvlH,KAAK2mH,UAAU/jG,EAAE4iG,eAAe,EAAEzM,WAAW,WAAW,YAAO,IAAS/4G,KAAK1B,QAAQ01H,QAAQh0H,KAAKm6H,gBAAgB,EAAEn6H,KAAK1B,QAAQ01H,OAAO,EAAEnc,WAAW,WAAW,YAAO,IAAS73G,KAAK1B,QAAQ21H,aAAQ,IAASj0H,KAAKo6H,eAAe,IAAIp6H,KAAKo6H,eAAep6H,KAAK1B,QAAQ21H,OAAO,EAAE9W,cAAc,SAASv6F,EAAEjhB,EAAE8e,GAAGmC,EAAEld,EAAEkd,GAAGnC,EAAEipC,EAAEjpC,GAAG,CAAC,EAAE,IAAI,IAAI5iB,EAAEmC,KAAKo9G,WAAW,EAAEjgH,EAAE6C,KAAK+4G,aAAan1G,EAAE5D,KAAK63G,aAAan8D,EAAE94B,EAAEojG,eAAoJ10G,GAArIsR,EAAEA,EAAEsjG,eAAezlG,EAAEzgB,KAAK2lH,UAAUlB,SAAShkG,GAAGmC,EAAEoE,EAAEhnB,KAAK0+E,QAAQ97D,EAAE/kB,GAAGmC,KAAK0+E,QAAQhjC,EAAE79C,IAAI8nH,UAAUjqE,EAAE+sC,GAAEkjC,MAAM3rH,KAAK1B,QAAQm2H,SAAS,EAAIh0G,EAAElhB,EAAEqjB,EAAErjB,GAAqE,OAAnEkhB,EAAEA,EAAEjhB,EAAEojB,EAAEpjB,EAAEojB,EAAEjhB,EAAEjE,KAAK+G,IAAI6M,EAAEmP,GAAG/iB,KAAK+B,IAAI6R,EAAEmP,GAAG5iB,EAAEmC,KAAKy3H,aAAa70G,EAAE/kB,GAAU69C,IAAI79C,EAAEH,KAAKukC,MAAMpkC,GAAG69C,EAAE,OAAOA,EAAE,KAAK79C,EAAE8D,EAAEjE,KAAKC,KAAKE,EAAE69C,GAAGA,EAAEh+C,KAAKiqD,MAAM9pD,EAAE69C,GAAGA,GAAGh+C,KAAK+G,IAAItH,EAAEO,KAAK+B,IAAImE,EAAE/F,GAAG,EAAE8nH,QAAQ,WAAW,OAAO3lH,KAAKq6H,QAAQr6H,KAAK80H,eAAe90H,KAAKq6H,MAAM,IAAI5pH,EAAEzQ,KAAKs6G,WAAWggB,aAAa,EAAEt6H,KAAKs6G,WAAWigB,cAAc,GAAGv6H,KAAK80H,cAAa,GAAI90H,KAAKq6H,MAAMlwG,OAAO,EAAE8tG,eAAe,SAASr1G,EAAEjhB,GAAgC,OAAO,IAAIomD,EAAxCnlC,EAAE5iB,KAAKw6H,iBAAiB53G,EAAEjhB,GAAkBihB,EAAEC,IAAI7iB,KAAK2lH,WAAW,EAAE8U,eAAe,WAAW,OAAOz6H,KAAKg6H,iBAAiBh6H,KAAK06H,YAAY,EAAEC,oBAAoB,SAAS/3G,GAAG,OAAO5iB,KAAK1B,QAAQ05G,IAAI4O,wBAAmB,IAAShkG,EAAE5iB,KAAKo9G,UAAUx6F,EAAE,EAAEg4G,QAAQ,SAASh4G,GAAG,MAAM,iBAAiBA,EAAE5iB,KAAK65H,OAAOj3G,GAAGA,CAAC,EAAEi4G,SAAS,WAAW,OAAO76H,KAAK65H,MAAM,EAAE7pB,aAAa,WAAW,OAAOhwG,KAAKs6G,UAAU,EAAEgc,aAAa,SAAS1zG,EAAEjhB,GAAG,IAAI8e,EAAEzgB,KAAK1B,QAAQ05G,IAAI,OAAOr2G,OAAE,IAASA,EAAE3B,KAAK01G,MAAM/zG,EAAE8e,EAAEvgB,MAAM0iB,GAAGnC,EAAEvgB,MAAMyB,EAAE,EAAE81H,aAAa,SAAS70G,EAAEjhB,GAAG,IAAI8e,EAAEzgB,KAAK1B,QAAQ05G,IAAuD,OAAhDr2G,OAAE,IAASA,EAAE3B,KAAK01G,MAAM/zG,EAA3BihB,EAA6BnC,EAAExH,KAAK2J,EAAEnC,EAAEvgB,MAAMyB,IAAY8lB,MAAM7E,GAAG,IAAIA,CAAC,EAAE87D,QAAQ,SAAS97D,EAAEjhB,GAAG,OAAOA,OAAE,IAASA,EAAE3B,KAAK01G,MAAM/zG,EAAE3B,KAAK1B,QAAQ05G,IAAIsO,cAAc1jH,EAAEggB,GAAGjhB,EAAE,EAAEglH,UAAU,SAAS/jG,EAAEjhB,GAAG,OAAOA,OAAE,IAASA,EAAE3B,KAAK01G,MAAM/zG,EAAE3B,KAAK1B,QAAQ05G,IAAIyO,cAAc/8D,EAAE9mC,GAAGjhB,EAAE,EAAEu+G,mBAAmB,SAASt9F,GAAqC,OAAlCA,EAAE8mC,EAAE9mC,GAAGC,IAAI7iB,KAAKy6H,kBAAyBz6H,KAAK2mH,UAAU/jG,EAAE,EAAEi6F,mBAAmB,SAASj6F,GAAG,OAAO5iB,KAAK0+E,QAAQ97E,EAAEggB,IAAIi9F,SAAS6E,UAAU1kH,KAAKy6H,iBAAiB,EAAE1T,WAAW,SAASnkG,GAAG,OAAO5iB,KAAK1B,QAAQ05G,IAAI+O,WAAWnkH,EAAEggB,GAAG,EAAEukG,iBAAiB,SAASvkG,GAAG,OAAO5iB,KAAK1B,QAAQ05G,IAAImP,iBAAiBzhH,EAAEkd,GAAG,EAAEkL,SAAS,SAASlL,EAAEjhB,GAAG,OAAO3B,KAAK1B,QAAQ05G,IAAIlqF,SAASlrB,EAAEggB,GAAGhgB,EAAEjB,GAAG,EAAEm5H,2BAA2B,SAASl4G,GAAG,OAAO8mC,EAAE9mC,GAAG6hG,SAASzkH,KAAKk3H,iBAAiB,EAAE6D,2BAA2B,SAASn4G,GAAG,OAAO8mC,EAAE9mC,GAAGC,IAAI7iB,KAAKk3H,iBAAiB,EAAEV,uBAAuB,SAAS5zG,GAA2C,OAAxCA,EAAE5iB,KAAK86H,2BAA2BpxE,EAAE9mC,IAAW5iB,KAAKkgH,mBAAmBt9F,EAAE,EAAE2zG,uBAAuB,SAAS3zG,GAAG,OAAO5iB,KAAK+6H,2BAA2B/6H,KAAK68G,mBAAmBj6G,EAAEggB,IAAI,EAAEo4G,2BAA2B,SAASp4G,GAAG,OAAOwvG,GAAGxvG,EAAE5iB,KAAKs6G,WAAW,EAAE2gB,uBAAuB,SAASr4G,GAAG,OAAO5iB,KAAK86H,2BAA2B96H,KAAKg7H,2BAA2Bp4G,GAAG,EAAEs4G,mBAAmB,SAASt4G,GAAG,OAAO5iB,KAAKkgH,mBAAmBlgH,KAAKi7H,uBAAuBr4G,GAAG,EAAEmyG,eAAe,SAASnyG,GAA2B,KAAxBA,EAAE5iB,KAAKs6G,WAAWqU,GAAG/rG,IAAS,MAAM,IAAIjP,MAAM,4BAA4B,GAAGiP,EAAE2+F,YAAY,MAAM,IAAI5tG,MAAM,yCAAyCgiD,GAAE/yC,EAAE,SAAS5iB,KAAKm7H,UAAUn7H,MAAMA,KAAKy5H,aAAa92H,EAAEigB,EAAE,EAAEoyG,YAAY,WAAW,IAAIpyG,EAAE5iB,KAAKs6G,WAAW34G,GAAG3B,KAAKo7H,cAAcp7H,KAAK1B,QAAQg2H,eAAe7rC,GAAEkjC,MAAMzmE,GAAEtiC,EAAE,qBAAqB6lE,GAAE30B,MAAM,iBAAiB,KAAK20B,GAAE0jC,OAAO,kBAAkB,KAAK1jC,GAAEoiC,MAAM,iBAAiB,KAAKpiC,GAAE2iC,OAAO,kBAAkB,KAAKprH,KAAKo7H,cAAc,qBAAqB,KAAKl1B,GAAGtjF,EAAE,aAAa,aAAajhB,GAAG,aAAaA,GAAG,UAAUA,IAAIihB,EAAEtc,MAAM2G,SAAS,YAAYjN,KAAKq7H,aAAar7H,KAAKs7H,iBAAiBt7H,KAAKs7H,iBAAiB,EAAED,WAAW,WAAW,IAAIz4G,EAAE5iB,KAAK65H,OAAO,CAAC,EAAE75H,KAAKu7H,eAAe,CAAC,EAAEv7H,KAAKy4G,SAASz4G,KAAK+5H,WAAW,UAAU/5H,KAAKs6G,YAAY5rC,GAAE1uE,KAAKy4G,SAAS,IAAIhoG,EAAE,EAAE,IAAIzQ,KAAK+5H,WAAW,YAAY/5H,KAAK+5H,WAAW,eAAe/5H,KAAK+5H,WAAW,cAAc/5H,KAAK+5H,WAAW,cAAc/5H,KAAK+5H,WAAW,eAAe/5H,KAAK+5H,WAAW,aAAa/5H,KAAK1B,QAAQi2H,sBAAsBrvE,GAAEtiC,EAAE44G,WAAW,qBAAqBt2E,GAAEtiC,EAAE64G,WAAW,qBAAqB,EAAExF,WAAW,SAASrzG,EAAEjhB,GAAG+sE,GAAE1uE,KAAKy4G,SAAS,IAAIhoG,EAAE,EAAE,IAAI,IAAIgQ,GAAGzgB,KAAK41H,QAAQ/3H,GAAGmC,KAAK41H,SAAQ,EAAGj0H,EAAE3B,KAAKo1H,WAAWzzH,GAAG3B,KAAK+wG,KAAK,gBAAgB/wG,KAAK01G,QAAQ/zG,GAAG3B,KAAKs3H,WAAWz5H,GAAE,GAAI25H,MAAM50G,EAAEjhB,GAAG02G,SAASx6G,GAAGmC,KAAK+wG,KAAK,aAAatwF,GAAGzgB,KAAK+wG,KAAK,OAAO,EAAEumB,WAAW,SAAS10G,EAAEjhB,GAAG,OAAOihB,GAAG5iB,KAAK+wG,KAAK,aAAapvG,GAAG3B,KAAK+wG,KAAK,aAAa/wG,IAAI,EAAEw3H,MAAM,SAAS50G,EAAEjhB,EAAE8e,EAAE5iB,QAAG,IAAS8D,IAAIA,EAAE3B,KAAK01G,OAAO,IAAIv4G,EAAE6C,KAAK01G,QAAQ/zG,EAAE,OAAO3B,KAAK01G,MAAM/zG,EAAE3B,KAAKk4H,YAAYt1G,EAAE5iB,KAAK06H,aAAa16H,KAAK07H,mBAAmB94G,GAAG/kB,EAAE4iB,GAAGA,EAAEk7G,OAAO37H,KAAK+wG,KAAK,OAAOtwF,KAAKtjB,GAAGsjB,GAAGA,EAAEk7G,QAAQ37H,KAAK+wG,KAAK,OAAOtwF,GAAGzgB,KAAK+wG,KAAK,OAAOtwF,IAAIzgB,IAAI,EAAEq4G,SAAS,SAASz1F,GAAG,OAAOA,GAAG5iB,KAAK+wG,KAAK,WAAW/wG,KAAK+wG,KAAK,UAAU,EAAE4kB,MAAM,WAAW,OAAOj6E,EAAE17C,KAAKu3H,aAAav3H,KAAK82H,UAAU92H,KAAK82H,SAASr1H,OAAOzB,IAAI,EAAEo3H,UAAU,SAASx0G,GAAG8rD,GAAE1uE,KAAKy4G,SAASz4G,KAAKk3H,iBAAiBzS,SAAS7hG,GAAG,EAAEg5G,aAAa,WAAW,OAAO57H,KAAK63G,aAAa73G,KAAK+4G,YAAY,EAAE4e,oBAAoB,WAAW33H,KAAK+3H,kBAAkB/3H,KAAK83H,gBAAgB93H,KAAK1B,QAAQ61H,UAAU,EAAE6F,eAAe,WAAW,IAAIh6H,KAAK41H,QAAQ,MAAM,IAAIjiH,MAAM,iCAAiC,EAAEuhH,YAAY,SAAStyG,GAAG5iB,KAAK67H,SAAS,CAAC,EAAE,IAAIl6H,EAAEihB,EAAE+sG,GAAEh6D,GAAEh0D,GAAG3B,KAAK67H,SAASl5H,EAAE3C,KAAKs6G,aAAat6G,MAAMs6G,WAAW,mGAAmGt6G,KAAK87H,gBAAgB97H,MAAMA,KAAK1B,QAAQq2H,aAAahzH,EAAEgR,OAAO,SAAS3S,KAAKi1H,UAAUj1H,MAAMyoF,GAAEkjC,OAAO3rH,KAAK1B,QAAQk2H,mBAAmB5xG,EAAE5iB,KAAKyyD,IAAIzyD,KAAKkZ,IAAIpc,KAAKkD,KAAK,UAAUA,KAAK+7H,WAAW,EAAE9G,UAAU,WAAWv5E,EAAE17C,KAAK25H,gBAAgB35H,KAAK25H,eAAep6H,GAAE,WAAWS,KAAKkxG,eAAe,CAACinB,iBAAgB,GAAI,GAAEn4H,KAAK,EAAEm7H,UAAU,WAAWn7H,KAAKs6G,WAAW0hB,UAAU,EAAEh8H,KAAKs6G,WAAW2hB,WAAW,CAAC,EAAEF,WAAW,WAAW,IAAIn5G,EAAE5iB,KAAKk3H,iBAAiBx5H,KAAK+G,IAAI/G,KAAKwgC,IAAItb,EAAErjB,GAAG7B,KAAKwgC,IAAItb,EAAEpjB,KAAKQ,KAAK1B,QAAQk2H,kBAAkBx0H,KAAKi2H,WAAWj2H,KAAKslH,YAAYtlH,KAAKo9G,UAAU,EAAE8e,kBAAkB,SAASt5G,EAAEjhB,GAAG,IAAI,IAAI8e,EAAE5iB,EAAE,GAAGV,EAAE,aAAawE,GAAG,cAAcA,EAAEiC,EAAEgf,EAAEjsB,QAAQisB,EAAEu5G,WAAWzgF,GAAE,EAAG93C,GAAG,CAAC,IAAI6c,EAAEzgB,KAAK67H,SAASl5H,EAAEiB,OAAO,UAAUjC,GAAG,aAAaA,IAAI3B,KAAKo8H,gBAAgB37G,GAAG,CAACi7B,GAAE,EAAG,KAAK,CAAC,GAAGj7B,GAAGA,EAAEw5F,QAAQt4G,GAAE,GAAI,CAAC,GAAGxE,IAAIw0H,GAAG/tH,EAAEgf,GAAG,MAAM,GAAG/kB,EAAEiE,KAAK2e,GAAGtjB,EAAE,KAAK,CAAC,GAAGyG,IAAI5D,KAAKs6G,WAAW,MAAM12G,EAAEA,EAAE2hB,UAAU,CAAC,OAAS1nB,EAAEI,QAAQy9C,GAAGv+C,IAAI6C,KAAKi6G,QAAQt4G,GAAE,GAAI9D,EAAE,CAACmC,KAAK,EAAEq8H,iBAAiB,SAASz5G,GAAG,KAAKA,IAAI5iB,KAAKs6G,YAAY,CAAC,GAAG13F,EAAEqvG,uBAAuB,OAAM,EAAGrvG,EAAEA,EAAE2C,UAAU,CAAC,EAAEu2G,gBAAgB,SAASl5G,GAAG,IAAIjhB,EAAE8e,EAAEmC,EAAEjsB,QAAQisB,EAAEu5G,YAAYn8H,KAAK41H,SAASn1G,EAAE67G,yBAAyB,UAAU15G,EAAExH,MAAMpb,KAAKq8H,iBAAiB57G,KAAK,eAAe9e,EAAEihB,EAAExH,OAAOw0G,GAAGnvG,GAAGzgB,KAAKu8H,cAAc35G,EAAEjhB,GAAG,EAAE66H,aAAa,CAAC,QAAQ,WAAW,YAAY,WAAW,eAAeD,cAAc,SAAS35G,EAAEjhB,EAAE8e,GAAG,UAAUmC,EAAExH,QAAQ9J,EAAEonC,EAAE,CAAC,EAAE91B,IAAIxH,KAAK,WAAWpb,KAAKu8H,cAAcjrH,EAAEA,EAAE8J,KAAKqF,IAAI,IAAI5iB,EAAEmC,KAAKk8H,kBAAkBt5G,EAAEjhB,GAAG,GAAG8e,EAAE,CAAC,IAAI,IAAItjB,EAAE,GAAGyG,EAAE,EAAEA,EAAE6c,EAAExiB,OAAO2F,IAAI6c,EAAE7c,GAAGq2G,QAAQt4G,GAAE,IAAKxE,EAAE2E,KAAK2e,EAAE7c,IAAI/F,EAAEV,EAAEqG,OAAO3F,EAAE,CAAC,GAAGA,EAAEI,OAAO,CAAC,gBAAgB0D,GAAGkuE,GAAEjtD,GAAG,IAAI84B,EAAEpqC,EAAEzT,EAAE,GAAG8E,EAAE,CAACq3G,cAAcp3F,GAAG,IAAI,aAAaA,EAAExH,MAAM,YAAYwH,EAAExH,MAAM,UAAUwH,EAAExH,OAAOsgC,EAAEpqC,EAAE2jG,aAAa3jG,EAAEmrH,SAASnrH,EAAEmrH,SAAS,IAAI95H,EAAE+5H,eAAehhF,EAAE17C,KAAKu2H,uBAAuBjlH,EAAE2jG,aAAaj1G,KAAKg7H,2BAA2Bp4G,GAAGjgB,EAAEg6H,WAAW38H,KAAK86H,2BAA2Bn4H,EAAE+5H,gBAAgB/5H,EAAEyzG,OAAO16D,EAAEpqC,EAAE2jG,YAAYj1G,KAAKkgH,mBAAmBv9G,EAAEg6H,aAAa/4H,EAAE,EAAEA,EAAE/F,EAAEI,OAAO2F,IAAI,GAAG/F,EAAE+F,GAAGmtG,KAAKpvG,EAAEgB,GAAE,GAAIA,EAAEq3G,cAAc6X,WAAU,IAAKh0H,EAAE+F,GAAGtF,QAAQs+H,sBAAsB,IAAI93C,EAAE9kF,KAAKw8H,aAAa76H,GAAG,MAAM,CAAC,EAAEy6H,gBAAgB,SAASx5G,GAAG,OAAOA,EAAEA,EAAErO,UAAUqO,EAAErO,SAASumB,UAAUlY,EAAE5iB,MAAMuU,UAAUqO,EAAErO,SAASmkD,SAAS14D,KAAK68H,SAAS78H,KAAK68H,QAAQnkE,OAAO,EAAEkhE,eAAe,WAAW,IAAI,IAAIh3G,EAAE,EAAEjhB,EAAE3B,KAAK40H,UAAU32H,OAAO2kB,EAAEjhB,EAAEihB,IAAI5iB,KAAK40H,UAAUhyG,GAAGk6G,SAAS,EAAEhrB,UAAU,SAASlvF,EAAEjhB,GAAG,OAAO3B,KAAK41H,QAAQhzG,EAAE9lB,KAAK6E,GAAG3B,KAAK,CAACrJ,OAAOqJ,OAAOA,KAAKkZ,GAAG,OAAO0J,EAAEjhB,GAAG3B,IAAI,EAAEk3H,eAAe,WAAW,OAAO1oC,GAAGxuF,KAAKy4G,WAAW,IAAIhoG,EAAE,EAAE,EAAE,EAAEwpH,OAAO,WAAW,IAAIr3G,EAAE5iB,KAAKk3H,iBAAiB,OAAOt0G,IAAIA,EAAEyiG,OAAO,CAAC,EAAE,GAAG,EAAEmV,iBAAiB,SAAS53G,EAAEjhB,GAAG,OAAOihB,QAAG,IAASjhB,EAAE3B,KAAK07H,mBAAmB94G,EAAEjhB,GAAG3B,KAAKy6H,kBAAkBhW,SAASzkH,KAAKk3H,iBAAiB,EAAEwE,mBAAmB,SAAS94G,EAAEjhB,GAAG,IAAI8e,EAAEzgB,KAAK2lH,UAAUf,UAAU,GAAG,OAAO5kH,KAAK0+E,QAAQ97D,EAAEjhB,GAAG+iH,UAAUjkG,GAAG+jG,KAAKxkH,KAAKk3H,kBAAkBrX,QAAQ,EAAEa,uBAAuB,SAAS99F,EAAEjhB,EAAE8e,GAAkC,OAA/BA,EAAEzgB,KAAK07H,mBAAmBj7G,EAAE9e,GAAU3B,KAAK0+E,QAAQ97D,EAAEjhB,GAAG+iH,UAAUjkG,EAAE,EAAEs8G,8BAA8B,SAASn6G,EAAEjhB,EAAE8e,GAAkC,OAA/BA,EAAEzgB,KAAK07H,mBAAmBj7G,EAAE9e,GAAUqlB,EAAE,CAAChnB,KAAK0+E,QAAQ97D,EAAEkjG,eAAenkH,GAAG+iH,UAAUjkG,GAAGzgB,KAAK0+E,QAAQ97D,EAAEojG,eAAerkH,GAAG+iH,UAAUjkG,GAAGzgB,KAAK0+E,QAAQ97D,EAAEsjG,eAAevkH,GAAG+iH,UAAUjkG,GAAGzgB,KAAK0+E,QAAQ97D,EAAEmjG,eAAepkH,GAAG+iH,UAAUjkG,IAAI,EAAEy5G,qBAAqB,WAAW,OAAOl6H,KAAK86H,2BAA2B96H,KAAK2lH,UAAUf,UAAU,GAAG,EAAEoY,iBAAiB,SAASp6G,GAAG,OAAO5iB,KAAK68G,mBAAmBj6F,GAAG6hG,SAASzkH,KAAKk6H,uBAAuB,EAAExE,aAAa,SAAS9yG,EAAEjhB,EAAE8e,GAAG,IAAIA,EAAE,OAAOmC,EAAE,IAAI/kB,EAAEmC,KAAK0+E,QAAQ97D,EAAEjhB,GAAGxE,EAAE6C,KAAK2lH,UAAUhB,SAAS,GAAkE,OAA/DxnH,EAAE,IAAI4qD,EAAElqD,EAAE4mH,SAAStnH,GAAGU,EAAEglB,IAAI1lB,KAAIA,EAAE6C,KAAKi9H,iBAAiB9/H,EAAEsjB,EAAE9e,IAAYsgC,QAAQojF,OAAO,CAAC,EAAE,IAAIziG,EAAE5iB,KAAK2mH,UAAU9oH,EAAEglB,IAAI1lB,GAAGwE,EAAE,EAAEu7H,aAAa,SAASt6G,EAAEjhB,GAAG,IAAIA,EAAE,OAAOihB,EAAE,IAA4BnC,EAAE,IAAIsnC,GAA9BtnC,EAAEzgB,KAAKi4H,kBAA2Bx4H,IAAIojB,IAAID,GAAGnC,EAAEhc,IAAIoe,IAAID,IAAI,OAAOA,EAAEC,IAAI7iB,KAAKi9H,iBAAiBx8G,EAAE9e,GAAG,EAAEs7H,iBAAiB,SAASr6G,EAAEjhB,EAAE8e,GAA0H,OAAhDA,GAAvE9e,EAAEqlB,EAAEhnB,KAAK0+E,QAAQ/8E,EAAEokH,eAAetlG,GAAGzgB,KAAK0+E,QAAQ/8E,EAAEmkH,eAAerlG,KAAQhhB,IAAIglH,SAAS7hG,EAAEnjB,KAAKkC,EAAEA,EAAE8C,IAAIggH,SAAS7hG,EAAEne,KAAY,IAAIgM,EAAEzQ,KAAKm9H,SAAS18G,EAAElhB,GAAGoC,EAAEpC,GAAGS,KAAKm9H,SAAS18G,EAAEjhB,GAAGmC,EAAEnC,GAAG,EAAE29H,SAAS,SAASv6G,EAAEjhB,GAAG,OAAO,EAAEihB,EAAEjhB,EAAEjE,KAAKukC,MAAMrf,EAAEjhB,GAAG,EAAEjE,KAAK+G,IAAI,EAAE/G,KAAKC,KAAKilB,IAAIllB,KAAK+G,IAAI,EAAE/G,KAAKiqD,MAAMhmD,GAAG,EAAEyzH,WAAW,SAASxyG,GAAG,IAAIjhB,EAAE3B,KAAK+4G,aAAat4F,EAAEzgB,KAAK63G,aAAah6G,EAAE4qF,GAAEkjC,MAAM3rH,KAAK1B,QAAQm2H,SAAS,EAAE,OAAO52H,IAAI+kB,EAAEllB,KAAKukC,MAAMrf,EAAE/kB,GAAGA,GAAGH,KAAK+G,IAAI9C,EAAEjE,KAAK+B,IAAIghB,EAAEmC,GAAG,EAAEm0G,qBAAqB,WAAW/2H,KAAK+wG,KAAK,OAAO,EAAEimB,oBAAoB,WAAWxoD,GAAExuE,KAAKy4G,SAAS,oBAAoBz4G,KAAK+wG,KAAK,UAAU,EAAEglB,gBAAgB,SAASnzG,EAAEjhB,GAAuC,OAApCihB,EAAE5iB,KAAKg9H,iBAAiBp6G,GAAGuiG,YAAiB,KAAMxjH,GAAGA,EAAEmxG,WAAW9yG,KAAK2lH,UAAUz1D,SAASttC,KAAM5iB,KAAK62H,MAAMj0G,EAAEjhB,GAAG,GAAG,EAAE2zH,iBAAiB,WAAW,IAAI1yG,EAAE5iB,KAAKu1H,OAAOhkH,GAAE,MAAM,uCAAuCvR,KAAK65H,OAAOuD,QAAQ9sE,YAAY1tC,GAAG5iB,KAAKkZ,GAAG,YAAW,SAAS0J,GAAG,IAAIjhB,EAAE6sH,GAAG/tG,EAAEzgB,KAAKu1H,OAAOjvH,MAAM3E,GAAG4tH,GAAGvvH,KAAKu1H,OAAOv1H,KAAK0+E,QAAQ97D,EAAEgvB,OAAOhvB,EAAE3J,MAAMjZ,KAAKs2H,aAAa1zG,EAAE3J,KAAK,IAAIwH,IAAIzgB,KAAKu1H,OAAOjvH,MAAM3E,IAAI3B,KAAKq9H,gBAAgBr9H,KAAKs9H,sBAAsB,GAAEt9H,MAAMA,KAAKkZ,GAAG,eAAelZ,KAAKu9H,aAAav9H,MAAMA,KAAKqjH,IAAI,SAASrjH,KAAKw9H,kBAAkBx9H,KAAK,EAAEw9H,kBAAkB,WAAW1O,GAAE9uH,KAAKu1H,QAAQv1H,KAAKyyD,IAAI,eAAezyD,KAAKu9H,aAAav9H,aAAaA,KAAKu1H,MAAM,EAAEgI,aAAa,WAAW,IAAI36G,EAAE5iB,KAAKslH,YAAY3jH,EAAE3B,KAAKo9G,UAAUmS,GAAGvvH,KAAKu1H,OAAOv1H,KAAK0+E,QAAQ97D,EAAEjhB,GAAG3B,KAAKs2H,aAAa30H,EAAE,GAAG,EAAE6zH,oBAAoB,SAAS5yG,GAAG5iB,KAAKq9H,gBAAgB,GAAGz6G,EAAE66G,aAAatwH,QAAQ,cAAcnN,KAAKs9H,sBAAsB,EAAEI,kBAAkB,WAAW,OAAO19H,KAAKs6G,WAAWqjB,uBAAuB,yBAAyB1/H,MAAM,EAAE63H,iBAAiB,SAASlzG,EAAEjhB,EAAE8e,GAAG,GAAGzgB,KAAKq9H,eAAe,OAAM,EAAG,GAAG58G,EAAEA,GAAG,CAAC,GAAGzgB,KAAKq1H,gBAAe,IAAK50G,EAAEqyF,SAAS9yG,KAAK09H,qBAAqBhgI,KAAKwgC,IAAIv8B,EAAE3B,KAAK01G,OAAO11G,KAAK1B,QAAQ+1H,uBAAuB,OAAM,EAAG,IAAIx2H,EAAEmC,KAAKs2H,aAAa30H,GAA+C,OAA5C9D,EAAEmC,KAAKg9H,iBAAiBp6G,GAAGgiG,UAAU,EAAE,EAAE/mH,MAAW,IAAK4iB,EAAEqyF,UAAU9yG,KAAK2lH,UAAUz1D,SAASryD,KAAM0B,GAAE,WAAWS,KAAKs3H,YAAW,GAAG,GAAIsG,aAAah7G,EAAEjhB,GAAE,EAAG,GAAE3B,MAAM,GAAG,EAAE49H,aAAa,SAASh7G,EAAEjhB,EAAE8e,EAAE5iB,GAAGmC,KAAKy4G,WAAWh4F,IAAIzgB,KAAKq9H,gBAAe,EAAGr9H,KAAK69H,iBAAiBj7G,EAAE5iB,KAAK89H,eAAen8H,EAAEujD,GAAEllD,KAAKy4G,SAAS,sBAAsBz4G,KAAK+wG,KAAK,WAAW,CAACn/D,OAAOhvB,EAAE3J,KAAKtX,EAAEo8H,SAASlgI,IAAImC,KAAKg+H,qBAAqBh+H,KAAKg+H,mBAAmBh+H,KAAK01G,QAAQ11G,KAAK89H,gBAAgB99H,KAAKw3H,MAAMx3H,KAAK69H,iBAAiB79H,KAAK89H,oBAAe,GAAO,GAAIx3G,WAAWhV,EAAEtR,KAAKs9H,qBAAqBt9H,MAAM,KAAK,EAAEs9H,qBAAqB,WAAWt9H,KAAKq9H,iBAAiBr9H,KAAKy4G,UAAUjqC,GAAExuE,KAAKy4G,SAAS,qBAAqBz4G,KAAKq9H,gBAAe,EAAGr9H,KAAKw3H,MAAMx3H,KAAK69H,iBAAiB79H,KAAK89H,oBAAe,GAAO,GAAI99H,KAAKg+H,oBAAoBh+H,KAAK+wG,KAAK,eAAe/wG,KAAKg+H,mBAAmBh+H,KAAK+wG,KAAK,QAAQ/wG,KAAKq4G,UAAS,GAAI,IAAI,SAAS4lB,GAAGr7G,GAAG,OAAO,IAAIilD,GAAEjlD,EAAE,CAAC,IAAIs7G,GAAGr2D,GAAE86C,EAAGzT,OAAO,CAAC5wG,QAAQ,CAAC2O,SAAS,YAAYyiB,WAAW,SAAS9M,GAAGkW,EAAE94B,KAAK4iB,EAAE,EAAEkuG,YAAY,WAAW,OAAO9wH,KAAK1B,QAAQ2O,QAAQ,EAAE4jH,YAAY,SAASjuG,GAAG,IAAIjhB,EAAE3B,KAAKsvG,KAAK,OAAO3tG,GAAGA,EAAEw8H,cAAcn+H,MAAMA,KAAK1B,QAAQ2O,SAAS2V,EAAEjhB,GAAGA,EAAEiwG,WAAW5xG,MAAMA,IAAI,EAAEgwG,aAAa,WAAW,OAAOhwG,KAAKs6G,UAAU,EAAExC,MAAM,SAASl1F,GAAG5iB,KAAKyG,SAASzG,KAAKsvG,KAAK1sF,EAAE,IAAIjhB,EAAE3B,KAAKs6G,WAAWt6G,KAAKmvG,MAAMvsF,GAAGnC,EAAEzgB,KAAK8wH,cAAqC,OAAvBluG,EAAEA,EAAEw7G,gBAAgB39G,GAAUykC,GAAEvjD,EAAE,oBAAoB,IAAI8e,EAAEtT,QAAQ,UAAUyV,EAAE4tC,aAAa7uD,EAAEihB,EAAE+nG,YAAY/nG,EAAE0tC,YAAY3uD,GAAG3B,KAAKsvG,KAAKp2F,GAAG,SAASlZ,KAAKyG,OAAOzG,MAAMA,IAAI,EAAEyG,OAAO,WAAW,OAAOzG,KAAKsvG,OAAOwf,GAAE9uH,KAAKs6G,YAAYt6G,KAAKwxD,UAAUxxD,KAAKwxD,SAASxxD,KAAKsvG,MAAMtvG,KAAKsvG,KAAK78C,IAAI,SAASzyD,KAAKyG,OAAOzG,MAAMA,KAAKsvG,KAAK,MAAMtvG,IAAI,EAAEq+H,cAAc,SAASz7G,GAAG5iB,KAAKsvG,MAAM1sF,GAAG,EAAEA,EAAE07G,SAAS,EAAE17G,EAAE27G,SAASv+H,KAAKsvG,KAAKU,eAAel5E,OAAO,IAAI0nG,IAAI5uD,GAAEkgC,QAAQ,CAAC8B,WAAW,SAAShvF,GAAG,OAAOA,EAAEk1F,MAAM93G,MAAMA,IAAI,EAAEm+H,cAAc,SAASv7G,GAAG,OAAOA,EAAEnc,SAASzG,IAAI,EAAEs7H,gBAAgB,WAAW,IAAI76G,EAAEzgB,KAAKo+H,gBAAgB,CAAC,EAAEvgI,EAAE,WAAWV,EAAE6C,KAAKy+H,kBAAkBltH,GAAE,MAAM1T,EAAE,oBAAoBmC,KAAKs6G,YAAY,SAAS13F,EAAEA,EAAEjhB,GAAG8e,EAAEmC,EAAEjhB,GAAG4P,GAAE,MAAM1T,EAAE+kB,EAAE,IAAI/kB,EAAE8D,EAAExE,EAAE,CAACylB,EAAE,MAAM,QAAQA,EAAE,MAAM,SAASA,EAAE,SAAS,QAAQA,EAAE,SAAS,QAAQ,EAAE82G,iBAAiB,WAAW,IAAI,IAAI92G,KAAK5iB,KAAKo+H,gBAAgBtP,GAAE9uH,KAAKo+H,gBAAgBx7G,IAAIksG,GAAE9uH,KAAKy+H,0BAA0Bz+H,KAAKo+H,uBAAuBp+H,KAAKy+H,iBAAiB,IAAI52D,GAAEqnC,OAAO,CAAC5wG,QAAQ,CAACogI,WAAU,EAAGzxH,SAAS,WAAW0xH,YAAW,EAAGC,gBAAe,EAAGC,YAAW,EAAGn7E,aAAa,SAAS9gC,EAAEjhB,EAAE8e,EAAE5iB,GAAG,OAAO4iB,EAAE5iB,GAAG,EAAEA,EAAE4iB,EAAE,EAAE,CAAC,GAAGiP,WAAW,SAAS9M,EAAEjhB,EAAE8e,GAAG,IAAI,IAAI5iB,KAAKi7B,EAAE94B,KAAKygB,GAAGzgB,KAAK8+H,oBAAoB,GAAG9+H,KAAKmhH,QAAQ,GAAGnhH,KAAK++H,YAAY,EAAE/+H,KAAKg/H,gBAAe,EAAGp8G,EAAE5iB,KAAKq1G,UAAUzyF,EAAE/kB,GAAGA,GAAG,IAAIA,KAAK8D,EAAE3B,KAAKq1G,UAAU1zG,EAAE9D,GAAGA,GAAE,EAAG,EAAEsxG,MAAM,SAASvsF,GAAG5iB,KAAKg1H,cAAch1H,KAAKi/H,WAAWj/H,KAAKsvG,KAAK1sF,GAAG1J,GAAG,UAAUlZ,KAAKk/H,qBAAqBl/H,MAAM,IAAI,IAAI2B,EAAE,EAAEA,EAAE3B,KAAKmhH,QAAQljH,OAAO0D,IAAI3B,KAAKmhH,QAAQx/G,GAAGuzG,MAAMh8F,GAAG,aAAalZ,KAAKm/H,eAAen/H,MAAM,OAAOA,KAAKs6G,UAAU,EAAExC,MAAM,SAASl1F,GAAG,OAAOilD,GAAEjsE,UAAUk8G,MAAMh7G,KAAKkD,KAAK4iB,GAAG5iB,KAAKo/H,uBAAuB,EAAE5tE,SAAS,WAAWxxD,KAAKsvG,KAAK78C,IAAI,UAAUzyD,KAAKk/H,qBAAqBl/H,MAAM,IAAI,IAAI4iB,EAAE,EAAEA,EAAE5iB,KAAKmhH,QAAQljH,OAAO2kB,IAAI5iB,KAAKmhH,QAAQv+F,GAAGsyF,MAAMziD,IAAI,aAAazyD,KAAKm/H,eAAen/H,KAAK,EAAEq/H,aAAa,SAASz8G,EAAEjhB,GAAG,OAAO3B,KAAKq1G,UAAUzyF,EAAEjhB,GAAG3B,KAAKsvG,KAAKtvG,KAAKi/H,UAAUj/H,IAAI,EAAEs/H,WAAW,SAAS18G,EAAEjhB,GAAG,OAAO3B,KAAKq1G,UAAUzyF,EAAEjhB,GAAE,GAAI3B,KAAKsvG,KAAKtvG,KAAKi/H,UAAUj/H,IAAI,EAAE81G,YAAY,SAASlzF,GAAuE,OAApEA,EAAE6vC,IAAI,aAAazyD,KAAKm/H,eAAen/H,OAAM4iB,EAAE5iB,KAAKu/H,UAAU58H,EAAEigB,MAAc5iB,KAAKmhH,QAAQl6F,OAAOjnB,KAAKmhH,QAAQh0G,QAAQyV,GAAG,GAAG5iB,KAAKsvG,KAAKtvG,KAAKi/H,UAAUj/H,IAAI,EAAEs6F,OAAO,WAAWp1C,GAAEllD,KAAKs6G,WAAW,mCAAmCt6G,KAAKw/H,SAASl5H,MAAM3G,OAAO,KAAK,IAAIijB,EAAE5iB,KAAKsvG,KAAKqW,UAAUnmH,GAAGQ,KAAKs6G,WAAWmlB,UAAU,IAAI,OAAO78G,EAAE5iB,KAAKw/H,SAASjF,cAAcr1E,GAAEllD,KAAKw/H,SAAS,oCAAoCx/H,KAAKw/H,SAASl5H,MAAM3G,OAAOijB,EAAE,MAAM4rD,GAAExuE,KAAKw/H,SAAS,oCAAoCx/H,KAAKk/H,uBAAuBl/H,IAAI,EAAE0/H,SAAS,WAAW,OAAOlxD,GAAExuE,KAAKs6G,WAAW,mCAAmCt6G,IAAI,EAAEg1H,YAAY,WAAW,IAAIpyG,EAAE,yBAAyBjhB,EAAE3B,KAAKs6G,WAAW/oG,GAAE,MAAMqR,GAAGnC,EAAEzgB,KAAK1B,QAAQogI,UAAU7gI,GAAG8D,EAAEusB,aAAa,iBAAgB,GAAI8jG,GAAGrwH,GAAGowH,GAAGpwH,GAAG3B,KAAKw/H,SAASjuH,GAAE,UAAUqR,EAAE,UAAUzlB,GAAGsjB,IAAIzgB,KAAKsvG,KAAKp2F,GAAG,QAAQlZ,KAAK0/H,SAAS1/H,MAAM21D,GAAEh0D,EAAE,CAACowD,WAAW,WAAW4D,GAAE93D,EAAE,QAAQgyE,IAAG7vE,KAAKs6F,SAASh0E,YAAW,WAAWqpG,GAAE9xH,EAAE,QAAQgyE,GAAE,GAAE,EAAE7d,WAAWhyD,KAAK0/H,UAAU1/H,OAAOA,KAAK2/H,YAAYpuH,GAAE,IAAIqR,EAAE,UAAUjhB,IAAIxE,EAAEkyG,KAAK,IAAIlyG,EAAE7E,MAAM,SAAS6E,EAAE+wB,aAAa,OAAO,UAAUynC,GAAEx4D,EAAE,QAAQ0yE,IAAGla,GAAEx4D,EAAE,QAAQ6C,KAAKs6F,OAAOt6F,MAAMygB,GAAGzgB,KAAKs6F,SAASt6F,KAAK4/H,gBAAgBruH,GAAE,MAAMqR,EAAE,QAAQ/kB,GAAGmC,KAAK6/H,WAAWtuH,GAAE,MAAMqR,EAAE,aAAa/kB,GAAGmC,KAAK8/H,cAAcvuH,GAAE,MAAMqR,EAAE,YAAY/kB,GAAG8D,EAAE2uD,YAAYzyD,EAAE,EAAE0hI,UAAU,SAAS38G,GAAG,IAAI,IAAIjhB,EAAE,EAAEA,EAAE3B,KAAKmhH,QAAQljH,OAAO0D,IAAI,GAAG3B,KAAKmhH,QAAQx/G,IAAIgB,EAAE3C,KAAKmhH,QAAQx/G,GAAGuzG,SAAStyF,EAAE,OAAO5iB,KAAKmhH,QAAQx/G,EAAE,EAAE0zG,UAAU,SAASzyF,EAAEjhB,EAAE8e,GAAGzgB,KAAKsvG,MAAM1sF,EAAE1J,GAAG,aAAalZ,KAAKm/H,eAAen/H,MAAMA,KAAKmhH,QAAQr/G,KAAK,CAACozG,MAAMtyF,EAAE8qB,KAAK/rC,EAAEo+H,QAAQt/G,IAAIzgB,KAAK1B,QAAQugI,YAAY7+H,KAAKmhH,QAAQ9vG,KAAKC,GAAE,SAASsR,EAAEjhB,GAAG,OAAO3B,KAAK1B,QAAQolD,aAAa9gC,EAAEsyF,MAAMvzG,EAAEuzG,MAAMtyF,EAAE8qB,KAAK/rC,EAAE+rC,KAAK,GAAE1tC,OAAOA,KAAK1B,QAAQqgI,YAAY/7G,EAAEo9G,YAAYhgI,KAAK++H,cAAcn8G,EAAEo9G,UAAUhgI,KAAK++H,cAAc/+H,KAAKo/H,uBAAuB,EAAEH,QAAQ,WAAW,IAAIj/H,KAAKs6G,WAAW,OAAOt6G,KAAK+uH,GAAG/uH,KAAK4/H,iBAAiB7Q,GAAG/uH,KAAK8/H,eAAe9/H,KAAK8+H,oBAAoB,GAAG,IAAI,IAAIl8G,EAAEjhB,EAAE8e,EAAE5iB,EAAE,EAAEV,EAAE,EAAEA,EAAE6C,KAAKmhH,QAAQljH,OAAOd,IAAIsjB,EAAEzgB,KAAKmhH,QAAQhkH,GAAG6C,KAAKigI,SAASx/G,GAAG9e,EAAEA,GAAG8e,EAAEs/G,QAAQn9G,EAAEA,IAAInC,EAAEs/G,QAAQliI,GAAG4iB,EAAEs/G,QAAQ,EAAE,EAAE,OAAO//H,KAAK1B,QAAQsgI,iBAAiB5+H,KAAK4/H,gBAAgBt5H,MAAM45H,SAASt9G,EAAEA,GAAG,EAAE/kB,GAAG,GAAG,QAAQmC,KAAK6/H,WAAWv5H,MAAM45H,QAAQv+H,GAAGihB,EAAE,GAAG,OAAO5iB,IAAI,EAAEm/H,eAAe,SAASv8G,GAAG5iB,KAAKg/H,gBAAgBh/H,KAAKi/H,UAAU,IAAIt9H,EAAE3B,KAAKu/H,UAAU58H,EAAEigB,EAAEjsB,UAASisB,EAAEjhB,EAAEo+H,QAAQ,QAAQn9G,EAAExH,KAAK,aAAa,gBAAgB,QAAQwH,EAAExH,KAAK,kBAAkB,OAAQpb,KAAKsvG,KAAKyB,KAAKnuF,EAAEjhB,EAAE,EAAEw+H,oBAAoB,SAASv9G,EAAEjhB,GAAiJ,OAA9IihB,EAAE,qEAAqEA,EAAE,KAAKjhB,EAAE,qBAAqB,IAAI,MAAKA,EAAEiW,SAASC,cAAc,QAAgBw4C,UAAUztC,EAAEjhB,EAAEgpH,UAAU,EAAEsV,SAAS,SAASr9G,GAAG,IAAIjhB,EAAE8e,EAAE7I,SAASC,cAAc,SAASha,EAAEmC,KAAKsvG,KAAK6F,SAASvyF,EAAEsyF,OAAmU/3G,IAAzTylB,EAAEm9G,UAAUp+H,EAAEiW,SAASC,cAAc,UAAUuD,KAAK,WAAWzZ,EAAE+2G,UAAU,kCAAkC/2G,EAAEy+H,eAAeviI,GAAG8D,EAAE3B,KAAKmgI,oBAAoB,uBAAuBx9H,EAAE3C,MAAMnC,GAAGmC,KAAK8+H,oBAAoBh9H,KAAKH,GAAGA,EAAE0+H,QAAQ19H,EAAEigB,EAAEsyF,OAAOv/C,GAAEh0D,EAAE,QAAQ3B,KAAKsgI,cAActgI,MAAtRnC,EAA4R+Z,SAASC,cAAc,SAAcw4C,UAAU,IAAIztC,EAAE8qB,KAAK91B,SAASC,cAAc,SAAS,OAAO4I,EAAE6vC,YAAYnzD,GAAGA,EAAEmzD,YAAY3uD,GAAGxE,EAAEmzD,YAAYzyD,IAAI+kB,EAAEm9G,QAAQ//H,KAAK8/H,cAAc9/H,KAAK4/H,iBAAiBtvE,YAAY7vC,GAAGzgB,KAAKk/H,uBAAuBz+G,CAAC,EAAE6/G,cAAc,WAAW,IAAI19G,EAAEjhB,EAAE8e,EAAEzgB,KAAK8+H,oBAAoBjhI,EAAE,GAAGV,EAAE,GAAG6C,KAAKg/H,gBAAe,EAAG,IAAI,IAAIp7H,EAAE6c,EAAExiB,OAAO,EAAE,GAAG2F,EAAEA,IAAIgf,EAAEnC,EAAE7c,GAAGjC,EAAE3B,KAAKu/H,UAAU38G,EAAEy9G,SAASnrB,MAAMtyF,EAAE29G,QAAQ1iI,EAAEiE,KAAKH,GAAGihB,EAAE29G,SAASpjI,EAAE2E,KAAKH,GAAG,IAAIiC,EAAE,EAAEA,EAAEzG,EAAEc,OAAO2F,IAAI5D,KAAKsvG,KAAK6F,SAASh4G,EAAEyG,KAAK5D,KAAKsvG,KAAKwG,YAAY34G,EAAEyG,IAAI,IAAIA,EAAE,EAAEA,EAAE/F,EAAEI,OAAO2F,IAAI5D,KAAKsvG,KAAK6F,SAASt3G,EAAE+F,KAAK5D,KAAKsvG,KAAKwF,SAASj3G,EAAE+F,IAAI5D,KAAKg/H,gBAAe,EAAGh/H,KAAKq+H,eAAe,EAAEa,qBAAqB,WAAW,IAAI,IAAIt8G,EAAEjhB,EAAE8e,EAAEzgB,KAAK8+H,oBAAoBjhI,EAAEmC,KAAKsvG,KAAK8N,UAAUjgH,EAAEsjB,EAAExiB,OAAO,EAAE,GAAGd,EAAEA,IAAIylB,EAAEnC,EAAEtjB,GAAGwE,EAAE3B,KAAKu/H,UAAU38G,EAAEy9G,SAASnrB,MAAMtyF,EAAE49G,cAAS,IAAS7+H,EAAErD,QAAQ01H,SAASn2H,EAAE8D,EAAErD,QAAQ01H,cAAS,IAASryH,EAAErD,QAAQ21H,SAASp2H,EAAE8D,EAAErD,QAAQ21H,OAAO,EAAEmL,sBAAsB,WAAW,OAAOp/H,KAAKsvG,OAAOtvG,KAAK1B,QAAQogI,WAAW1+H,KAAKs6F,SAASt6F,IAAI,KAAKygI,GAAG54D,GAAEqnC,OAAO,CAAC5wG,QAAQ,CAAC2O,SAAS,UAAUyzH,WAAW,oCAAoCC,YAAY,UAAUC,YAAY,2CAA2CC,aAAa,YAAY1xB,MAAM,SAASvsF,GAAG,IAAIjhB,EAAE,uBAAuB8e,EAAElP,GAAE,MAAM5P,EAAE,gBAAgB9D,EAAEmC,KAAK1B,QAAQ,OAAO0B,KAAK8gI,cAAc9gI,KAAK+gI,cAAcljI,EAAE6iI,WAAW7iI,EAAE8iI,YAAYh/H,EAAE,MAAM8e,EAAEzgB,KAAKghI,SAAShhI,KAAKihI,eAAejhI,KAAK+gI,cAAcljI,EAAE+iI,YAAY/iI,EAAEgjI,aAAal/H,EAAE,OAAO8e,EAAEzgB,KAAKkhI,UAAUlhI,KAAKmhI,kBAAkBv+G,EAAE1J,GAAG,2BAA2BlZ,KAAKmhI,gBAAgBnhI,MAAMygB,CAAC,EAAE+wC,SAAS,SAAS5uC,GAAGA,EAAE6vC,IAAI,2BAA2BzyD,KAAKmhI,gBAAgBnhI,KAAK,EAAE88H,QAAQ,WAAW,OAAO98H,KAAKohI,WAAU,EAAGphI,KAAKmhI,kBAAkBnhI,IAAI,EAAE66B,OAAO,WAAW,OAAO76B,KAAKohI,WAAU,EAAGphI,KAAKmhI,kBAAkBnhI,IAAI,EAAEghI,QAAQ,SAASp+G,IAAI5iB,KAAKohI,WAAWphI,KAAKsvG,KAAKoG,MAAM11G,KAAKsvG,KAAKuI,cAAc73G,KAAKsvG,KAAK6mB,OAAOn2H,KAAKsvG,KAAKhxG,QAAQo2H,WAAW9xG,EAAEu2C,SAAS,EAAE,GAAG,EAAE+nE,SAAS,SAASt+G,IAAI5iB,KAAKohI,WAAWphI,KAAKsvG,KAAKoG,MAAM11G,KAAKsvG,KAAKyJ,cAAc/4G,KAAKsvG,KAAK8mB,QAAQp2H,KAAKsvG,KAAKhxG,QAAQo2H,WAAW9xG,EAAEu2C,SAAS,EAAE,GAAG,EAAE4nE,cAAc,SAASn+G,EAAEjhB,EAAE8e,EAAE5iB,EAAEV,GAAgB,OAAbsjB,EAAElP,GAAE,IAAIkP,EAAE5iB,IAAYwyD,UAAUztC,EAAEnC,EAAE4uF,KAAK,IAAI5uF,EAAEnoB,MAAMqJ,EAAE8e,EAAEyN,aAAa,OAAO,UAAUzN,EAAEyN,aAAa,aAAavsB,GAAGqwH,GAAGvxG,GAAGk1C,GAAEl1C,EAAE,QAAQ0xG,IAAIx8D,GAAEl1C,EAAE,QAAQtjB,EAAE6C,MAAM21D,GAAEl1C,EAAE,QAAQzgB,KAAKq+H,cAAcr+H,MAAMygB,CAAC,EAAE0gH,gBAAgB,WAAW,IAAIv+G,EAAE5iB,KAAKsvG,KAAK3tG,EAAE,mBAAmB6sE,GAAExuE,KAAK8gI,cAAcn/H,GAAG6sE,GAAExuE,KAAKihI,eAAet/H,GAAG3B,KAAK8gI,cAAc5yG,aAAa,gBAAgB,SAASluB,KAAKihI,eAAe/yG,aAAa,gBAAgB,UAAUluB,KAAKohI,WAAWx+G,EAAE8yF,QAAQ9yF,EAAEm2F,eAAe7zD,GAAEllD,KAAKihI,eAAet/H,GAAG3B,KAAKihI,eAAe/yG,aAAa,gBAAgB,UAAUluB,KAAKohI,WAAWx+G,EAAE8yF,QAAQ9yF,EAAEi1F,eAAe3yD,GAAEllD,KAAK8gI,cAAcn/H,GAAG3B,KAAK8gI,cAAc5yG,aAAa,gBAAgB,QAAQ,IAAImzG,IAAIzxD,GAAE4hC,aAAa,CAAC8vB,aAAY,IAAK1xD,GAAE8hC,aAAY,WAAW1xG,KAAK1B,QAAQgjI,cAActhI,KAAKshI,YAAY,IAAIb,GAAGzgI,KAAK4xG,WAAW5xG,KAAKshI,aAAa,IAAGz5D,GAAEqnC,OAAO,CAAC5wG,QAAQ,CAAC2O,SAAS,aAAa/I,SAAS,IAAIq9H,QAAO,EAAGC,UAAS,GAAIryB,MAAM,SAASvsF,GAAG,IAAIjhB,EAAE,wBAAwB8e,EAAElP,GAAE,MAAM5P,GAAG9D,EAAEmC,KAAK1B,QAAQ,OAAO0B,KAAKyhI,WAAW5jI,EAAE8D,EAAE,QAAQ8e,GAAGmC,EAAE1J,GAAGrb,EAAE6jI,eAAe,UAAU,OAAO1hI,KAAKi/H,QAAQj/H,MAAM4iB,EAAEkvF,UAAU9xG,KAAKi/H,QAAQj/H,MAAMygB,CAAC,EAAE+wC,SAAS,SAAS5uC,GAAGA,EAAE6vC,IAAIzyD,KAAK1B,QAAQojI,eAAe,UAAU,OAAO1hI,KAAKi/H,QAAQj/H,KAAK,EAAEyhI,WAAW,SAAS7+G,EAAEjhB,EAAE8e,GAAGmC,EAAE2+G,SAASvhI,KAAK2hI,QAAQpwH,GAAE,MAAM5P,EAAE8e,IAAImC,EAAE4+G,WAAWxhI,KAAK4hI,QAAQrwH,GAAE,MAAM5P,EAAE8e,GAAG,EAAEw+G,QAAQ,WAAW,IAAgBt9H,GAAZihB,EAAE5iB,KAAKsvG,MAASqW,UAAUnmH,EAAE,EAAEojB,EAAEA,EAAEkL,SAASlL,EAAE4zG,uBAAuB,CAAC,EAAE70H,IAAIihB,EAAE4zG,uBAAuB,CAACx2H,KAAK1B,QAAQ4F,SAASvC,KAAK3B,KAAK6hI,cAAcj/G,EAAE,EAAEi/G,cAAc,SAASj/G,GAAG5iB,KAAK1B,QAAQijI,QAAQ3+G,GAAG5iB,KAAK8hI,cAAcl/G,GAAG5iB,KAAK1B,QAAQkjI,UAAU5+G,GAAG5iB,KAAK+hI,gBAAgBn/G,EAAE,EAAEk/G,cAAc,SAASl/G,GAAG,IAAIjhB,EAAE3B,KAAKgiI,aAAap/G,GAAG5iB,KAAKiiI,aAAajiI,KAAK2hI,QAAQhgI,EAAE,IAAIA,EAAE,KAAKA,EAAE,IAAI,MAAMA,EAAEihB,EAAE,EAAEm/G,gBAAgB,SAASn/G,GAAG,IAAIjhB,EAAE8e,EAAgB,MAAdmC,GAAE,YAAoBnC,EAAEzgB,KAAKgiI,aAAargI,EAAEihB,EAAE,MAAM5iB,KAAKiiI,aAAajiI,KAAK4hI,QAAQnhH,EAAE,MAAMA,EAAE9e,KAAK8e,EAAEzgB,KAAKgiI,aAAap/G,GAAG5iB,KAAKiiI,aAAajiI,KAAK4hI,QAAQnhH,EAAE,MAAMA,EAAEmC,GAAG,EAAEq/G,aAAa,SAASr/G,EAAEjhB,EAAE8e,GAAGmC,EAAEtc,MAAM5G,MAAMhC,KAAKukC,MAAMjiC,KAAK1B,QAAQ4F,SAASuc,GAAG,KAAKmC,EAAEytC,UAAU1uD,CAAC,EAAEqgI,aAAa,SAASp/G,GAAG,IAAIjhB,EAAEjE,KAAKy0B,IAAI,IAAIz0B,KAAKiqD,MAAM/kC,GAAG,IAAI3kB,OAAO,GAAS,OAAO0D,GAAK,KAAlBihB,GAAIjhB,GAAoB,GAAG,GAAGihB,EAAE,EAAE,GAAGA,EAAE,EAAE,GAAGA,EAAE,EAAE,EAAE,KAAKs/G,GAAGr6D,GAAEqnC,OAAO,CAAC5wG,QAAQ,CAAC2O,SAAS,cAAcu1B,OAAO,sFAAsFimD,GAAE+jC,UAAU,gNAAgN,IAAI,eAAe98F,WAAW,SAAS9M,GAAGkW,EAAE94B,KAAK4iB,GAAG5iB,KAAKmiI,cAAc,CAAC,CAAC,EAAEhzB,MAAM,SAASvsF,GAAG,IAAI,IAAIjhB,KAAKihB,EAAEw/G,mBAAmBpiI,MAAMs6G,WAAW/oG,GAAE,MAAM,+BAA+BygH,GAAGhyH,KAAKs6G,YAAY13F,EAAEu+F,QAAQv+F,EAAEu+F,QAAQx/G,GAAG0gI,gBAAgBriI,KAAKsiI,eAAe1/G,EAAEu+F,QAAQx/G,GAAG0gI,kBAAkB,OAAOriI,KAAKi/H,UAAUr8G,EAAE1J,GAAG,WAAWlZ,KAAKuiI,gBAAgBviI,MAAMA,KAAKs6G,UAAU,EAAE9oD,SAAS,SAAS5uC,GAAGA,EAAE6vC,IAAI,WAAWzyD,KAAKuiI,gBAAgBviI,KAAK,EAAEuiI,gBAAgB,SAAS3/G,GAAGA,EAAEsyF,MAAMmtB,iBAAiBriI,KAAKsiI,eAAe1/G,EAAEsyF,MAAMmtB,kBAAkBz/G,EAAEsyF,MAAMuC,KAAK,UAAS,WAAWz3G,KAAKwiI,kBAAkB5/G,EAAEsyF,MAAMmtB,iBAAiB,GAAEriI,MAAM,EAAEyiI,UAAU,SAAS7/G,GAAG,OAAO5iB,KAAK1B,QAAQkkC,OAAO5f,EAAE5iB,KAAKi/H,UAAUj/H,IAAI,EAAEsiI,eAAe,SAAS1/G,GAAG,OAAOA,IAAI5iB,KAAKmiI,cAAcv/G,KAAK5iB,KAAKmiI,cAAcv/G,GAAG,GAAG5iB,KAAKmiI,cAAcv/G,KAAK5iB,KAAKi/H,WAAWj/H,IAAI,EAAEwiI,kBAAkB,SAAS5/G,GAAG,OAAOA,GAAG5iB,KAAKmiI,cAAcv/G,KAAK5iB,KAAKmiI,cAAcv/G,KAAK5iB,KAAKi/H,WAAWj/H,IAAI,EAAEi/H,QAAQ,WAAW,GAAGj/H,KAAKsvG,KAAK,CAAC,IAAI1sF,EAAEjhB,EAAE,GAAG,IAAIihB,KAAK5iB,KAAKmiI,cAAcniI,KAAKmiI,cAAcv/G,IAAIjhB,EAAEG,KAAK8gB,GAAG,IAAInC,EAAE,GAAGzgB,KAAK1B,QAAQkkC,QAAQ/hB,EAAE3e,KAAK9B,KAAK1B,QAAQkkC,QAAQ7gC,EAAE1D,QAAQwiB,EAAE3e,KAAKH,EAAE4lE,KAAK,OAAOvnE,KAAKs6G,WAAWjqD,UAAU5vC,EAAE8mD,KAAK,sCAAsC,CAAC,IAAsqBm7D,IAA/pB9yD,GAAE4hC,aAAa,CAAC4wB,oBAAmB,IAAKxyD,GAAE8hC,aAAY,WAAW1xG,KAAK1B,QAAQ8jI,qBAAoB,IAAKF,IAAIpqB,MAAM93G,KAAK,IAAG6nE,GAAE86D,OAAOnE,GAAG32D,GAAE+6D,KAAKnC,GAAG54D,GAAEg7D,MAAMxB,GAAGx5D,GAAEi7D,YAAYZ,GAAGjE,GAAG/J,OAAO,SAAStxG,EAAEjhB,EAAE8e,GAAG,OAAO,IAAI+9G,GAAG57G,EAAEjhB,EAAE8e,EAAE,EAAEw9G,GAAGhlH,KAAK,SAAS2J,GAAG,OAAO,IAAI69G,GAAG79G,EAAE,EAAEq7G,GAAG/9H,MAAM,SAAS0iB,GAAG,OAAO,IAAIy+G,GAAGz+G,EAAE,EAAEq7G,GAAG8E,YAAY,SAASngH,GAAG,OAAO,IAAIs/G,GAAGt/G,EAAE,EAAtV/kB,EAAwV8kH,EAAGzT,OAAO,CAACx/E,WAAW,SAAS9M,GAAG5iB,KAAKsvG,KAAK1sF,CAAC,EAAEiY,OAAO,WAAW,OAAO76B,KAAKgjI,WAAWhjI,KAAKgjI,UAAS,EAAGhjI,KAAKijI,YAAYjjI,IAAI,EAAE88H,QAAQ,WAAW,OAAO98H,KAAKgjI,WAAWhjI,KAAKgjI,UAAS,EAAGhjI,KAAKkjI,eAAeljI,IAAI,EAAE86B,QAAQ,WAAW,QAAQ96B,KAAKgjI,QAAQ,IAASnlI,EAAEi6G,MAAM,SAASl1F,EAAEjhB,GAAG,OAAOihB,EAAE42G,WAAW73H,EAAE3B,MAAMA,IAAI,EAA1DioH,GAA4D,CAAChF,OAAOthH,GAAO8mF,GAAE30B,MAAM,uBAAuB,aAAYqvE,GAAGpf,EAAG7U,OAAO,CAAC5wG,QAAQ,CAAC8kI,eAAe,GAAG1zG,WAAW,SAAS9M,EAAEjhB,EAAE8e,EAAE5iB,GAAGi7B,EAAE94B,KAAKnC,GAAGmC,KAAKqjI,SAASzgH,EAAE5iB,KAAKsjI,iBAAiB3hI,GAAGihB,EAAE5iB,KAAKujI,gBAAgB9iH,CAAC,EAAEoa,OAAO,WAAW76B,KAAKgjI,WAAWrtE,GAAE31D,KAAKsjI,iBAAiBZ,GAAG1iI,KAAKwjI,QAAQxjI,MAAMA,KAAKgjI,UAAS,EAAG,EAAElG,QAAQ,WAAW98H,KAAKgjI,WAAWG,GAAGM,YAAYzjI,MAAMA,KAAK0jI,YAAW,GAAI/T,GAAE3vH,KAAKsjI,iBAAiBZ,GAAG1iI,KAAKwjI,QAAQxjI,MAAMA,KAAKgjI,UAAS,EAAGhjI,KAAKi6H,QAAO,EAAG,EAAEuJ,QAAQ,SAAS5gH,GAAG,IAAIjhB,EAAE8e,EAAEzgB,KAAKgjI,WAAWhjI,KAAKi6H,QAAO,EAAG9K,GAAGnvH,KAAKqjI,SAAS,uBAAuBzgH,EAAEmxC,SAAS,IAAInxC,EAAEmxC,QAAQ91D,OAAOklI,GAAGM,YAAYzjI,MAAMA,KAAK0jI,aAAaP,GAAGM,WAAW7gH,EAAEu2C,UAAU,IAAIv2C,EAAE+gH,OAAO,IAAI/gH,EAAEghH,SAAShhH,EAAEmxC,WAAWovE,GAAGM,UAAUzjI,MAAMujI,iBAAiB3T,GAAG5vH,KAAKqjI,UAAU5T,KAAKpB,KAAKruH,KAAK6jI,UAAU7jI,KAAK+wG,KAAK,QAAQtwF,EAAEmC,EAAEmxC,QAAQnxC,EAAEmxC,QAAQ,GAAGnxC,EAAEjhB,EAAEouH,GAAG/vH,KAAKqjI,UAAUrjI,KAAK8jI,YAAY,IAAIrzH,EAAEgQ,EAAEskC,QAAQtkC,EAAEukC,SAAShlD,KAAKuzH,UAAU/kC,GAAGxuF,KAAKqjI,UAAUrjI,KAAK+jI,aAAa9T,GAAGtuH,GAAG8e,EAAE,cAAcmC,EAAExH,KAAKu6C,GAAE/9C,SAAS6I,EAAE,YAAY,YAAYzgB,KAAKgkI,QAAQhkI,MAAM21D,GAAE/9C,SAAS6I,EAAE,UAAU,uBAAuBzgB,KAAKikI,MAAMjkI,SAAS,EAAEgkI,QAAQ,SAASphH,GAAG,IAAIjhB,EAAE3B,KAAKgjI,WAAWpgH,EAAEmxC,SAAS,EAAEnxC,EAAEmxC,QAAQ91D,OAAO+B,KAAKi6H,QAAO,IAAKt4H,EAAE,IAAI8O,GAAG9O,EAAEihB,EAAEmxC,SAAS,IAAInxC,EAAEmxC,QAAQ91D,OAAO2kB,EAAEmxC,QAAQ,GAAGnxC,GAAGmiC,QAAQpjD,EAAEqjD,SAAS0/D,UAAU1kH,KAAK8jI,cAAcvkI,IAAIoC,EAAEnC,GAAG9B,KAAKwgC,IAAIv8B,EAAEpC,GAAG7B,KAAKwgC,IAAIv8B,EAAEnC,GAAGQ,KAAK1B,QAAQ8kI,iBAAiBzhI,EAAEpC,GAAGS,KAAK+jI,aAAaxkI,EAAEoC,EAAEnC,GAAGQ,KAAK+jI,aAAavkI,EAAEqwE,GAAEjtD,GAAG5iB,KAAKi6H,SAASj6H,KAAK+wG,KAAK,aAAa/wG,KAAKi6H,QAAO,EAAG/0E,GAAEttC,SAASi3F,KAAK,oBAAoB7uG,KAAKkkI,YAAYthH,EAAEjsB,QAAQisB,EAAEu5G,WAAWxpH,OAAOwxH,oBAAoBnkI,KAAKkkI,uBAAuBvxH,OAAOwxH,qBAAqBnkI,KAAKkkI,YAAYlkI,KAAKkkI,YAAYE,yBAAyBl/E,GAAEllD,KAAKkkI,YAAY,wBAAwBlkI,KAAKqkI,QAAQrkI,KAAKuzH,UAAU1wG,IAAIlhB,GAAG3B,KAAK6jI,SAAQ,EAAG7jI,KAAKskI,WAAW1hH,EAAE5iB,KAAKukI,mBAAmB,EAAEA,gBAAgB,WAAW,IAAI3hH,EAAE,CAACo3F,cAAch6G,KAAKskI,YAAYtkI,KAAK+wG,KAAK,UAAUnuF,GAAG8rD,GAAE1uE,KAAKqjI,SAASrjI,KAAKqkI,SAASrkI,KAAK+wG,KAAK,OAAOnuF,EAAE,EAAEqhH,MAAM,WAAWjkI,KAAKgjI,UAAUhjI,KAAK0jI,YAAY,EAAEA,WAAW,SAAS9gH,GAAG4rD,GAAE52D,SAASi3F,KAAK,oBAAoB7uG,KAAKkkI,cAAc11D,GAAExuE,KAAKkkI,YAAY,uBAAuBlkI,KAAKkkI,YAAY,MAAMvU,GAAE/3G,SAAS,sBAAsB5X,KAAKgkI,QAAQhkI,MAAM2vH,GAAE/3G,SAAS,+BAA+B5X,KAAKikI,MAAMjkI,MAAM0vH,KAAKpB,KAAKtuH,KAAKi6H,QAAQj6H,KAAK6jI,SAAS7jI,KAAK+wG,KAAK,UAAU,CAACyzB,UAAU5hH,EAAEkL,SAAS9tB,KAAKqkI,QAAQjf,WAAWplH,KAAKuzH,aAAavzH,KAAK6jI,SAAQ,EAAGV,GAAGM,WAAU,CAAE,IAAI,SAASgB,GAAG7hH,EAAEjhB,GAAG,OAAIA,GAAIihB,EAAE3kB,OAAsC,SAAS2kB,EAAEjhB,GAAG,IAAI8e,EAAEmC,EAAE3kB,OAAOJ,EAAE,WAAW6mI,iBAAY,EAAO,GAAGA,WAAWrnI,OAAOojB,GAAG5iB,EAAE,GAAGA,EAAE4iB,EAAE,GAAG,EAAE,SAASmC,EAAEjhB,EAAE8e,EAAE5iB,EAAEV,EAAEyG,GAAG,IAAI83C,EAAEpqC,EAAE3O,EAAE+1C,EAAE,EAAE,IAAIpnC,EAAEnU,EAAE,EAAEmU,GAAG1N,EAAE,EAAE0N,IAA4BonC,GAAxB/1C,EAAEgiI,GAAGhjI,EAAE2P,GAAG3P,EAAExE,GAAGwE,EAAEiC,IAAG,MAAU83C,EAAEpqC,EAAEonC,EAAE/1C,GAAG9E,EAAE66C,IAAIj4B,EAAEi7B,GAAG,EAAE94B,EAAEjhB,EAAE8e,EAAE5iB,EAAEV,EAAEu+C,GAAG94B,EAAEjhB,EAAE8e,EAAE5iB,EAAE69C,EAAE93C,GAAG,CAAvI,CAAyIgf,EAAE/kB,EAAE8D,EAAE,EAAE8e,EAAE,GAAG,IAAItjB,EAAEyG,EAAE,GAAG,IAAIzG,EAAE,EAAEA,EAAEsjB,EAAEtjB,IAAIU,EAAEV,IAAIyG,EAAE9B,KAAK8gB,EAAEzlB,IAAI,OAAOyG,CAAC,CAA/S,CAAiTgf,EAAE,SAASA,EAAEjhB,GAAG,IAAI,IAAI8e,EAAE,CAACmC,EAAE,IAAI/kB,EAAE,EAAEV,EAAE,EAAEyG,EAAEgf,EAAE3kB,OAAOJ,EAAE+F,EAAE/F,KAAI,SAAU+kB,EAAEjhB,GAAG,IAAI8e,EAAE9e,EAAEpC,EAAEqjB,EAAErjB,EAAY,OAAOkhB,EAAEA,GAAnB9e,EAAEA,EAAEnC,EAAEojB,EAAEpjB,GAAemC,CAAE,EAAtD,CAAwDihB,EAAE/kB,GAAG+kB,EAAEzlB,IAAIwE,IAAI8e,EAAE3e,KAAK8gB,EAAE/kB,IAAIV,EAAEU,GAAyB,OAAtBV,EAAEyG,EAAE,GAAG6c,EAAE3e,KAAK8gB,EAAEhf,EAAE,IAAW6c,CAAC,CAAjL,CAAmLmC,EAApfjhB,GAAGA,GAAsfA,GAAngBihB,EAAEpe,OAAmgB,CAAC,SAASogI,GAAGhiH,EAAEjhB,EAAE8e,GAAG,OAAO/iB,KAAKogC,KAAK6mG,GAAG/hH,EAAEjhB,EAAE8e,GAAE,GAAI,CAAC,SAASokH,GAAGjiH,EAAEjhB,EAAE8e,EAAE5iB,EAAEV,GAAG,IAAIyG,EAAE83C,EAAEpqC,EAAE3O,EAAE9E,EAAEqgI,GAAGtT,GAAGhoG,EAAEnC,GAAGi4B,EAAEkyE,GAAGjpH,EAAE8e,GAAG,IAAIy9G,GAAGxlF,IAAI,CAAC,KAAK/1C,EAAE+1C,GAAG,MAAM,CAAC91B,EAAEjhB,GAAG,GAAGgB,EAAE+1C,EAAE,OAAM,EAAGpnC,EAAEs5G,GAAGlvE,EAAEopF,GAAGliH,EAAEjhB,EAAEiC,EAAEjB,GAAG+1C,EAAEj4B,EAAEtjB,GAAGsjB,GAAG7c,IAAIjB,GAAGigB,EAAE84B,EAAE/4C,EAAE2O,IAAI3P,EAAE+5C,EAAEhD,EAAEpnC,EAAE,CAAC,CAAC,SAASwzH,GAAGliH,EAAEjhB,EAAE8e,EAAE5iB,EAAEV,GAAG,IAAIyG,EAAE83C,EAAEpqC,EAAE3P,EAAEpC,EAAEqjB,EAAErjB,EAAYoD,GAAVhB,EAAEA,EAAEnC,EAAEojB,EAAEpjB,EAAI3B,EAAE4B,KAAY,OAAR5B,EAAEA,EAAE4G,IAAW,EAAEgc,GAAG7c,EAAEgf,EAAErjB,EAAE+R,GAAGzT,EAAE2B,EAAEojB,EAAEpjB,GAAGmC,EAAE+5C,EAAE79C,EAAE2B,GAAG,EAAEihB,GAAG7c,EAAEgf,EAAErjB,EAAE+R,GAAG3O,EAAEnD,EAAEojB,EAAEpjB,GAAGmC,EAAE+5C,EAAE/4C,EAAEnD,GAAG,EAAEihB,GAAG7c,EAAE/F,EAAE0B,EAAEm8C,EAAE94B,EAAEpjB,EAAEmC,GAAG9D,EAAE0B,EAAEqjB,EAAErjB,GAAG+R,GAAG,EAAEmP,IAAI7c,EAAEjB,EAAEpD,EAAEm8C,EAAE94B,EAAEpjB,EAAEmC,GAAGgB,EAAEpD,EAAEqjB,EAAErjB,GAAG+R,GAAG,IAAIb,EAAE7M,EAAE83C,EAAEv+C,EAAE,CAAC,SAASytH,GAAGhoG,EAAEjhB,GAAG,IAAI8e,EAAE,EAAE,OAAOmC,EAAErjB,EAAEoC,EAAElC,IAAIF,EAAEkhB,GAAG,EAAEmC,EAAErjB,EAAEoC,EAAE8C,IAAIlF,IAAIkhB,GAAG,GAAGmC,EAAEpjB,EAAEmC,EAAElC,IAAID,EAAEihB,GAAG,EAAEmC,EAAEpjB,EAAEmC,EAAE8C,IAAIjF,IAAIihB,GAAG,GAAGA,CAAC,CAAC,SAASkkH,GAAG/hH,EAAEjhB,EAAE8e,EAAE5iB,GAAG,IAAIV,EAAEwE,EAAEpC,EAAQqE,GAANjC,EAAEA,EAAEnC,EAAIihB,EAAElhB,EAAEpC,GAAEu+C,EAAEj7B,EAAEjhB,EAAEmC,EAAE2P,EAAE1N,EAAEA,EAAE83C,EAAEA,EAAE,OAAO,EAAEpqC,IAAI,GAAGA,IAAIsR,EAAErjB,EAAEpC,GAAGyG,GAAGgf,EAAEpjB,EAAEmC,GAAG+5C,GAAGpqC,IAAInU,EAAEsjB,EAAElhB,EAAEoC,EAAE8e,EAAEjhB,GAAG,EAAE8R,IAAInU,GAAGyG,EAAE0N,EAAE3P,GAAG+5C,EAAEpqC,IAAI1N,EAAEgf,EAAErjB,EAAEpC,EAAEu+C,EAAE94B,EAAEpjB,EAAEmC,EAAE9D,EAAE+F,EAAEA,EAAE83C,EAAEA,EAAE,IAAIjrC,EAAEtT,EAAEwE,EAAE,CAAC,SAASmrG,GAAGlqF,GAAG,OAAO7kB,EAAE6kB,EAAE,KAAK,iBAAiBA,EAAE,GAAG,SAAI,IAASA,EAAE,GAAG,EAAE,CAAC,SAASmiH,GAAGniH,GAAG,OAAOkD,QAAQo9F,KAAK,kEAAkEpW,GAAGlqF,EAAE,CAAwN,SAASmqF,GAAGnqF,EAAEjhB,EAAE8e,GAAG,IAAI,IAAI5iB,EAAEV,EAAEyG,EAAE83C,EAAEpqC,EAAE3O,EAAE+1C,EAAE8d,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG19B,EAAE,EAAE/6B,EAAE6kB,EAAE3kB,OAAO66B,EAAE/6B,EAAE+6B,IAAIlW,EAAEkW,GAAGksG,MAAMpa,GAAGhoG,EAAEkW,GAAGn3B,GAAG,IAAIiC,EAAE,EAAEA,EAAE,EAAEA,IAAI,CAAC,IAAIjB,EAAE6zD,EAAE5yD,GAAG/F,EAAE,GAAGi7B,EAAE,EAAE37B,GAAGY,EAAE6kB,EAAE3kB,QAAQ,EAAE66B,EAAE/6B,EAAEZ,EAAE27B,IAAI4iB,EAAE94B,EAAEkW,GAAGxnB,EAAEsR,EAAEzlB,GAAGu+C,EAAEspF,MAAMriI,EAAE2O,EAAE0zH,MAAMriI,KAAK+1C,EAAEosF,GAAGxzH,EAAEoqC,EAAE/4C,EAAEhB,EAAE8e,IAAIukH,MAAMpa,GAAGlyE,EAAE/2C,GAAG9D,EAAEiE,KAAK42C,KAAKpnC,EAAE0zH,MAAMriI,KAAK+1C,EAAEosF,GAAGxzH,EAAEoqC,EAAE/4C,EAAEhB,EAAE8e,IAAIukH,MAAMpa,GAAGlyE,EAAE/2C,GAAG9D,EAAEiE,KAAK42C,IAAI76C,EAAEiE,KAAK45C,IAAI94B,EAAE/kB,CAAC,CAAC,OAAO+kB,CAAC,CAAvhBslG,GAAG,CAACvrH,UAAU,KAAKsoI,SAASR,GAAGS,uBAAuBN,GAAGO,sBAAsB,SAASviH,EAAEjhB,EAAE8e,GAAG,OAAOkkH,GAAG/hH,EAAEjhB,EAAE8e,EAAE,EAAE2kH,YAAYP,GAAGQ,qBAAqBP,GAAGQ,YAAY1a,GAAG2a,yBAAyBZ,GAAGa,OAAO14B,GAAG24B,MAAMV,IAAyU5c,GAAG,CAACxrH,UAAU,KAAK+oI,YAAY34B,IAAIqb,GAAG,CAAC1pC,QAAQ,SAAS97D,GAAG,OAAO,IAAInS,EAAEmS,EAAEi7F,IAAIj7F,EAAEk5F,IAAI,EAAE6K,UAAU,SAAS/jG,GAAG,OAAO,IAAI3lB,EAAE2lB,EAAEpjB,EAAEojB,EAAErjB,EAAE,EAAEw2E,OAAO,IAAIhuB,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,MAAMsgE,GAAG,CAAC7+B,EAAE,QAAQm8C,QAAQ,kBAAkB5vD,OAAO,IAAIhuB,EAAE,EAAE,gBAAgB,gBAAgB,CAAC,eAAe,iBAAiB22B,QAAQ,SAAS97D,GAAG,IAAIjhB,EAAEjE,KAAK6H,GAAG,IAAIkb,EAAEzgB,KAAKwpF,EAAE3rF,EAAE+kB,EAAEk5F,IAAIn6G,EAAExE,EAAE6C,KAAK2lI,QAAQllH,EAAqB7c,GAAnBzG,EAAEO,KAAKogC,KAAK,EAAE3gC,EAAEA,IAAOO,KAAK4H,IAAIzH,GAAwF,OAArF+F,EAAElG,KAAKknE,IAAIlnE,KAAK6H,GAAG,EAAE1H,EAAE,GAAGH,KAAKy0B,KAAK,EAAEvuB,IAAI,EAAEA,GAAGzG,EAAE,GAAGU,GAAG4iB,EAAE/iB,KAAKy4D,IAAIz4D,KAAK+G,IAAIb,EAAE,QAAe,IAAI6M,EAAEmS,EAAEi7F,IAAIl8G,EAAE8e,EAAE5iB,EAAE,EAAE8oH,UAAU,SAAS/jG,GAAG,IAAI,IAAIjhB,EAAE8e,EAAE,IAAI/iB,KAAK6H,GAAG1H,EAAEmC,KAAKwpF,EAAErsF,EAAE6C,KAAK2lI,QAAQ9nI,EAAE+F,EAAElG,KAAKogC,KAAK,EAAE3gC,EAAEA,GAAGu+C,EAAEh+C,KAAK43D,KAAK1yC,EAAEpjB,EAAE3B,GAAGyT,EAAE5T,KAAK6H,GAAG,EAAE,EAAE7H,KAAKm8E,KAAKn+B,GAAG/4C,EAAE,EAAE+1C,EAAE,GAAG/1C,EAAE,IAAI,KAAKjF,KAAKwgC,IAAIwa,GAAG/1C,IAAIhB,EAAEiC,EAAElG,KAAK4H,IAAIgM,GAAG3P,EAAEjE,KAAKy0B,KAAK,EAAExwB,IAAI,EAAEA,GAAGiC,EAAE,GAAG0N,GAAGonC,EAAEh7C,KAAK6H,GAAG,EAAE,EAAE7H,KAAKm8E,KAAKn+B,EAAE/5C,GAAG2P,EAAE,OAAO,IAAIrU,EAAEqU,EAAEmP,EAAEmC,EAAErjB,EAAEkhB,EAAE5iB,EAAE,GAAG0qH,GAAG,CAAC5rH,UAAU,KAAKipI,OAAOxd,GAAGyd,SAASxd,GAAGyd,kBAAkB1e,GAAIqB,GAAG/vE,EAAE,CAAC,EAAEouE,EAAG,CAACjmC,KAAK,YAAYX,WAAWmoC,GAAG9B,eAAemB,EAAGc,GAAG,IAAI9qH,KAAK6H,GAAG8iH,GAAG7+B,GAAG,IAAIg/B,GAAG,MAA96B,IAAo7B15D,GAAGpW,EAAE,CAAC,EAAEouE,EAAG,CAACjmC,KAAK,YAAYX,WAAWkoC,GAAG7B,eAAemB,EAAG,EAAE,IAAI,GAAG,EAAE,IAAI,MAAuoCqe,IAAjoCrd,GAAGhwE,EAAE,CAAC,EAAE2tE,EAAG,CAACnmC,WAAWkoC,GAAG7B,eAAemB,EAAG,EAAE,GAAG,EAAE,GAAGxnH,MAAM,SAAS0iB,GAAG,OAAOllB,KAAKy0B,IAAI,EAAEvP,EAAE,EAAE3J,KAAK,SAAS2J,GAAG,OAAOllB,KAAKy4D,IAAIvzC,GAAGllB,KAAKm7D,GAAG,EAAE/qC,SAAS,SAASlL,EAAEjhB,GAAG,IAAI8e,EAAE9e,EAAEk8G,IAAIj7F,EAAEi7F,IAAkB,OAAdl8G,EAAEA,EAAEm6G,IAAIl5F,EAAEk5F,IAAWp+G,KAAKogC,KAAKrd,EAAEA,EAAE9e,EAAEA,EAAE,EAAEklH,UAAS,IAAQR,EAAG2f,MAAMlf,EAAGT,EAAG4f,SAASxd,GAAGpC,EAAG6f,SAASve,EAAGtB,EAAG8f,WAAWve,EAAGvB,EAAG+f,SAASt3E,GAAGu3D,EAAGggB,OAAO3d,GAAvFvrH,GAA0F4mH,EAAG7U,OAAO,CAAC5wG,QAAQ,CAACg0G,KAAK,cAAcywB,YAAY,KAAKnG,qBAAoB,GAAI9kB,MAAM,SAASl1F,GAAG,OAAOA,EAAEkyF,SAAS90G,MAAMA,IAAI,EAAEyG,OAAO,WAAW,OAAOzG,KAAKsmI,WAAWtmI,KAAKsvG,MAAMtvG,KAAKumI,UAAU,EAAED,WAAW,SAAS1jH,GAAG,OAAOA,GAAGA,EAAEkzF,YAAY91G,MAAMA,IAAI,EAAE46H,QAAQ,SAASh4G,GAAG,OAAO5iB,KAAKsvG,KAAKsrB,QAAQh4G,EAAE5iB,KAAK1B,QAAQskB,IAAIA,EAAE5iB,KAAK1B,QAAQg0G,KAAK,EAAEk0B,qBAAqB,SAAS5jH,GAAG,OAAO5iB,KAAKsvG,KAAKusB,SAASl5H,EAAEigB,IAAI5iB,IAAI,EAAEymI,wBAAwB,SAAS7jH,GAAG,cAAc5iB,KAAKsvG,KAAKusB,SAASl5H,EAAEigB,IAAI5iB,IAAI,EAAEqiI,eAAe,WAAW,OAAOriI,KAAK1B,QAAQykI,WAAW,EAAE2D,UAAU,SAAS9jH,GAAG,IAAIjhB,EAAE8e,EAAEmC,EAAEjsB,OAAO8pB,EAAE00F,SAASn1G,QAAQA,KAAKsvG,KAAK7uF,EAAEzgB,KAAKq1H,cAAc50G,EAAE40G,cAAcr1H,KAAK2mI,YAAYhlI,EAAE3B,KAAK2mI,YAAYlmH,EAAEvH,GAAGvX,EAAE3B,MAAMA,KAAKy3G,KAAK,UAAS,WAAWh3F,EAAEgyC,IAAI9wD,EAAE3B,KAAK,GAAEA,OAAOA,KAAKmvG,MAAM1uF,GAAGzgB,KAAK+wG,KAAK,OAAOtwF,EAAEswF,KAAK,WAAW,CAACmE,MAAMl1G,OAAO,IAAS4vE,GAAEkgC,QAAQ,CAACgF,SAAS,SAASlyF,GAAG,IAAIA,EAAE8jH,UAAU,MAAM,IAAI/yH,MAAM,uCAAuC,IAAIhS,EAAEgB,EAAEigB,GAAG,OAAO5iB,KAAKmhH,QAAQx/G,MAAM3B,KAAKmhH,QAAQx/G,GAAGihB,GAAG2jH,UAAUvmI,KAAK4iB,EAAEgkH,WAAWhkH,EAAEgkH,UAAU5mI,MAAMA,KAAK8xG,UAAUlvF,EAAE8jH,UAAU9jH,IAAI5iB,IAAI,EAAE81G,YAAY,SAASlzF,GAAG,IAAIjhB,EAAEgB,EAAEigB,GAAG,OAAO5iB,KAAKmhH,QAAQx/G,KAAK3B,KAAK41H,SAAShzG,EAAE4uC,SAASxxD,aAAaA,KAAKmhH,QAAQx/G,GAAG3B,KAAK41H,UAAU51H,KAAK+wG,KAAK,cAAc,CAACmE,MAAMtyF,IAAIA,EAAEmuF,KAAK,WAAWnuF,EAAE0sF,KAAK1sF,EAAE2jH,UAAU,MAAMvmI,IAAI,EAAEm1G,SAAS,SAASvyF,GAAG,OAAOjgB,EAAEigB,KAAK5iB,KAAKmhH,OAAO,EAAErK,UAAU,SAASl0F,EAAEjhB,GAAG,IAAI,IAAI8e,KAAKzgB,KAAKmhH,QAAQv+F,EAAE9lB,KAAK6E,EAAE3B,KAAKmhH,QAAQ1gG,IAAI,OAAOzgB,IAAI,EAAEy1H,WAAW,SAAS7yG,GAAG,IAAI,IAAIjhB,EAAE,EAAE8e,GAAGmC,EAAEA,EAAE7kB,EAAE6kB,GAAGA,EAAE,CAACA,GAAG,IAAI3kB,OAAO0D,EAAE8e,EAAE9e,IAAI3B,KAAK80G,SAASlyF,EAAEjhB,GAAG,EAAEklI,cAAc,SAASjkH,GAAG6E,MAAM7E,EAAEtkB,QAAQ21H,UAAUxsG,MAAM7E,EAAEtkB,QAAQ01H,WAAWh0H,KAAK60H,iBAAiBlyH,EAAEigB,IAAIA,EAAE5iB,KAAK8mI,oBAAoB,EAAEC,iBAAiB,SAASnkH,GAAGA,EAAEjgB,EAAEigB,GAAG5iB,KAAK60H,iBAAiBjyG,YAAY5iB,KAAK60H,iBAAiBjyG,GAAG5iB,KAAK8mI,oBAAoB,EAAEA,kBAAkB,WAAW,IAAIlkH,EAAEjhB,EAAE,IAAI8e,GAAE,IAAK5iB,EAAEmC,KAAK47H,eAAe,IAAIh5G,KAAK5iB,KAAK60H,iBAAiB,KAAI13H,EAAE6C,KAAK60H,iBAAiBjyG,GAAGtkB,QAAQqD,OAAE,IAASxE,EAAE62H,QAAQryH,EAAEjE,KAAK+B,IAAIkC,EAAExE,EAAE62H,SAASvzG,OAAE,IAAStjB,EAAE82H,QAAQxzG,EAAE/iB,KAAK+G,IAAIgc,EAAEtjB,EAAE82H,QAAQ,CAACj0H,KAAKo6H,eAAe35G,KAAI,SAAK,EAAOA,EAAEzgB,KAAKm6H,eAAex4H,IAAI,SAAI,EAAOA,EAAE9D,IAAImC,KAAK47H,gBAAgB57H,KAAK+wG,KAAK,yBAAoB,IAAS/wG,KAAK1B,QAAQ21H,SAASj0H,KAAKo6H,gBAAgBp6H,KAAKo9G,UAAUp9G,KAAKo6H,gBAAgBp6H,KAAKk2H,QAAQl2H,KAAKo6H,qBAAgB,IAASp6H,KAAK1B,QAAQ01H,SAASh0H,KAAKm6H,gBAAgBn6H,KAAKo9G,UAAUp9G,KAAKm6H,gBAAgBn6H,KAAKk2H,QAAQl2H,KAAKm6H,eAAe,IAAIh9H,GAAE+xG,OAAO,CAACx/E,WAAW,SAAS9M,EAAEjhB,GAAG,IAAI8e,EAAE5iB,EAAE,GAAGi7B,EAAE94B,KAAK2B,GAAG3B,KAAKmhH,QAAQ,CAAC,EAAEv+F,EAAE,IAAInC,EAAE,EAAE5iB,EAAE+kB,EAAE3kB,OAAOwiB,EAAE5iB,EAAE4iB,IAAIzgB,KAAK80G,SAASlyF,EAAEnC,GAAG,EAAEq0F,SAAS,SAASlyF,GAAG,IAAIjhB,EAAE3B,KAAKgnI,WAAWpkH,GAAG,OAAO5iB,KAAKmhH,QAAQx/G,GAAGihB,EAAE5iB,KAAKsvG,MAAMtvG,KAAKsvG,KAAKwF,SAASlyF,GAAG5iB,IAAI,EAAE81G,YAAY,SAASlzF,GAA4C,OAAzCA,EAAEA,KAAK5iB,KAAKmhH,QAAQv+F,EAAE5iB,KAAKgnI,WAAWpkH,GAAU5iB,KAAKsvG,MAAMtvG,KAAKmhH,QAAQv+F,IAAI5iB,KAAKsvG,KAAKwG,YAAY91G,KAAKmhH,QAAQv+F,WAAW5iB,KAAKmhH,QAAQv+F,GAAG5iB,IAAI,EAAEm1G,SAAS,SAASvyF,GAAG,OAAO,iBAAiBA,EAAEA,EAAE5iB,KAAKgnI,WAAWpkH,MAAM5iB,KAAKmhH,OAAO,EAAEzK,YAAY,WAAW,OAAO12G,KAAK82G,UAAU92G,KAAK81G,YAAY91G,KAAK,EAAEinI,OAAO,SAASrkH,GAAG,IAAIjhB,EAAE8e,EAAE5iB,EAAER,MAAMzB,UAAU4I,MAAM1H,KAAKoK,UAAU,GAAG,IAAIvF,KAAK3B,KAAKmhH,SAAS1gG,EAAEzgB,KAAKmhH,QAAQx/G,IAAIihB,IAAInC,EAAEmC,GAAG/gB,MAAM4e,EAAE5iB,GAAG,OAAOmC,IAAI,EAAEmvG,MAAM,SAASvsF,GAAG5iB,KAAK82G,UAAUl0F,EAAEkyF,SAASlyF,EAAE,EAAE4uC,SAAS,SAAS5uC,GAAG5iB,KAAK82G,UAAUl0F,EAAEkzF,YAAYlzF,EAAE,EAAEk0F,UAAU,SAASl0F,EAAEjhB,GAAG,IAAI,IAAI8e,KAAKzgB,KAAKmhH,QAAQv+F,EAAE9lB,KAAK6E,EAAE3B,KAAKmhH,QAAQ1gG,IAAI,OAAOzgB,IAAI,EAAEo3G,SAAS,SAASx0F,GAAG,OAAO5iB,KAAKmhH,QAAQv+F,EAAE,EAAEu0F,UAAU,WAAW,IAAIv0F,EAAE,GAAG,OAAO5iB,KAAK82G,UAAUl0F,EAAE9gB,KAAK8gB,GAAGA,CAAC,EAAEo9G,UAAU,SAASp9G,GAAG,OAAO5iB,KAAKinI,OAAO,YAAYrkH,EAAE,EAAEokH,WAAWrkI,KAAKukI,GAAGnB,GAAG72B,OAAO,CAAC4F,SAAS,SAASlyF,GAAG,OAAO5iB,KAAKm1G,SAASvyF,GAAG5iB,MAAM4iB,EAAEixF,eAAe7zG,MAAM+lI,GAAGnqI,UAAUk5G,SAASh4G,KAAKkD,KAAK4iB,GAAG5iB,KAAK+wG,KAAK,WAAW,CAACmE,MAAMtyF,IAAI,EAAEkzF,YAAY,SAASlzF,GAAG,OAAO5iB,KAAKm1G,SAASvyF,KAAKA,EAAEA,KAAK5iB,KAAKmhH,QAAQnhH,KAAKmhH,QAAQv+F,GAAGA,GAAGihG,kBAAkB7jH,MAAM+lI,GAAGnqI,UAAUk6G,YAAYh5G,KAAKkD,KAAK4iB,GAAG5iB,KAAK+wG,KAAK,cAAc,CAACmE,MAAMtyF,KAAK5iB,IAAI,EAAEygH,SAAS,SAAS79F,GAAG,OAAO5iB,KAAKinI,OAAO,WAAWrkH,EAAE,EAAEukH,aAAa,WAAW,OAAOnnI,KAAKinI,OAAO,eAAe,EAAEG,YAAY,WAAW,OAAOpnI,KAAKinI,OAAO,cAAc,EAAEjwB,UAAU,WAAW,IAAIp0F,EAAEjhB,EAAE,IAAIiC,EAAE,IAAIgf,KAAK5iB,KAAKmhH,QAAQ,CAAC,IAAI1gG,EAAEzgB,KAAKmhH,QAAQv+F,GAAGjhB,EAAEutG,OAAOzuF,EAAEu2F,UAAUv2F,EAAEu2F,YAAYv2F,EAAEw0F,YAAY,CAAC,OAAOtzG,CAAC,IAAI0lI,GAAG1kB,EAAGzT,OAAO,CAAC5wG,QAAQ,CAACgpI,YAAY,CAAC,EAAE,GAAGC,cAAc,CAAC,EAAE,GAAGC,aAAY,GAAI93G,WAAW,SAAS9M,GAAGkW,EAAE94B,KAAK4iB,EAAE,EAAE46F,WAAW,SAAS56F,GAAG,OAAO5iB,KAAKynI,YAAY,OAAO7kH,EAAE,EAAE86F,aAAa,SAAS96F,GAAG,OAAO5iB,KAAKynI,YAAY,SAAS7kH,EAAE,EAAE6kH,YAAY,SAAS7kH,EAAEjhB,GAAG,IAAI8e,EAAEzgB,KAAK0nI,YAAY9kH,GAAG,IAAInC,EAAE,CAAC,GAAG,SAASmC,EAAE,MAAM,IAAIjP,MAAM,mDAAmD,OAAO,IAAI,CAAkD,OAAjD8M,EAAEzgB,KAAK2nI,WAAWlnH,EAAE9e,GAAG,QAAQA,EAAEm/C,QAAQn/C,EAAE,MAAa3B,KAAK4nI,eAAennH,EAAEmC,IAAI5iB,KAAK1B,QAAQkpI,aAAa,KAAKxnI,KAAK1B,QAAQkpI,cAAc/mH,EAAE+mH,aAAY,IAAKxnI,KAAK1B,QAAQkpI,YAAY,GAAGxnI,KAAK1B,QAAQkpI,aAAa/mH,CAAC,EAAEmnH,eAAe,SAAShlH,EAAEjhB,GAAG,IAAI8e,EAAEzgB,KAAK1B,QAAsBT,EAAE6rD,EAAE7rD,EAAE,iBAApBA,EAAE4iB,EAAE9e,EAAE,SAAiC,CAAC9D,EAAEA,GAAGA,GAAGV,EAAEusD,EAAE,WAAW/nD,GAAG8e,EAAEonH,cAAcpnH,EAAEqnH,YAAYjqI,GAAGA,EAAE8mH,SAAS,GAAE,IAAK/hG,EAAE81F,UAAU,kBAAkB/2G,EAAE,KAAK8e,EAAEi4F,WAAW,IAAIv7G,IAAIylB,EAAEtc,MAAMyhI,YAAY5qI,EAAEoC,EAAE,KAAKqjB,EAAEtc,MAAM0hI,WAAW7qI,EAAEqC,EAAE,MAAM3B,IAAI+kB,EAAEtc,MAAM5G,MAAM7B,EAAE0B,EAAE,KAAKqjB,EAAEtc,MAAM3G,OAAO9B,EAAE2B,EAAE,KAAK,EAAEmoI,WAAW,SAAS/kH,EAAEjhB,GAAG,OAAOA,EAAEA,GAAGiW,SAASC,cAAc,QAAQowH,IAAIrlH,EAAEjhB,CAAC,EAAE+lI,YAAY,SAAS9kH,GAAG,OAAO6lE,GAAE0jC,QAAQnsH,KAAK1B,QAAQskB,EAAE,cAAc5iB,KAAK1B,QAAQskB,EAAE,MAAM,IAAQslH,GAAGb,GAAGn4B,OAAO,CAAC5wG,QAAQ,CAAC6pI,QAAQ,kBAAkBC,cAAc,qBAAqBC,UAAU,oBAAoBluB,SAAS,CAAC,GAAG,IAAI2tB,WAAW,CAAC,GAAG,IAAIR,YAAY,CAAC,GAAG,IAAIC,cAAc,CAAC,IAAI,IAAIe,WAAW,CAAC,GAAG,KAAKZ,YAAY,SAAS9kH,GAAG,MAAM,iBAAiBslH,GAAGK,YAAYL,GAAGK,UAAUvoI,KAAKwoI,oBAAoBxoI,KAAK1B,QAAQiqI,WAAWL,GAAGK,WAAWlB,GAAGzrI,UAAU8rI,YAAY5qI,KAAKkD,KAAK4iB,EAAE,EAAE6lH,UAAU,SAAS7lH,GAAG,SAASjhB,EAAEihB,EAAEjhB,EAAE8e,GAAG,OAAO9e,EAAEA,EAAEk6D,KAAKj5C,KAAKjhB,EAAE8e,EAAE,CAAC,OAAOmC,EAAEjhB,EAAEihB,EAAE,yBAAyB,KAAKjhB,EAAEihB,EAAE,yBAAyB,EAAE,EAAE4lH,gBAAgB,WAAW,IAAI5lH,EAAErR,GAAE,MAAM,4BAA4BqG,SAASi3F,MAAMltG,EAAEukG,GAAGtjF,EAAE,qBAAqBsjF,GAAGtjF,EAAE,mBAAmB,OAAGhL,SAASi3F,KAAKp/C,YAAY7sC,IAAGjhB,EAAE3B,KAAKyoI,UAAU9mI,IAAUA,GAAEihB,EAAEhL,SAASk1C,cAAc,8BAAsClqC,EAAEysF,KAAKxlC,UAAU,EAAEjnD,EAAEysF,KAAKpxG,OAAO,GAAqB,GAAG,EAAE,IAAIyqI,GAAG7qI,EAAEqxG,OAAO,CAACx/E,WAAW,SAAS9M,GAAG5iB,KAAK2oI,QAAQ/lH,CAAC,EAAEqgH,SAAS,WAAW,IAAIrgH,EAAE5iB,KAAK2oI,QAAQnxB,MAAMx3G,KAAK4oI,aAAa5oI,KAAK4oI,WAAW,IAAIzF,GAAGvgH,EAAEA,GAAE,IAAK5iB,KAAK4oI,WAAW1vH,GAAG,CAAC66B,UAAU/zC,KAAK6oI,aAAaC,QAAQ9oI,KAAK+oI,WAAWh2F,KAAK/yC,KAAKgpI,QAAQh1F,QAAQh0C,KAAKipI,YAAYjpI,MAAM66B,SAASqqB,GAAEtiC,EAAE,2BAA2B,EAAEsgH,YAAY,WAAWljI,KAAK4oI,WAAWn2E,IAAI,CAAC1e,UAAU/zC,KAAK6oI,aAAaC,QAAQ9oI,KAAK+oI,WAAWh2F,KAAK/yC,KAAKgpI,QAAQh1F,QAAQh0C,KAAKipI,YAAYjpI,MAAM88H,UAAU98H,KAAK2oI,QAAQnxB,OAAOhpC,GAAExuE,KAAK2oI,QAAQnxB,MAAM,2BAA2B,EAAE9+C,MAAM,WAAW,OAAO14D,KAAK4oI,YAAY5oI,KAAK4oI,WAAW3O,MAAM,EAAEiP,WAAW,SAAStmH,GAAG,IAAIjhB,EAAE3B,KAAK2oI,QAAQloH,EAAE9e,EAAE2tG,KAAKzxG,EAAEmC,KAAK2oI,QAAQrqI,QAAQ6qI,aAAahsI,EAAE6C,KAAK2oI,QAAQrqI,QAAQ8qI,eAAexlI,EAAE4qF,GAAG7sF,EAAE61G,OAAO97D,EAAEj7B,EAAEw3G,iBAAiB3mH,EAAEmP,EAAEg6G,kBAAiBnpH,EAAE0V,EAAE00B,EAAEj8C,IAAIilH,UAAUpzG,GAAGuR,IAAI1lB,GAAGu+C,EAAEj3C,IAAIigH,UAAUpzG,GAAGmzG,SAAStnH,KAAM+yD,SAAStsD,KAAKzG,EAAEusD,GAAGhsD,KAAK+G,IAAI6M,EAAE7M,IAAIlF,EAAEqE,EAAErE,GAAG+R,EAAE7M,IAAIlF,IAAIm8C,EAAEj3C,IAAIlF,EAAE+R,EAAE7M,IAAIlF,IAAI7B,KAAK+B,IAAI6R,EAAE7R,IAAIF,EAAEqE,EAAErE,GAAG+R,EAAE7R,IAAIF,IAAIm8C,EAAEj8C,IAAIF,EAAE+R,EAAE7R,IAAIF,IAAI7B,KAAK+G,IAAI6M,EAAE7M,IAAIjF,EAAEoE,EAAEpE,GAAG8R,EAAE7M,IAAIjF,IAAIk8C,EAAEj3C,IAAIjF,EAAE8R,EAAE7M,IAAIjF,IAAI9B,KAAK+B,IAAI6R,EAAE7R,IAAID,EAAEoE,EAAEpE,GAAG8R,EAAE7R,IAAID,IAAIk8C,EAAEj8C,IAAID,EAAE8R,EAAE7R,IAAID,IAAIqlH,WAAWhnH,GAAG4iB,EAAEo2G,MAAM15H,EAAE,CAAC21G,SAAQ,IAAK9yG,KAAK4oI,WAAWvE,QAAQ7f,KAAKrnH,GAAG6C,KAAK4oI,WAAWrV,UAAU/O,KAAKrnH,GAAGuxE,GAAE/sE,EAAE61G,MAAMx3G,KAAK4oI,WAAWvE,SAASrkI,KAAKgpI,QAAQpmH,GAAG5iB,KAAKqpI,YAAY9pI,EAAES,KAAKkpI,WAAWjgI,KAAKjJ,KAAK4iB,IAAI,EAAEimH,aAAa,WAAW7oI,KAAKspI,WAAWtpI,KAAK2oI,QAAQ1zB,YAAYj1G,KAAK2oI,QAAQhoB,YAAY3gH,KAAK2oI,QAAQhoB,aAAa3gH,KAAK2oI,QAAQ53B,KAAK,aAAaA,KAAK,YAAY,EAAEg4B,WAAW,SAASnmH,GAAG5iB,KAAK2oI,QAAQrqI,QAAQirI,UAAU7tF,EAAE17C,KAAKqpI,aAAarpI,KAAKqpI,YAAY9pI,EAAES,KAAKkpI,WAAWjgI,KAAKjJ,KAAK4iB,IAAI,EAAEomH,QAAQ,SAASpmH,GAAG,IAAIjhB,EAAE3B,KAAK2oI,QAAQloH,EAAE9e,EAAE6nI,QAAQ3rI,EAAE2wF,GAAG7sF,EAAE61G,OAAOr6G,EAAEwE,EAAE2tG,KAAK4Q,mBAAmBriH,GAAG4iB,GAAGiuD,GAAEjuD,EAAE5iB,GAAG8D,EAAE00G,QAAQl5G,EAAEylB,EAAEwzF,OAAOj5G,EAAEylB,EAAE02F,UAAUt5G,KAAKspI,WAAW3nI,EAAEovG,KAAK,OAAOnuF,GAAGmuF,KAAK,OAAOnuF,EAAE,EAAEqmH,WAAW,SAASrmH,GAAG84B,EAAE17C,KAAKqpI,oBAAoBrpI,KAAKspI,WAAWtpI,KAAK2oI,QAAQ53B,KAAK,WAAWA,KAAK,UAAUnuF,EAAE,IAAI6mH,GAAGtsI,GAAE+xG,OAAO,CAAC5wG,QAAQ,CAAC49G,KAAK,IAAIgsB,GAAGwB,aAAY,EAAGC,UAAS,EAAGrxI,MAAM,GAAGgsH,IAAI,SAASslB,aAAa,EAAEjmH,QAAQ,EAAEkmH,aAAY,EAAGC,WAAW,IAAIx3B,KAAK,aAAampB,WAAW,aAAamB,qBAAoB,EAAGmN,gBAAe,EAAGC,WAAU,EAAGT,SAAQ,EAAGH,eAAe,CAAC,GAAG,IAAID,aAAa,IAAIz5G,WAAW,SAAS9M,EAAEjhB,GAAGm3B,EAAE94B,KAAK2B,GAAG3B,KAAKq2G,QAAQzzG,EAAEggB,EAAE,EAAEusF,MAAM,SAASvsF,GAAG5iB,KAAKq1H,cAAcr1H,KAAKq1H,eAAezyG,EAAEtkB,QAAQi2H,oBAAoBv0H,KAAKq1H,eAAezyG,EAAE1J,GAAG,WAAWlZ,KAAK49H,aAAa59H,MAAMA,KAAKiqI,YAAYjqI,KAAKylB,QAAQ,EAAE+rC,SAAS,SAAS5uC,GAAG5iB,KAAKuU,UAAUvU,KAAKuU,SAASumB,YAAY96B,KAAK1B,QAAQ0rI,WAAU,EAAGhqI,KAAKuU,SAAS2uH,sBAAsBljI,KAAKuU,SAASvU,KAAKq1H,eAAezyG,EAAE6vC,IAAI,WAAWzyD,KAAK49H,aAAa59H,MAAMA,KAAKkqI,cAAclqI,KAAKmqI,eAAe,EAAExD,UAAU,WAAW,MAAM,CAAC1tH,KAAKjZ,KAAKylB,OAAO2kH,UAAUpqI,KAAKylB,OAAO,EAAEwvF,UAAU,WAAW,OAAOj1G,KAAKq2G,OAAO,EAAE0G,UAAU,SAASn6F,GAAG,IAAIjhB,EAAE3B,KAAKq2G,QAAQ,OAAOr2G,KAAKq2G,QAAQzzG,EAAEggB,GAAG5iB,KAAKylB,SAASzlB,KAAK+wG,KAAK,OAAO,CAACuI,UAAU33G,EAAEy0G,OAAOp2G,KAAKq2G,SAAS,EAAE0J,gBAAgB,SAASn9F,GAAG,OAAO5iB,KAAK1B,QAAQsrI,aAAahnH,EAAE5iB,KAAKylB,QAAQ,EAAE4kH,QAAQ,WAAW,OAAOrqI,KAAK1B,QAAQ49G,IAAI,EAAEqB,QAAQ,SAAS36F,GAAG,OAAO5iB,KAAK1B,QAAQ49G,KAAKt5F,EAAE5iB,KAAKsvG,OAAOtvG,KAAKiqI,YAAYjqI,KAAKylB,UAAUzlB,KAAKm5G,QAAQn5G,KAAKsqI,UAAUtqI,KAAKm5G,OAAOn5G,KAAKm5G,OAAO76G,SAAS0B,IAAI,EAAEuqI,WAAW,WAAW,OAAOvqI,KAAKw3G,KAAK,EAAE/xF,OAAO,WAAW,IAAI7C,EAAE,OAAO5iB,KAAKw3G,OAAOx3G,KAAKsvG,OAAO1sF,EAAE5iB,KAAKsvG,KAAKuN,mBAAmB78G,KAAKq2G,SAASp0E,QAAQjiC,KAAK48G,QAAQh6F,IAAI5iB,IAAI,EAAEiqI,UAAU,WAAW,IAAiHxpH,EAA7GmC,EAAE5iB,KAAK1B,QAAQqD,EAAE,iBAAiB3B,KAAKq1H,cAAc,WAAW,QAAwCx3H,GAAE,EAAkYV,GAAE,GAAtasjB,EAAEmC,EAAEs5F,KAAKsB,WAAWx9G,KAAKw3G,UAAmBx3G,KAAKw3G,QAAQx3G,KAAKw3G,OAAOx3G,KAAKkqI,cAAcrsI,GAAE,EAAG+kB,EAAEtqB,QAAQmoB,EAAEnoB,MAAMsqB,EAAEtqB,OAAO,QAAQmoB,EAAEqgC,UAAUrgC,EAAE6jG,IAAI1hG,EAAE0hG,KAAK,KAAKp/D,GAAEzkC,EAAE9e,GAAGihB,EAAE+mH,WAAWlpH,EAAEovG,SAAS,IAAIpvG,EAAEyN,aAAa,OAAO,WAAWluB,KAAKw3G,MAAM/2F,EAAEmC,EAAEinH,aAAa7pI,KAAKkZ,GAAG,CAACxE,UAAU1U,KAAKwqI,cAActzF,SAASl3C,KAAKyqI,eAAezqI,KAAK1B,QAAQyrI,gBAAgBp0E,GAAEl1C,EAAE,QAAQzgB,KAAK0qI,YAAY1qI,OAAtVygB,EAA4VmC,EAAEs5F,KAAKwB,aAAa19G,KAAKwpI,YAAmBxpI,KAAKwpI,UAAUxpI,KAAKmqI,gBAAgBhtI,GAAE,GAAIsjB,IAAIykC,GAAEzkC,EAAE9e,GAAG8e,EAAE6jG,IAAI,IAAItkH,KAAKwpI,QAAQ/oH,EAAEmC,EAAEe,QAAQ,GAAG3jB,KAAK2qI,iBAAiB9sI,GAAGmC,KAAK46H,UAAUtqE,YAAYtwD,KAAKw3G,OAAOx3G,KAAK4qI,mBAAmBnqH,GAAGtjB,GAAG6C,KAAK46H,QAAQh4G,EAAE64G,YAAYnrE,YAAYtwD,KAAKwpI,QAAQ,EAAEU,YAAY,WAAWlqI,KAAK1B,QAAQurI,aAAa7pI,KAAKyyD,IAAI,CAAC/9C,UAAU1U,KAAKwqI,cAActzF,SAASl3C,KAAKyqI,eAAezqI,KAAK1B,QAAQyrI,gBAAgBpa,GAAE3vH,KAAKw3G,MAAM,QAAQx3G,KAAK0qI,YAAY1qI,MAAM8uH,GAAE9uH,KAAKw3G,OAAOx3G,KAAKymI,wBAAwBzmI,KAAKw3G,OAAOx3G,KAAKw3G,MAAM,IAAI,EAAE2yB,cAAc,WAAWnqI,KAAKwpI,SAAS1a,GAAE9uH,KAAKwpI,SAASxpI,KAAKwpI,QAAQ,IAAI,EAAE5sB,QAAQ,SAASh6F,GAAG5iB,KAAKw3G,OAAO9oC,GAAE1uE,KAAKw3G,MAAM50F,GAAG5iB,KAAKwpI,SAAS96D,GAAE1uE,KAAKwpI,QAAQ5mH,GAAG5iB,KAAK6qI,QAAQjoH,EAAEpjB,EAAEQ,KAAK1B,QAAQsrI,aAAa5pI,KAAKyqI,cAAc,EAAEK,cAAc,SAASloH,GAAG5iB,KAAKw3G,QAAQx3G,KAAKw3G,MAAMlxG,MAAMykI,OAAO/qI,KAAK6qI,QAAQjoH,EAAE,EAAEg7G,aAAa,SAASh7G,GAAGA,EAAE5iB,KAAKsvG,KAAKoR,uBAAuB1gH,KAAKq2G,QAAQzzF,EAAE3J,KAAK2J,EAAEgvB,QAAQ3P,QAAQjiC,KAAK48G,QAAQh6F,EAAE,EAAEgoH,iBAAiB,WAAW,IAAIhoH,EAAE5iB,KAAK1B,QAAQorI,cAAcxkF,GAAEllD,KAAKw3G,MAAM,uBAAuBx3G,KAAKwmI,qBAAqBxmI,KAAKw3G,OAAOkxB,KAAK9lH,EAAE5iB,KAAK1B,QAAQ0rI,UAAUhqI,KAAKuU,WAAWqO,EAAE5iB,KAAKuU,SAASumB,UAAU96B,KAAKuU,SAASuoH,WAAW98H,KAAKuU,SAAS,IAAIm0H,GAAG1oI,MAAM4iB,GAAG5iB,KAAKuU,SAASsmB,UAAU,EAAEqjF,WAAW,SAASt7F,GAAG,OAAO5iB,KAAK1B,QAAQqlB,QAAQf,EAAE5iB,KAAKsvG,MAAMtvG,KAAK2qI,iBAAiB3qI,IAAI,EAAE2qI,eAAe,WAAW,IAAI/nH,EAAE5iB,KAAK1B,QAAQqlB,QAAQ3jB,KAAKw3G,OAAO57B,GAAE57E,KAAKw3G,MAAM50F,GAAG5iB,KAAKwpI,SAAS5tD,GAAE57E,KAAKwpI,QAAQ5mH,EAAE,EAAE4nH,cAAc,WAAWxqI,KAAK8qI,cAAc9qI,KAAK1B,QAAQwrI,WAAW,EAAEW,aAAa,WAAWzqI,KAAK8qI,cAAc,EAAE,EAAEJ,YAAY,WAAW,IAAI9nH,EAAEjhB,EAAE8e,EAAEzgB,KAAKsvG,KAAK7uF,IAAImC,GAAGjhB,EAAE3B,KAAK1B,QAAQ49G,KAAK59G,SAAS67G,SAASzwD,EAAE/nD,EAAEw4G,UAAUzwD,EAAE,EAAE,GAAG/nD,EAAEA,EAAEmmI,WAAWp+E,EAAE/nD,EAAEmmI,YAAYp+E,EAAE,EAAE,GAAGjpC,EAAEu3G,UAAUh4H,KAAKq2G,QAAQ,CAACqgB,eAAe/0H,EAAEg1H,mBAAmB/zG,EAAE6hG,SAAS9iH,KAAK,EAAEqpI,gBAAgB,WAAW,OAAOhrI,KAAK1B,QAAQ49G,KAAK59G,QAAQgpI,WAAW,EAAE2D,kBAAkB,WAAW,OAAOjrI,KAAK1B,QAAQ49G,KAAK59G,QAAQipI,aAAa,IAAQ2D,GAAG/tI,GAAE+xG,OAAO,CAAC5wG,QAAQ,CAAC6sI,QAAO,EAAGv2H,MAAM,UAAUgjF,OAAO,EAAEj0E,QAAQ,EAAEynH,QAAQ,QAAQC,SAAS,QAAQC,UAAU,KAAKC,WAAW,KAAKvhE,MAAK,EAAGwhE,UAAU,KAAKC,YAAY,GAAGC,SAAS,UAAUhC,aAAY,EAAG9M,qBAAoB,GAAIgK,UAAU,SAAShkH,GAAG5iB,KAAK85H,UAAUl3G,EAAEm+F,YAAY/gH,KAAK,EAAEmvG,MAAM,WAAWnvG,KAAK85H,UAAU6R,UAAU3rI,MAAMA,KAAK4rI,SAAS5rI,KAAK85H,UAAU+R,SAAS7rI,KAAK,EAAEwxD,SAAS,WAAWxxD,KAAK85H,UAAUgS,YAAY9rI,KAAK,EAAE4R,OAAO,WAAW,OAAO5R,KAAKsvG,MAAMtvG,KAAK85H,UAAUiS,YAAY/rI,MAAMA,IAAI,EAAEygH,SAAS,SAAS79F,GAAG,OAAOkW,EAAE94B,KAAK4iB,GAAG5iB,KAAK85H,YAAY95H,KAAK85H,UAAUkS,aAAahsI,MAAMA,KAAK1B,QAAQ6sI,QAAQvoH,GAAGxmB,OAAOR,UAAU2wD,eAAezvD,KAAK8lB,EAAE,WAAW5iB,KAAKisI,iBAAiBjsI,IAAI,EAAEmnI,aAAa,WAAW,OAAOnnI,KAAK85H,WAAW95H,KAAK85H,UAAU0Q,cAAcxqI,MAAMA,IAAI,EAAEonI,YAAY,WAAW,OAAOpnI,KAAK85H,WAAW95H,KAAK85H,UAAUoS,aAAalsI,MAAMA,IAAI,EAAEuqI,WAAW,WAAW,OAAOvqI,KAAKsgH,KAAK,EAAEsrB,OAAO,WAAW5rI,KAAKmsI,WAAWnsI,KAAKi/H,SAAS,EAAEmN,gBAAgB,WAAW,OAAOpsI,KAAK1B,QAAQ6sI,OAAOnrI,KAAK1B,QAAQs5F,OAAO,EAAE,IAAI53F,KAAK85H,UAAUx7H,QAAQ+tI,WAAW,EAAE,IAAIC,GAAGpB,GAAGh8B,OAAO,CAAC5wG,QAAQ,CAAC0rE,MAAK,EAAGtuC,OAAO,IAAIhM,WAAW,SAAS9M,EAAEjhB,GAAGm3B,EAAE94B,KAAK2B,GAAG3B,KAAKq2G,QAAQzzG,EAAEggB,GAAG5iB,KAAKy8H,QAAQz8H,KAAK1B,QAAQo9B,MAAM,EAAEqhF,UAAU,SAASn6F,GAAG,IAAIjhB,EAAE3B,KAAKq2G,QAAQ,OAAOr2G,KAAKq2G,QAAQzzG,EAAEggB,GAAG5iB,KAAK4R,SAAS5R,KAAK+wG,KAAK,OAAO,CAACuI,UAAU33G,EAAEy0G,OAAOp2G,KAAKq2G,SAAS,EAAEpB,UAAU,WAAW,OAAOj1G,KAAKq2G,OAAO,EAAEk2B,UAAU,SAAS3pH,GAAG,OAAO5iB,KAAK1B,QAAQo9B,OAAO17B,KAAKy8H,QAAQ75G,EAAE5iB,KAAK4R,QAAQ,EAAE46H,UAAU,WAAW,OAAOxsI,KAAKy8H,OAAO,EAAEhc,SAAS,SAAS79F,GAAG,IAAIjhB,EAAEihB,GAAGA,EAAE8Y,QAAQ17B,KAAKy8H,QAAQ,OAAOyO,GAAGtvI,UAAU6kH,SAAS3jH,KAAKkD,KAAK4iB,GAAG5iB,KAAKusI,UAAU5qI,GAAG3B,IAAI,EAAEmsI,SAAS,WAAWnsI,KAAKysI,OAAOzsI,KAAKsvG,KAAKuN,mBAAmB78G,KAAKq2G,SAASr2G,KAAKisI,eAAe,EAAEA,cAAc,WAAW,IAAIrpH,EAAE5iB,KAAKy8H,QAAQ96H,EAAE3B,KAAK0sI,UAAU9pH,EAAEnC,EAAEzgB,KAAKosI,kBAAkBxpH,EAAE,CAACA,EAAEnC,EAAE9e,EAAE8e,GAAGzgB,KAAK2sI,UAAU,IAAI5kF,EAAE/nD,KAAKysI,OAAOhoB,SAAS7hG,GAAG5iB,KAAKysI,OAAO5pH,IAAID,GAAG,EAAEq8G,QAAQ,WAAWj/H,KAAKsvG,MAAMtvG,KAAK+rI,aAAa,EAAEA,YAAY,WAAW/rI,KAAK85H,UAAU8S,cAAc5sI,KAAK,EAAE6sI,OAAO,WAAW,OAAO7sI,KAAKy8H,UAAUz8H,KAAK85H,UAAU5iB,QAAQkE,WAAWp7G,KAAK2sI,UAAU,EAAEG,eAAe,SAASlqH,GAAG,OAAOA,EAAEwiG,WAAWplH,KAAKysI,SAASzsI,KAAKy8H,QAAQz8H,KAAKosI,iBAAiB,IAAQW,GAAGT,GAAGp9B,OAAO,CAACx/E,WAAW,SAAS9M,EAAEjhB,EAAE8e,GAAG,GAAGqY,EAAE94B,KAAK2B,EAAE,iBAAiBA,EAAE+2C,EAAE,CAAC,EAAEj4B,EAAE,CAACib,OAAO/5B,IAAIA,GAAG3B,KAAKq2G,QAAQzzG,EAAEggB,GAAG6E,MAAMznB,KAAK1B,QAAQo9B,QAAQ,MAAM,IAAI/nB,MAAM,+BAA+B3T,KAAKgtI,SAAShtI,KAAK1B,QAAQo9B,MAAM,EAAE6wG,UAAU,SAAS3pH,GAAG,OAAO5iB,KAAKgtI,SAASpqH,EAAE5iB,KAAK4R,QAAQ,EAAE46H,UAAU,WAAW,OAAOxsI,KAAKgtI,QAAQ,EAAEh2B,UAAU,WAAW,IAAIp0F,EAAE,CAAC5iB,KAAKy8H,QAAQz8H,KAAK0sI,UAAU1sI,KAAKy8H,SAAS,OAAO,IAAI74H,EAAE5D,KAAKsvG,KAAK4Q,mBAAmBlgH,KAAKysI,OAAOhoB,SAAS7hG,IAAI5iB,KAAKsvG,KAAK4Q,mBAAmBlgH,KAAKysI,OAAO5pH,IAAID,IAAI,EAAE69F,SAASyqB,GAAGtvI,UAAU6kH,SAAS0rB,SAAS,WAAW,IAAIvpH,EAAEjhB,EAAE8e,EAAE5iB,EAAEV,EAAEyG,EAAE5D,KAAKq2G,QAAQwH,IAAIniE,EAAE17C,KAAKq2G,QAAQyF,IAAIxqG,EAAEtR,KAAKsvG,KAAK3sG,EAAE2O,EAAEhT,QAAQ05G,IAAIr1G,EAAEmrB,WAAWg5F,EAAGh5F,UAAUjwB,EAAEH,KAAK6H,GAAG,IAAIpI,EAAE6C,KAAKgtI,SAASlmB,EAAGt9B,EAAE3rF,EAAE+kB,EAAEtR,EAAEotE,QAAQ,CAAChjC,EAAEv+C,EAAEyG,IAAIjC,EAAE2P,EAAEotE,QAAQ,CAAChjC,EAAEv+C,EAAEyG,IAAIjC,EAAEihB,EAAEC,IAAIlhB,GAAGgjH,SAAS,GAAGlkG,EAAEnP,EAAEq1G,UAAUhlH,GAAGm6G,IAAIj+G,EAAEH,KAAKw3D,MAAMx3D,KAAKugC,IAAI9gC,EAAEU,GAAGH,KAAK4H,IAAIo2C,EAAE79C,GAAGH,KAAK4H,IAAImb,EAAE5iB,KAAKH,KAAKugC,IAAIyd,EAAE79C,GAAGH,KAAKugC,IAAIxd,EAAE5iB,KAAKA,GAAG4pB,MAAM5pB,IAAI,IAAIA,IAAIA,EAAEV,EAAEO,KAAKugC,IAAIvgC,KAAK6H,GAAG,IAAIm2C,IAAI17C,KAAKysI,OAAO9qI,EAAE8iH,SAASnzG,EAAEmpH,kBAAkBz6H,KAAKy8H,QAAQh1G,MAAM5pB,GAAG,EAAE8D,EAAEpC,EAAE+R,EAAEotE,QAAQ,CAACj+D,EAAE7c,EAAE/F,IAAI0B,EAAES,KAAK0sI,SAAS/qI,EAAEnC,EAAEojB,EAAEpjB,IAAIrC,EAAEwF,EAAEgkH,UAAUhkH,EAAE+7E,QAAQ1+E,KAAKq2G,SAASoO,SAAS,CAACzkH,KAAKgtI,SAAS,KAAKhtI,KAAKysI,OAAOn7H,EAAEurG,mBAAmB78G,KAAKq2G,SAASr2G,KAAKy8H,QAAQz8H,KAAKysI,OAAOltI,EAAE+R,EAAEurG,mBAAmB1/G,GAAGoC,GAAGS,KAAKisI,eAAe,IAAQgB,GAAG/B,GAAGh8B,OAAO,CAAC5wG,QAAQ,CAAC4uI,aAAa,EAAEC,QAAO,GAAIz9G,WAAW,SAAS9M,EAAEjhB,GAAGm3B,EAAE94B,KAAK2B,GAAG3B,KAAKotI,YAAYxqH,EAAE,EAAEyqH,WAAW,WAAW,OAAOrtI,KAAKstI,QAAQ,EAAEC,WAAW,SAAS3qH,GAAG,OAAO5iB,KAAKotI,YAAYxqH,GAAG5iB,KAAK4R,QAAQ,EAAE5T,QAAQ,WAAW,OAAOgC,KAAKstI,SAASrvI,MAAM,EAAEuvI,kBAAkB,SAAS5qH,GAAG,IAAI,IAAIjhB,EAAE,IAAI8e,EAAE,KAAK5iB,EAAE8mI,GAAGxnI,EAAE,EAAEyG,EAAE5D,KAAKytI,OAAOxvI,OAAOd,EAAEyG,EAAEzG,IAAI,IAAI,IAAIu+C,EAAE17C,KAAKytI,OAAOtwI,GAAGmU,EAAE,EAAE3O,EAAE+4C,EAAEz9C,OAAOqT,EAAE3O,EAAE2O,IAAI,CAAC,IAAIonC,EAAE8d,EAAE19B,EAAEj7B,EAAE+kB,EAAE81B,EAAEgD,EAAEpqC,EAAE,GAAGklD,EAAE9a,EAAEpqC,IAAG,GAAIwnB,EAAEn3B,IAAIA,EAAEm3B,EAAErY,EAAE5iB,EAAE+kB,EAAE81B,EAAE8d,GAAG,CAAC,OAAO/1C,IAAIA,EAAEqN,SAASpwB,KAAKogC,KAAKn8B,IAAI8e,CAAC,EAAE6kG,UAAU,WAAW,IAAItlH,KAAKsvG,KAAK,MAAM,IAAI37F,MAAM,kDAAkD,IAAIiP,EAAEjhB,EAAE8e,EAAE5iB,EAAEV,EAAEyG,EAAE83C,EAAE17C,KAAK0tI,OAAO,GAAGp8H,EAAEoqC,EAAEz9C,OAAO,IAAIqT,EAAE,OAAO,KAAK,IAAI3P,EAAEihB,EAAE,EAAEA,EAAEtR,EAAE,EAAEsR,IAAIjhB,GAAG+5C,EAAE94B,GAAGwiG,WAAW1pE,EAAE94B,EAAE,IAAI,EAAE,GAAG,IAAIjhB,EAAE,OAAO3B,KAAKsvG,KAAK4Q,mBAAmBxkE,EAAE,IAAI,IAAIj7B,EAAEmC,EAAE,EAAEA,EAAEtR,EAAE,EAAEsR,IAAI,GAAG/kB,EAAE69C,EAAE94B,GAAGzlB,EAAEu+C,EAAE94B,EAAE,GAAGjhB,GAAG8e,GAAG7c,EAAE/F,EAAEunH,WAAWjoH,IAAI,OAAO6C,KAAKsvG,KAAK4Q,mBAAmB,CAAC/iH,EAAEoC,GAAGqE,GAAG6c,EAAE9e,GAAGiC,IAAIzG,EAAEoC,EAAE1B,EAAE0B,GAAGpC,EAAEqC,EAAEoE,GAAGzG,EAAEqC,EAAE3B,EAAE2B,IAAI,EAAEw3G,UAAU,WAAW,OAAOh3G,KAAKk3G,OAAO,EAAEy2B,UAAU,SAAS/qH,EAAEjhB,GAAG,OAAOA,EAAEA,GAAG3B,KAAK4tI,gBAAgBhrH,EAAEhgB,EAAEggB,GAAGjhB,EAAEG,KAAK8gB,GAAG5iB,KAAKk3G,QAAQhI,OAAOtsF,GAAG5iB,KAAK4R,QAAQ,EAAEw7H,YAAY,SAASxqH,GAAG5iB,KAAKk3G,QAAQ,IAAItzG,EAAE5D,KAAKstI,SAASttI,KAAK6tI,gBAAgBjrH,EAAE,EAAEgrH,cAAc,WAAW,OAAO9gC,GAAG9sG,KAAKstI,UAAUttI,KAAKstI,SAASttI,KAAKstI,SAAS,EAAE,EAAEO,gBAAgB,SAASjrH,GAAG,IAAI,IAAIjhB,EAAE,GAAG8e,EAAEqsF,GAAGlqF,GAAG/kB,EAAE,EAAEV,EAAEylB,EAAE3kB,OAAOJ,EAAEV,EAAEU,IAAI4iB,GAAG9e,EAAE9D,GAAG+E,EAAEggB,EAAE/kB,IAAImC,KAAKk3G,QAAQhI,OAAOvtG,EAAE9D,KAAK8D,EAAE9D,GAAGmC,KAAK6tI,gBAAgBjrH,EAAE/kB,IAAI,OAAO8D,CAAC,EAAEwqI,SAAS,WAAW,IAAIvpH,EAAE,IAAImlC,EAAE/nD,KAAK0tI,OAAO,GAAG1tI,KAAK8tI,gBAAgB9tI,KAAKstI,SAASttI,KAAK0tI,OAAO9qH,GAAG5iB,KAAKk3G,QAAQ2O,WAAWjjG,EAAEijG,YAAY7lH,KAAK+tI,aAAanrH,EAAE5iB,KAAKisI,gBAAgB,EAAEA,cAAc,WAAW,IAA6BrpH,EAAE,IAAInS,EAA/BmS,EAAE5iB,KAAKosI,kBAA4BxpH,GAAG5iB,KAAK+tI,eAAe/tI,KAAK2sI,UAAU,IAAI5kF,EAAE,CAAC/nD,KAAK+tI,aAAatuI,IAAIglH,SAAS7hG,GAAG5iB,KAAK+tI,aAAatpI,IAAIoe,IAAID,KAAK,EAAEkrH,gBAAgB,SAASlrH,EAAEjhB,EAAE8e,GAAG,IAAI5iB,EAAEV,EAAEyG,EAAEgf,EAAE,aAAa3lB,EAAEy+C,EAAE94B,EAAE3kB,OAAO,GAAG2F,EAAE,CAAC,IAAIzG,EAAE,GAAGU,EAAE,EAAEA,EAAE69C,EAAE79C,IAAIV,EAAEU,GAAGmC,KAAKsvG,KAAKuN,mBAAmBj6F,EAAE/kB,IAAI4iB,EAAEyuF,OAAO/xG,EAAEU,IAAI8D,EAAEG,KAAK3E,EAAE,MAAM,IAAIU,EAAE,EAAEA,EAAE69C,EAAE79C,IAAImC,KAAK8tI,gBAAgBlrH,EAAE/kB,GAAG8D,EAAE8e,EAAE,EAAEutH,YAAY,WAAW,IAAIprH,EAAE5iB,KAAK85H,UAAU5iB,QAAQ,GAAGl3G,KAAKytI,OAAO,GAAGztI,KAAK2sI,WAAW3sI,KAAK2sI,UAAUvxB,WAAWx4F,GAAG,GAAG5iB,KAAK1B,QAAQ6uI,OAAOntI,KAAKytI,OAAOztI,KAAK0tI,YAAY,IAAI,IAAI/rI,EAAE8e,EAAE5iB,EAAEV,EAAEyG,EAAE5D,KAAKytI,OAAO/xF,EAAE,EAAEpqC,EAAE,EAAE3O,EAAE3C,KAAK0tI,OAAOzvI,OAAOy9C,EAAE/4C,EAAE+4C,IAAI,IAAI/5C,EAAE,EAAE8e,GAAGtjB,EAAE6C,KAAK0tI,OAAOhyF,IAAIz9C,OAAO0D,EAAE8e,EAAE,EAAE9e,KAAK9D,EAAEgnI,GAAG1nI,EAAEwE,GAAGxE,EAAEwE,EAAE,GAAGihB,EAAEjhB,GAAE,MAAOiC,EAAE0N,GAAG1N,EAAE0N,IAAI,GAAG1N,EAAE0N,GAAGxP,KAAKjE,EAAE,IAAIA,EAAE,KAAKV,EAAEwE,EAAE,IAAIA,IAAI8e,EAAE,IAAI7c,EAAE0N,GAAGxP,KAAKjE,EAAE,IAAIyT,KAAK,EAAE28H,gBAAgB,WAAW,IAAI,IAAIrrH,EAAE5iB,KAAKytI,OAAO9rI,EAAE3B,KAAK1B,QAAQ4uI,aAAazsH,EAAE,EAAE5iB,EAAE+kB,EAAE3kB,OAAOwiB,EAAE5iB,EAAE4iB,IAAImC,EAAEnC,GAAGgkH,GAAG7hH,EAAEnC,GAAG9e,EAAE,EAAEs9H,QAAQ,WAAWj/H,KAAKsvG,OAAOtvG,KAAKguI,cAAchuI,KAAKiuI,kBAAkBjuI,KAAK+rI,cAAc,EAAEA,YAAY,WAAW/rI,KAAK85H,UAAUoU,YAAYluI,KAAK,EAAE8sI,eAAe,SAASlqH,EAAEjhB,GAAG,IAAI8e,EAAE5iB,EAAEV,EAAEyG,EAAE83C,EAAEpqC,EAAE3O,EAAE3C,KAAKosI,kBAAkB,IAAIpsI,KAAK2sI,YAAY3sI,KAAK2sI,UAAUz8E,SAASttC,GAAG,OAAM,EAAG,IAAInC,EAAE,EAAE7c,EAAE5D,KAAKytI,OAAOxvI,OAAOwiB,EAAE7c,EAAE6c,IAAI,IAAI5iB,EAAE,EAAEV,GAAGu+C,GAAGpqC,EAAEtR,KAAKytI,OAAOhtH,IAAIxiB,QAAQ,EAAEJ,EAAE69C,EAAEv+C,EAAEU,IAAI,IAAI8D,GAAG,IAAI9D,IAAI+mI,GAAGhiH,EAAEtR,EAAEnU,GAAGmU,EAAEzT,KAAK8E,EAAE,OAAM,EAAG,OAAM,CAAE,IAAIsqI,GAAGxH,MAAMV,GAAG,IAAIoJ,GAAGlB,GAAG/9B,OAAO,CAAC5wG,QAAQ,CAAC0rE,MAAK,GAAIhsE,QAAQ,WAAW,OAAOgC,KAAKstI,SAASrvI,SAAS+B,KAAKstI,SAAS,GAAGrvI,MAAM,EAAEqnH,UAAU,WAAW,IAAItlH,KAAKsvG,KAAK,MAAM,IAAI37F,MAAM,kDAAkD,IAAIiP,EAAEjhB,EAAE8e,EAAE5iB,EAAEV,EAAEyG,EAAE83C,EAAEpqC,EAAE3O,EAAE+1C,EAAE14C,KAAK0tI,OAAO,GAAGl3E,EAAE9d,EAAEz6C,OAAO,IAAIu4D,EAAE,OAAO,KAAK,IAAI5zC,EAAEhf,EAAE83C,EAAEpqC,EAAE,EAAE3P,EAAE60D,EAAE,EAAE5zC,EAAE4zC,EAAE70D,EAAEihB,IAAInC,EAAEi4B,EAAE91B,GAAG/kB,EAAE66C,EAAE/2C,GAAGxE,EAAEsjB,EAAEjhB,EAAE3B,EAAE0B,EAAE1B,EAAE2B,EAAEihB,EAAElhB,EAAEm8C,IAAIj7B,EAAElhB,EAAE1B,EAAE0B,GAAGpC,EAAEmU,IAAImP,EAAEjhB,EAAE3B,EAAE2B,GAAGrC,EAAEyG,GAAG,EAAEzG,EAAE,OAAOwF,EAAE,IAAIiB,EAAE80C,EAAE,GAAG,CAACgD,EAAE93C,EAAE0N,EAAE1N,GAAG5D,KAAKsvG,KAAK4Q,mBAAmBv9G,EAAE,EAAEkrI,gBAAgB,SAASjrH,GAAG,IAAgDjhB,GAA5CihB,EAAEqqH,GAAGrxI,UAAUiyI,gBAAgB/wI,KAAKkD,KAAK4iB,IAAO3kB,OAAO,OAAO,GAAG0D,GAAGihB,EAAE,aAAa3lB,GAAG2lB,EAAE,GAAGyiG,OAAOziG,EAAEjhB,EAAE,KAAKihB,EAAE62D,MAAM72D,CAAC,EAAEwqH,YAAY,SAASxqH,GAAGqqH,GAAGrxI,UAAUwxI,YAAYtwI,KAAKkD,KAAK4iB,GAAGkqF,GAAG9sG,KAAKstI,YAAYttI,KAAKstI,SAAS,CAACttI,KAAKstI,UAAU,EAAEM,cAAc,WAAW,OAAO9gC,GAAG9sG,KAAKstI,SAAS,IAAIttI,KAAKstI,SAASttI,KAAKstI,SAAS,IAAI,EAAE,EAAEU,YAAY,WAAW,IAAIprH,EAAE5iB,KAAK85H,UAAU5iB,QAA8Bv1G,EAAE,IAAI8O,EAA5B9O,EAAE3B,KAAK1B,QAAQs5F,OAAiBj2F,GAA2C,GAAxCihB,EAAE,IAAImlC,EAAEnlC,EAAEnjB,IAAIglH,SAAS9iH,GAAGihB,EAAEne,IAAIoe,IAAIlhB,IAAO3B,KAAKytI,OAAO,GAAGztI,KAAK2sI,WAAW3sI,KAAK2sI,UAAUvxB,WAAWx4F,GAAG,GAAG5iB,KAAK1B,QAAQ6uI,OAAOntI,KAAKytI,OAAOztI,KAAK0tI,YAAY,IAAI,IAAIjtH,EAAE5iB,EAAE,EAAEV,EAAE6C,KAAK0tI,OAAOzvI,OAAOJ,EAAEV,EAAEU,KAAK4iB,EAAEssF,GAAG/sG,KAAK0tI,OAAO7vI,GAAG+kB,GAAE,IAAK3kB,QAAQ+B,KAAKytI,OAAO3rI,KAAK2e,EAAE,EAAEsrH,YAAY,WAAW/rI,KAAK85H,UAAUoU,YAAYluI,MAAK,EAAG,EAAE8sI,eAAe,SAASlqH,GAAG,IAAIjhB,EAAE8e,EAAE5iB,EAAEV,EAAEyG,EAAE83C,EAAEpqC,EAAE3O,EAAE+1C,GAAE,EAAG,IAAI14C,KAAK2sI,YAAY3sI,KAAK2sI,UAAUz8E,SAASttC,GAAG,OAAM,EAAG,IAAIzlB,EAAE,EAAEmU,EAAEtR,KAAKytI,OAAOxvI,OAAOd,EAAEmU,EAAEnU,IAAI,IAAIyG,EAAE,EAAE83C,GAAG/4C,GAAGhB,EAAE3B,KAAKytI,OAAOtwI,IAAIc,QAAQ,EAAE2F,EAAEjB,EAAE+4C,EAAE93C,IAAI6c,EAAE9e,EAAEiC,GAAG/F,EAAE8D,EAAE+5C,GAAGj7B,EAAEjhB,EAAEojB,EAAEpjB,GAAG3B,EAAE2B,EAAEojB,EAAEpjB,GAAGojB,EAAErjB,GAAG1B,EAAE0B,EAAEkhB,EAAElhB,IAAIqjB,EAAEpjB,EAAEihB,EAAEjhB,IAAI3B,EAAE2B,EAAEihB,EAAEjhB,GAAGihB,EAAElhB,IAAIm5C,GAAGA,GAAG,OAAOA,GAAGu0F,GAAGrxI,UAAUkxI,eAAehwI,KAAKkD,KAAK4iB,GAAE,EAAG,IAAQwrH,GAAGlH,GAAGh4B,OAAO,CAACx/E,WAAW,SAAS9M,EAAEjhB,GAAGm3B,EAAE94B,KAAK2B,GAAG3B,KAAKmhH,QAAQ,CAAC,EAAEv+F,GAAG5iB,KAAKquI,QAAQzrH,EAAE,EAAEyrH,QAAQ,SAASzrH,GAAG,IAAIjhB,EAAE8e,EAAE5iB,EAAEV,EAAEY,EAAE6kB,GAAGA,EAAEA,EAAEowD,SAAS,GAAG71E,EAAE,CAAC,IAAIwE,EAAE,EAAE8e,EAAEtjB,EAAEc,OAAO0D,EAAE8e,EAAE9e,MAAM9D,EAAEV,EAAEwE,IAAIkyE,YAAYh2E,EAAE40E,UAAU50E,EAAEm1E,UAAUn1E,EAAEu1E,cAAcpzE,KAAKquI,QAAQxwI,GAAG,OAAOmC,IAAI,CAAC,IAAI4D,EAAE5D,KAAK1B,QAAQ,GAAGsF,EAAEuU,SAASvU,EAAEuU,OAAOyK,GAAG,OAAO5iB,KAAK,IAAI07C,EAAE4yF,GAAG1rH,EAAEhf,GAAG,OAAO83C,GAAGA,EAAEo3B,QAAQy7D,GAAG3rH,GAAG84B,EAAE8yF,eAAe9yF,EAAEp9C,QAAQ0B,KAAKyuI,WAAW/yF,GAAG93C,EAAE8qI,eAAe9qI,EAAE8qI,cAAc9rH,EAAE84B,GAAG17C,KAAK80G,SAASp5D,IAAI17C,IAAI,EAAEyuI,WAAW,SAAS7rH,GAAG,YAAO,IAASA,EAAE5iB,KAAK82G,UAAU92G,KAAKyuI,WAAWzuI,OAAO4iB,EAAEtkB,QAAQo6C,EAAE,CAAC,EAAE91B,EAAE4rH,gBAAgBxuI,KAAK2uI,eAAe/rH,EAAE5iB,KAAK1B,QAAQgI,OAAOtG,KAAK,EAAEygH,SAAS,SAAS9+G,GAAG,OAAO3B,KAAK82G,WAAU,SAASl0F,GAAG5iB,KAAK2uI,eAAe/rH,EAAEjhB,EAAE,GAAE3B,KAAK,EAAE2uI,eAAe,SAAS/rH,EAAEjhB,GAAGihB,EAAE69F,WAAW,mBAAmB9+G,IAAIA,EAAEA,EAAEihB,EAAEkwD,UAAUlwD,EAAE69F,SAAS9+G,GAAG,IAAI,SAAS2sI,GAAG1rH,EAAEjhB,GAAG,IAAI8e,EAAE5iB,EAAEV,EAAEyG,EAAE83C,EAAE,YAAY94B,EAAExH,KAAKwH,EAAE6vD,SAAS7vD,EAAEtR,EAAEoqC,EAAEA,EAAE03B,YAAY,KAAKzwE,EAAE,GAAG+1C,EAAE/2C,GAAGA,EAAEitI,aAAap4E,EAAE70D,GAAGA,EAAEktI,gBAAgBC,GAAG,IAAIx9H,IAAIoqC,EAAE,OAAO,KAAK,OAAOA,EAAEtgC,MAAM,IAAI,QAAQ,OAAO2zH,GAAGr2F,EAAE91B,EAAEnC,EAAE+1C,EAAEllD,GAAG3P,GAAG,IAAI,aAAa,IAAIxE,EAAE,EAAEyG,EAAE0N,EAAErT,OAAOd,EAAEyG,EAAEzG,IAAIsjB,EAAE+1C,EAAEllD,EAAEnU,IAAIwF,EAAEb,KAAKitI,GAAGr2F,EAAE91B,EAAEnC,EAAE9e,IAAI,OAAO,IAAIulI,GAAGvkI,GAAG,IAAI,aAAa,IAAI,kBAAkB,OAAO9E,EAAEmxI,GAAG19H,EAAE,eAAeoqC,EAAEtgC,KAAK,EAAE,EAAEo7C,GAAG,IAAIy2E,GAAGpvI,EAAE8D,GAAG,IAAI,UAAU,IAAI,eAAe,OAAO9D,EAAEmxI,GAAG19H,EAAE,YAAYoqC,EAAEtgC,KAAK,EAAE,EAAEo7C,GAAG,IAAI23E,GAAGtwI,EAAE8D,GAAG,IAAI,qBAAqB,IAAIxE,EAAE,EAAEyG,EAAE83C,EAAEm4B,WAAW51E,OAAOd,EAAEyG,EAAEzG,IAAI,CAAC,IAAI27B,EAAEw1G,GAAG,CAAC77D,SAAS/2B,EAAEm4B,WAAW12E,GAAGie,KAAK,UAAUouC,WAAW5mC,EAAE4mC,YAAY7nD,GAAGm3B,GAAGn2B,EAAEb,KAAKg3B,EAAE,CAAC,OAAO,IAAIouG,GAAGvkI,GAAG,QAAQ,MAAM,IAAIgR,MAAM,2BAA2B,CAAC,SAASo7H,GAAGnsH,EAAEjhB,EAAE8e,EAAE5iB,GAAG,OAAO+kB,EAAEA,EAAEjhB,EAAE8e,GAAG,IAAIgpH,GAAGhpH,EAAE5iB,GAAGA,EAAEoxI,uBAAuBpxI,EAAE,CAAC,SAASixI,GAAGlsH,GAAG,OAAO,IAAI3lB,EAAE2lB,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAG,CAAC,SAASosH,GAAGpsH,EAAEjhB,EAAE8e,GAAG,IAAI,IAAI5iB,EAAEV,EAAE,GAAGyG,EAAE,EAAE83C,EAAE94B,EAAE3kB,OAAO2F,EAAE83C,EAAE93C,IAAI/F,EAAE8D,EAAEqtI,GAAGpsH,EAAEhf,GAAGjC,EAAE,EAAE8e,IAAIA,GAAGquH,IAAIlsH,EAAEhf,IAAIzG,EAAE2E,KAAKjE,GAAG,OAAOV,CAAC,CAAC,SAAS+xI,GAAGtsH,EAAEjhB,GAAG,YAAO,KAAUihB,EAAEhgB,EAAEggB,IAAI0hG,IAAI,CAAC7jG,EAAEmC,EAAEi7F,IAAIl8G,GAAG8e,EAAEmC,EAAEk5F,IAAIn6G,GAAG8e,EAAEmC,EAAE0hG,IAAI3iH,IAAI,CAAC8e,EAAEmC,EAAEi7F,IAAIl8G,GAAG8e,EAAEmC,EAAEk5F,IAAIn6G,GAAG,CAAC,SAASwtI,GAAGvsH,EAAEjhB,EAAE8e,EAAE5iB,GAAG,IAAI,IAAIV,EAAE,GAAGyG,EAAE,EAAE83C,EAAE94B,EAAE3kB,OAAO2F,EAAE83C,EAAE93C,IAAIzG,EAAE2E,KAAKH,EAAEwtI,GAAGvsH,EAAEhf,GAAGjC,EAAE,EAAE8e,EAAE5iB,GAAGqxI,GAAGtsH,EAAEhf,GAAG/F,IAAI,OAAO8D,GAAG8e,GAAGtjB,EAAE2E,KAAK3E,EAAE,IAAIA,CAAC,CAAC,SAASiyI,GAAGxsH,EAAEjhB,GAAG,OAAOihB,EAAEkwD,QAAQp6B,EAAE,CAAC,EAAE91B,EAAEkwD,QAAQ,CAACL,SAAS9wE,IAAI4sI,GAAG5sI,EAAE,CAAC,SAAS4sI,GAAG3rH,GAAG,MAAM,YAAYA,EAAExH,MAAM,sBAAsBwH,EAAExH,KAAKwH,EAAE,CAACxH,KAAK,UAAUouC,WAAW,CAAC,EAAEipB,SAAS7vD,EAAE,CAA+F,SAASysH,GAAGzsH,EAAEjhB,GAAG,OAAO,IAAIysI,GAAGxrH,EAAEjhB,EAAE,CAAjIgnH,GAAG,CAAC2mB,UAAU,SAAS1sH,GAAG,OAAOwsH,GAAGpvI,KAAK,CAACob,KAAK,QAAQg4D,YAAY87D,GAAGlvI,KAAKi1G,YAAYryF,IAAI,GAAuC6mH,GAAG35B,QAAQ6Y,IAAIokB,GAAGj9B,QAAQ6Y,IAAI2jB,GAAGx8B,QAAQ6Y,IAAIskB,GAAGn9B,QAAQ,CAACw/B,UAAU,SAAS1sH,GAAG,IAAIjhB,GAAGmrG,GAAG9sG,KAAKstI,UAAU,OAAO8B,GAAGpvI,KAAK,CAACob,MAAMzZ,EAAE,QAAQ,IAAI,aAAayxE,YAAY+7D,GAAGnvI,KAAKstI,SAAS3rI,EAAE,EAAE,GAAE,EAAGihB,IAAI,IAAIurH,GAAGr+B,QAAQ,CAACw/B,UAAU,SAAS1sH,GAAG,IAAIjhB,GAAGmrG,GAAG9sG,KAAKstI,UAAU7sH,EAAE9e,IAAImrG,GAAG9sG,KAAKstI,SAAS,IAAuC,OAAnC1qH,EAAEusH,GAAGnvI,KAAKstI,SAAS7sH,EAAE,EAAE9e,EAAE,EAAE,GAAE,EAAGihB,GAAUwsH,GAAGpvI,KAAK,CAACob,MAAMqF,EAAE,QAAQ,IAAI,UAAU2yD,YAAYxwD,EAAEjhB,EAAEihB,EAAE,CAACA,IAAI,IAAImjH,GAAGj2B,QAAQ,CAACy/B,aAAa,SAAS5tI,GAAG,IAAI8e,EAAE,GAAG,OAAOzgB,KAAK82G,WAAU,SAASl0F,GAAGnC,EAAE3e,KAAK8gB,EAAE0sH,UAAU3tI,GAAG8wE,SAASW,YAAY,IAAGg8D,GAAGpvI,KAAK,CAACob,KAAK,aAAag4D,YAAY3yD,GAAG,EAAE6uH,UAAU,SAAS3tI,GAAG,IAAIihB,EAAE5iB,KAAK8yE,SAAS9yE,KAAK8yE,QAAQL,UAAUzyE,KAAK8yE,QAAQL,SAASr3D,KAAK,GAAG,eAAewH,EAAE,OAAO5iB,KAAKuvI,aAAa5tI,GAAG,IAAI8e,EAAE,uBAAuBmC,EAAE/kB,EAAE,GAAG,OAAOmC,KAAK82G,WAAU,SAASl0F,GAAGA,EAAE0sH,YAAY1sH,EAAEA,EAAE0sH,UAAU3tI,GAAG8e,EAAE5iB,EAAEiE,KAAK8gB,EAAE6vD,UAAU,uBAAuB7vD,EAAE2rH,GAAG3rH,IAAIxH,KAAKvd,EAAEiE,KAAKD,MAAMhE,EAAE+kB,EAAEowD,UAAUn1E,EAAEiE,KAAK8gB,GAAG,IAAGnC,EAAE2uH,GAAGpvI,KAAK,CAAC6zE,WAAWh2E,EAAEud,KAAK,uBAAuB,CAACA,KAAK,oBAAoB43D,SAASn1E,EAAE,IAAQgrH,GAAGwmB,GAAP,IAAUG,GAAGryI,GAAE+xG,OAAO,CAAC5wG,QAAQ,CAACqlB,QAAQ,EAAE2gG,IAAI,GAAGolB,aAAY,EAAGlC,aAAY,EAAGiI,gBAAgB,GAAG1E,OAAO,EAAEryB,UAAU,IAAIhpF,WAAW,SAAS9M,EAAEjhB,EAAE8e,GAAGzgB,KAAK0vI,KAAK9sH,EAAE5iB,KAAKk3G,QAAQxxG,EAAE/D,GAAGm3B,EAAE94B,KAAKygB,EAAE,EAAE0uF,MAAM,WAAWnvG,KAAK2vI,SAAS3vI,KAAK4vI,aAAa5vI,KAAK1B,QAAQqlB,QAAQ,GAAG3jB,KAAK2qI,kBAAkB3qI,KAAK1B,QAAQorI,cAAcxkF,GAAEllD,KAAK2vI,OAAO,uBAAuB3vI,KAAKwmI,qBAAqBxmI,KAAK2vI,SAAS3vI,KAAK46H,UAAUtqE,YAAYtwD,KAAK2vI,QAAQ3vI,KAAK4rI,QAAQ,EAAEp6E,SAAS,WAAWs9D,GAAE9uH,KAAK2vI,QAAQ3vI,KAAK1B,QAAQorI,aAAa1pI,KAAKymI,wBAAwBzmI,KAAK2vI,OAAO,EAAEzxB,WAAW,SAASt7F,GAAG,OAAO5iB,KAAK1B,QAAQqlB,QAAQf,EAAE5iB,KAAK2vI,QAAQ3vI,KAAK2qI,iBAAiB3qI,IAAI,EAAEygH,SAAS,SAAS79F,GAAG,OAAOA,EAAEe,SAAS3jB,KAAKk+G,WAAWt7F,EAAEe,SAAS3jB,IAAI,EAAEmnI,aAAa,WAAW,OAAOnnI,KAAKsvG,MAAM0f,GAAGhvH,KAAK2vI,QAAQ3vI,IAAI,EAAEonI,YAAY,WAAW,OAAOpnI,KAAKsvG,MAAM4f,GAAGlvH,KAAK2vI,QAAQ3vI,IAAI,EAAE6vI,OAAO,SAASjtH,GAAG,OAAO5iB,KAAK0vI,KAAK9sH,EAAE5iB,KAAK2vI,SAAS3vI,KAAK2vI,OAAO1H,IAAIrlH,GAAG5iB,IAAI,EAAE8vI,UAAU,SAASltH,GAAG,OAAO5iB,KAAKk3G,QAAQxxG,EAAEkd,GAAG5iB,KAAKsvG,MAAMtvG,KAAK4rI,SAAS5rI,IAAI,EAAE2mI,UAAU,WAAW,IAAI/jH,EAAE,CAAC3J,KAAKjZ,KAAK4rI,OAAOxB,UAAUpqI,KAAK4rI,QAAQ,OAAO5rI,KAAKq1H,gBAAgBzyG,EAAEmtH,SAAS/vI,KAAK49H,cAAch7G,CAAC,EAAEo9G,UAAU,SAASp9G,GAAG,OAAO5iB,KAAK1B,QAAQysI,OAAOnoH,EAAE5iB,KAAK8qI,gBAAgB9qI,IAAI,EAAEg3G,UAAU,WAAW,OAAOh3G,KAAKk3G,OAAO,EAAEqzB,WAAW,WAAW,OAAOvqI,KAAK2vI,MAAM,EAAEC,WAAW,WAAW,IAAIhtH,EAAE,QAAQ5iB,KAAK0vI,KAAK5uF,QAAQn/C,EAAE3B,KAAK2vI,OAAO/sH,EAAE5iB,KAAK0vI,KAAKn+H,GAAE,OAAO2zC,GAAEvjD,EAAE,uBAAuB3B,KAAKq1H,eAAenwE,GAAEvjD,EAAE,yBAAyB3B,KAAK1B,QAAQo6G,WAAWxzD,GAAEvjD,EAAE3B,KAAK1B,QAAQo6G,WAAW/2G,EAAEquI,cAAcx5E,EAAE70D,EAAEsuI,YAAYz5E,EAAE70D,EAAEskE,OAAO30D,EAAEtR,KAAK+wG,KAAK/wG,KAAK,QAAQ2B,EAAEukE,QAAQ50D,EAAEtR,KAAKkwI,gBAAgBlwI,KAAK,UAAUA,KAAK1B,QAAQkpI,aAAa,KAAKxnI,KAAK1B,QAAQkpI,cAAc7lI,EAAE6lI,aAAY,IAAKxnI,KAAK1B,QAAQkpI,YAAY,GAAGxnI,KAAK1B,QAAQkpI,aAAaxnI,KAAK1B,QAAQysI,QAAQ/qI,KAAK8qI,gBAAgBloH,EAAE5iB,KAAK0vI,KAAK/tI,EAAEsmI,KAAKtmI,EAAEsmI,IAAIjoI,KAAK0vI,KAAK/tI,EAAE2iH,IAAItkH,KAAK1B,QAAQgmH,IAAI,EAAEsZ,aAAa,SAASh7G,GAAG,IAAIjhB,EAAE3B,KAAKsvG,KAAKgnB,aAAa1zG,EAAE3J,MAAM2J,EAAE5iB,KAAKsvG,KAAKytB,8BAA8B/8H,KAAKk3G,QAAQt0F,EAAE3J,KAAK2J,EAAEgvB,QAAQnyC,IAAI8vH,GAAGvvH,KAAK2vI,OAAO/sH,EAAEjhB,EAAE,EAAEiqI,OAAO,WAAW,IAAIhpH,EAAE5iB,KAAK2vI,OAAOhuI,EAAE,IAAIomD,EAAE/nD,KAAKsvG,KAAKuN,mBAAmB78G,KAAKk3G,QAAQ8O,gBAAgBhmH,KAAKsvG,KAAKuN,mBAAmB78G,KAAKk3G,QAAQgP,iBAAiBzlG,EAAE9e,EAAEgkH,UAAUj3C,GAAE9rD,EAAEjhB,EAAElC,KAAKmjB,EAAEtc,MAAM5G,MAAM+gB,EAAElhB,EAAE,KAAKqjB,EAAEtc,MAAM3G,OAAO8gB,EAAEjhB,EAAE,IAAI,EAAEmrI,eAAe,WAAW/uD,GAAE57E,KAAK2vI,OAAO3vI,KAAK1B,QAAQqlB,QAAQ,EAAEmnH,cAAc,WAAW9qI,KAAK2vI,aAAQ,IAAS3vI,KAAK1B,QAAQysI,QAAQ,OAAO/qI,KAAK1B,QAAQysI,SAAS/qI,KAAK2vI,OAAOrpI,MAAMykI,OAAO/qI,KAAK1B,QAAQysI,OAAO,EAAEmF,gBAAgB,WAAWlwI,KAAK+wG,KAAK,SAAS,IAAInuF,EAAE5iB,KAAK1B,QAAQmxI,gBAAgB7sH,GAAG5iB,KAAK0vI,OAAO9sH,IAAI5iB,KAAK0vI,KAAK9sH,EAAE5iB,KAAK2vI,OAAO1H,IAAIrlH,EAAE,EAAE0iG,UAAU,WAAW,OAAOtlH,KAAKk3G,QAAQoO,WAAW,IAAI6qB,GAAGX,GAAGtgC,OAAO,CAAC5wG,QAAQ,CAAC8xI,UAAS,EAAGC,MAAK,EAAGC,iBAAgB,EAAGC,OAAM,EAAGC,aAAY,GAAIZ,WAAW,WAAW,IAAIhtH,EAAE,UAAU5iB,KAAK0vI,KAAK5uF,QAAQn/C,EAAE3B,KAAK2vI,OAAO/sH,EAAE5iB,KAAK0vI,KAAKn+H,GAAE,SAAS,GAAG2zC,GAAEvjD,EAAE,uBAAuB3B,KAAKq1H,eAAenwE,GAAEvjD,EAAE,yBAAyB3B,KAAK1B,QAAQo6G,WAAWxzD,GAAEvjD,EAAE3B,KAAK1B,QAAQo6G,WAAW/2G,EAAEquI,cAAcx5E,EAAE70D,EAAEsuI,YAAYz5E,EAAE70D,EAAE8uI,aAAan/H,EAAEtR,KAAK+wG,KAAK/wG,KAAK,QAAQ4iB,EAAE,CAAC,IAAI,IAAInC,EAAE9e,EAAE+uI,qBAAqB,UAAU7yI,EAAE,GAAGV,EAAE,EAAEA,EAAEsjB,EAAExiB,OAAOd,IAAIU,EAAEiE,KAAK2e,EAAEtjB,GAAG8qI,KAAKjoI,KAAK0vI,KAAK,EAAEjvH,EAAExiB,OAAOJ,EAAE,CAAC8D,EAAEsmI,IAAI,KAAK,CAAClqI,EAAEiC,KAAK0vI,QAAQ1vI,KAAK0vI,KAAK,CAAC1vI,KAAK0vI,QAAQ1vI,KAAK1B,QAAQgyI,iBAAiBl0I,OAAOR,UAAU2wD,eAAezvD,KAAK6E,EAAE2E,MAAM,eAAe3E,EAAE2E,MAAMqqI,UAAU,QAAQhvI,EAAEyuI,WAAWpwI,KAAK1B,QAAQ8xI,SAASzuI,EAAE0uI,OAAOrwI,KAAK1B,QAAQ+xI,KAAK1uI,EAAE4uI,QAAQvwI,KAAK1B,QAAQiyI,MAAM5uI,EAAE6uI,cAAcxwI,KAAK1B,QAAQkyI,YAAY,IAAI,IAAI5sI,EAAE,EAAEA,EAAE5D,KAAK0vI,KAAKzxI,OAAO2F,IAAI,CAAC,IAAI83C,EAAEnqC,GAAE,UAAUmqC,EAAEusF,IAAIjoI,KAAK0vI,KAAK9rI,GAAGjC,EAAE2uD,YAAY5U,EAAE,CAAC,CAAC,IAAQk1F,GAAGpB,GAAGtgC,OAAO,CAAC0gC,WAAW,WAAW,IAAIhtH,EAAE5iB,KAAK2vI,OAAO3vI,KAAK0vI,KAAKxqF,GAAEtiC,EAAE,uBAAuB5iB,KAAKq1H,eAAenwE,GAAEtiC,EAAE,yBAAyB5iB,KAAK1B,QAAQo6G,WAAWxzD,GAAEtiC,EAAE5iB,KAAK1B,QAAQo6G,WAAW91F,EAAEotH,cAAcx5E,EAAE5zC,EAAEqtH,YAAYz5E,CAAC,IAAQq6E,GAAE1zI,GAAE+xG,OAAO,CAAC5wG,QAAQ,CAACorI,aAAY,EAAG7uF,OAAO,CAAC,EAAE,GAAG69D,UAAU,GAAGpG,UAAK,GAAQ5iF,WAAW,SAAS9M,EAAEjhB,GAAGm3B,EAAE94B,KAAK4iB,GAAG5iB,KAAK8wI,QAAQnvI,CAAC,EAAEovI,OAAO,SAASnuH,GAAG,OAAOA,EAAE1b,UAAUjJ,OAAO2kB,EAAE5iB,KAAK8wI,QAAQxhC,MAAM6F,SAASn1G,OAAO4iB,EAAEkyF,SAAS90G,MAAMA,IAAI,EAAEgxI,MAAM,WAAW,OAAOhxI,KAAKsvG,MAAMtvG,KAAKsvG,KAAKwG,YAAY91G,MAAMA,IAAI,EAAEs5B,OAAO,SAAS1W,GAAG,OAAO5iB,KAAKsvG,KAAKtvG,KAAKgxI,SAAS9pI,UAAUjJ,OAAO+B,KAAK8wI,QAAQluH,EAAEA,EAAE5iB,KAAK8wI,QAAQ9wI,KAAKixI,eAAejxI,KAAK+wI,OAAOnuH,EAAE0sF,OAAOtvG,IAAI,EAAEmvG,MAAM,SAASvsF,GAAG5iB,KAAKq1H,cAAczyG,EAAEyyG,cAAcr1H,KAAKs6G,YAAYt6G,KAAKg1H,cAAcpyG,EAAEw4G,eAAex/C,GAAE57E,KAAKs6G,WAAW,GAAGj0F,aAAarmB,KAAKkxI,gBAAgBlxI,KAAK46H,UAAUtqE,YAAYtwD,KAAKs6G,YAAYt6G,KAAKylB,SAAS7C,EAAEw4G,eAAex/C,GAAE57E,KAAKs6G,WAAW,GAAGt6G,KAAKmnI,eAAennI,KAAK1B,QAAQorI,cAAcxkF,GAAEllD,KAAKs6G,WAAW,uBAAuBt6G,KAAKwmI,qBAAqBxmI,KAAKs6G,YAAY,EAAE9oD,SAAS,SAAS5uC,GAAGA,EAAEw4G,eAAex/C,GAAE57E,KAAKs6G,WAAW,GAAGt6G,KAAKkxI,eAAe5qH,WAAWhV,EAAEw9G,QAAE,EAAO9uH,KAAKs6G,YAAY,MAAMwU,GAAE9uH,KAAKs6G,YAAYt6G,KAAK1B,QAAQorI,cAAcl7D,GAAExuE,KAAKs6G,WAAW,uBAAuBt6G,KAAKymI,wBAAwBzmI,KAAKs6G,YAAY,EAAErF,UAAU,WAAW,OAAOj1G,KAAKq2G,OAAO,EAAE0G,UAAU,SAASn6F,GAAG,OAAO5iB,KAAKq2G,QAAQzzG,EAAEggB,GAAG5iB,KAAKsvG,OAAOtvG,KAAKukI,kBAAkBvkI,KAAKkpI,cAAclpI,IAAI,EAAEmxI,WAAW,WAAW,OAAOnxI,KAAKoxI,QAAQ,EAAEC,WAAW,SAASzuH,GAAG,OAAO5iB,KAAKoxI,SAASxuH,EAAE5iB,KAAKylB,SAASzlB,IAAI,EAAEuqI,WAAW,WAAW,OAAOvqI,KAAKs6G,UAAU,EAAE70F,OAAO,WAAWzlB,KAAKsvG,OAAOtvG,KAAKs6G,WAAWh0G,MAAMm7C,WAAW,SAASzhD,KAAKsxI,iBAAiBtxI,KAAKuxI,gBAAgBvxI,KAAKukI,kBAAkBvkI,KAAKs6G,WAAWh0G,MAAMm7C,WAAW,GAAGzhD,KAAKkpI,aAAa,EAAEvC,UAAU,WAAW,IAAI/jH,EAAE,CAAC3J,KAAKjZ,KAAKukI,gBAAgB6F,UAAUpqI,KAAKukI,iBAAiB,OAAOvkI,KAAKq1H,gBAAgBzyG,EAAEmtH,SAAS/vI,KAAK49H,cAAch7G,CAAC,EAAEw2F,OAAO,WAAW,QAAQp5G,KAAKsvG,MAAMtvG,KAAKsvG,KAAK6F,SAASn1G,KAAK,EAAEmnI,aAAa,WAAW,OAAOnnI,KAAKsvG,MAAM0f,GAAGhvH,KAAKs6G,YAAYt6G,IAAI,EAAEonI,YAAY,WAAW,OAAOpnI,KAAKsvG,MAAM4f,GAAGlvH,KAAKs6G,YAAYt6G,IAAI,EAAEixI,aAAa,SAASruH,GAAG,KAAKnC,EAAEzgB,KAAK8wI,SAASxhC,KAAK,OAAM,EAAG,GAAG7uF,aAAaymH,GAAG,CAAC,IAAIvlI,EAAE8e,EAAE,KAAK5iB,EAAEmC,KAAK8wI,QAAQ3vB,QAAQ,IAAIx/G,KAAK9D,EAAE,GAAGA,EAAE8D,GAAG2tG,KAAK,CAAC7uF,EAAE5iB,EAAE8D,GAAG,KAAK,CAAC,IAAI8e,EAAE,OAAM,EAAGzgB,KAAK8wI,QAAQrwH,CAAC,CAAC,IAAImC,EAAE,GAAGnC,EAAE6kG,UAAU1iG,EAAEnC,EAAE6kG,iBAAiB,GAAG7kG,EAAEw0F,UAAUryF,EAAEnC,EAAEw0F,gBAAgB,CAAC,IAAIx0F,EAAEu2F,UAAU,MAAM,IAAIrjG,MAAM,sCAAsCiP,EAAEnC,EAAEu2F,YAAYsO,WAAW,CAAC,OAAOtlH,KAAK+8G,UAAUn6F,GAAG5iB,KAAKsvG,MAAMtvG,KAAKylB,UAAS,CAAE,EAAE6rH,eAAe,WAAW,GAAGtxI,KAAKoxI,SAAS,CAAC,IAAIxuH,EAAE5iB,KAAKwxI,aAAa7vI,EAAE,mBAAmB3B,KAAKoxI,SAASpxI,KAAKoxI,SAASpxI,KAAK8wI,SAAS9wI,MAAMA,KAAKoxI,SAAS,GAAG,iBAAiBzvI,EAAEihB,EAAEytC,UAAU1uD,MAAM,CAAC,KAAKihB,EAAE6uH,iBAAiB7uH,EAAE6sC,YAAY7sC,EAAE+nG,YAAY/nG,EAAE0tC,YAAY3uD,EAAE,CAAC3B,KAAK+wG,KAAK,gBAAgB,CAAC,EAAEwzB,gBAAgB,WAAW,IAAI3hH,EAAEjhB,EAAE8e,EAAEzgB,KAAKsvG,OAAO3tG,EAAE3B,KAAKsvG,KAAKuN,mBAAmB78G,KAAKq2G,SAASzzF,EAAE8mC,EAAE1pD,KAAK1B,QAAQu8C,QAAQp6B,EAAEzgB,KAAK0xI,aAAa1xI,KAAKq1H,cAAc3mD,GAAE1uE,KAAKs6G,WAAW34G,EAAEkhB,IAAIpC,IAAImC,EAAEA,EAAEC,IAAIlhB,GAAGkhB,IAAIpC,GAAG9e,EAAE3B,KAAK2xI,kBAAkB/uH,EAAEpjB,EAAEihB,EAAEzgB,KAAK4xI,gBAAgBl0I,KAAKukC,MAAMjiC,KAAK6xI,gBAAgB,GAAGjvH,EAAErjB,EAAES,KAAKs6G,WAAWh0G,MAAMe,OAAO1F,EAAE,KAAK3B,KAAKs6G,WAAWh0G,MAAMgB,KAAKmZ,EAAE,KAAK,EAAEixH,WAAW,WAAW,MAAM,CAAC,EAAE,EAAE,IAAII,IAAIliE,GAAEkgC,QAAQ,CAACiiC,aAAa,SAASnvH,EAAEjhB,EAAE8e,EAAE5iB,GAAG,IAAIV,EAAEwE,EAAE,OAAOxE,aAAaylB,IAAIzlB,EAAE,IAAIylB,EAAE/kB,GAAGwzI,WAAW1vI,IAAI8e,GAAGtjB,EAAE4/G,UAAUt8F,GAAGtjB,CAAC,IAAIA,GAAE2yG,QAAQ,CAACiiC,aAAa,SAASnvH,EAAEjhB,EAAE8e,EAAE5iB,GAAG,IAAIV,EAAEsjB,EAAE,OAAOtjB,aAAaylB,GAAGkW,EAAE37B,EAAEU,GAAGV,EAAE2zI,QAAQ9wI,OAAO7C,EAAEwE,IAAI9D,EAAE8D,EAAE,IAAIihB,EAAE/kB,EAAEmC,OAAOqxI,WAAW5wH,GAAGtjB,CAAC,IAAI0zI,GAAE3hC,OAAO,CAAC5wG,QAAQ,CAACg0G,KAAK,YAAYz3D,OAAO,CAAC,EAAE,GAAG32C,SAAS,IAAI8tI,SAAS,GAAGj5F,UAAU,KAAKwwF,SAAQ,EAAG0I,sBAAsB,KAAKC,0BAA0B,KAAK9I,eAAe,CAAC,EAAE,GAAG+I,YAAW,EAAGC,aAAY,EAAGC,WAAU,EAAGC,kBAAiB,EAAG55B,UAAU,IAAIq4B,OAAO,SAASnuH,GAAG,QAAQA,EAAE1b,UAAUjJ,OAAO2kB,EAAE5iB,KAAK8wI,QAAQxhC,MAAM6F,SAASn1G,OAAO4iB,EAAEu2F,QAAQv2F,EAAEu2F,OAAO76G,QAAQ+zI,WAAWzvH,EAAEkzF,YAAYlzF,EAAEu2F,QAAQv2F,EAAEu2F,OAAOn5G,KAAK6wI,GAAEj1I,UAAUm1I,OAAOj0I,KAAKkD,KAAK4iB,EAAE,EAAEusF,MAAM,SAASvsF,GAAGiuH,GAAEj1I,UAAUuzG,MAAMryG,KAAKkD,KAAK4iB,GAAGA,EAAEmuF,KAAK,YAAY,CAACwhC,MAAMvyI,OAAOA,KAAK8wI,UAAU9wI,KAAK8wI,QAAQ//B,KAAK,YAAY,CAACwhC,MAAMvyI,OAAM,GAAIA,KAAK8wI,mBAAmB5F,IAAIlrI,KAAK8wI,QAAQ53H,GAAG,WAAW04G,IAAI,EAAEpgE,SAAS,SAAS5uC,GAAGiuH,GAAEj1I,UAAU41D,SAAS10D,KAAKkD,KAAK4iB,GAAGA,EAAEmuF,KAAK,aAAa,CAACwhC,MAAMvyI,OAAOA,KAAK8wI,UAAU9wI,KAAK8wI,QAAQ//B,KAAK,aAAa,CAACwhC,MAAMvyI,OAAM,GAAIA,KAAK8wI,mBAAmB5F,IAAIlrI,KAAK8wI,QAAQr+E,IAAI,WAAWm/D,IAAI,EAAE+U,UAAU,WAAW,IAAI/jH,EAAEiuH,GAAEj1I,UAAU+qI,UAAU7pI,KAAKkD,MAAM,YAAO,IAASA,KAAK1B,QAAQk0I,aAAaxyI,KAAK1B,QAAQk0I,aAAaxyI,KAAKsvG,KAAKhxG,QAAQm0I,qBAAqB7vH,EAAE8vH,SAAS1yI,KAAKgxI,OAAOhxI,KAAK1B,QAAQ6zI,aAAavvH,EAAE+vH,QAAQ3yI,KAAKkpI,YAAYtmH,CAAC,EAAEoyG,YAAY,WAAW,IAAIpyG,EAAE,gBAAgBjhB,EAAE3B,KAAKs6G,WAAW/oG,GAAE,MAAMqR,EAAE,KAAK5iB,KAAK1B,QAAQo6G,WAAW,IAAI,0BAA0Bj4F,EAAEzgB,KAAK4yI,SAASrhI,GAAE,MAAMqR,EAAE,mBAAmBjhB,GAAG3B,KAAKwxI,aAAajgI,GAAE,MAAMqR,EAAE,WAAWnC,GAAGuxG,GAAGrwH,GAAGowH,GAAG/xH,KAAKwxI,cAAc77E,GAAEh0D,EAAE,cAAciwH,IAAI5xH,KAAK6yI,cAActhI,GAAE,MAAMqR,EAAE,iBAAiBjhB,GAAG3B,KAAK8yI,KAAKvhI,GAAE,MAAMqR,EAAE,OAAO5iB,KAAK6yI,eAAe7yI,KAAK1B,QAAQ8zI,eAAe3xH,EAAEzgB,KAAK+yI,aAAaxhI,GAAE,IAAIqR,EAAE,gBAAgBjhB,IAAIusB,aAAa,OAAO,UAAUzN,EAAEyN,aAAa,aAAa,eAAezN,EAAE4uF,KAAK,SAAS5uF,EAAE4vC,UAAU,yCAAyCsF,GAAEl1C,EAAE,QAAQzgB,KAAKgxI,MAAMhxI,MAAM,EAAEuxI,cAAc,WAAW,IAAI3uH,EAAE5iB,KAAKwxI,aAAa7vI,EAAEihB,EAAEtc,MAAMma,GAAG9e,EAAEjC,MAAM,GAAGiC,EAAEqxI,WAAW,SAASpwH,EAAEm+B,aAAqJljD,GAAxI4iB,EAAE/iB,KAAK+B,IAAIghB,EAAEzgB,KAAK1B,QAAQ4F,UAAauc,EAAE/iB,KAAK+G,IAAIgc,EAAEzgB,KAAK1B,QAAQ0zI,UAAUrwI,EAAEjC,MAAM+gB,EAAE,EAAE,KAAK9e,EAAEqxI,WAAW,GAAGrxI,EAAEhC,OAAO,GAAjF8gB,EAAoFmC,EAAEotG,aAAgBhwH,KAAK1B,QAAQy6C,WAAU57C,EAAE,yBAAyBU,GAAGA,EAAE4iB,GAAG9e,EAAEhC,OAAO9B,EAAE,KAAKqnD,GAAEtiC,EAAEzlB,IAAIqxE,GAAE5rD,EAAEzlB,GAAG6C,KAAK6xI,gBAAgB7xI,KAAKs6G,WAAWv5D,WAAW,EAAE68E,aAAa,SAASh7G,GAAOA,EAAE5iB,KAAKsvG,KAAKoR,uBAAuB1gH,KAAKq2G,QAAQzzF,EAAE3J,KAAK2J,EAAEgvB,QAA7D,IAAqEjwC,EAAE3B,KAAK0xI,aAAahjE,GAAE1uE,KAAKs6G,WAAW13F,EAAEC,IAAIlhB,GAAG,EAAEunI,WAAW,SAAStmH,GAAG,IAAIjhB,EAAE8e,EAAE5iB,EAAEV,EAAEyG,EAAE83C,EAAEpqC,EAAE3O,EAAE3C,KAAK1B,QAAQirI,UAAUvpI,KAAKsvG,KAAKwnB,UAAU92H,KAAKsvG,KAAKwnB,SAASr1H,OAAOE,EAAE3B,KAAKsvG,KAAK7uF,EAAEw7C,SAASiqC,GAAGlmG,KAAKs6G,WAAW,gBAAgB,KAAK,EAAE75F,EAAEzgB,KAAKs6G,WAAW0V,aAAavvG,EAAE9d,EAAE3C,KAAK6xI,iBAAiBh0I,EAAE,IAAI4S,EAAEzQ,KAAK4xI,gBAAgBnxH,EAAEzgB,KAAK2xI,mBAAmBntB,KAAKh2B,GAAGxuF,KAAKs6G,aAAaz8G,EAAE8D,EAAEo5H,2BAA2Bl9H,GAAG+F,EAAE8lD,EAAE1pD,KAAK1B,QAAQ8qI,gBAAgBjsI,EAAEusD,EAAE1pD,KAAK1B,QAAQ2zI,uBAAuBruI,GAAGA,EAAE8lD,EAAE1pD,KAAK1B,QAAQ4zI,2BAA2BtuI,GAAG83C,EAAE/5C,EAAEgkH,UAAUr0G,EAAE,EAAEzT,EAAE0B,EAAEoD,EAAEiB,EAAErE,EAAEm8C,EAAEn8C,IAAI+R,EAAEzT,EAAE0B,EAAEoD,EAAE+4C,EAAEn8C,EAAEqE,EAAErE,GAAG1B,EAAE0B,EAAE+R,EAAEnU,EAAEoC,GAAGoD,EAAE,KAAK2O,EAAEzT,EAAE0B,EAAEpC,EAAEoC,GAAG1B,EAAE2B,EAAEihB,EAAE7c,EAAEpE,EAAEk8C,EAAEl8C,IAAImD,EAAE9E,EAAE2B,EAAEihB,EAAEi7B,EAAEl8C,EAAEoE,EAAEpE,GAAG3B,EAAE2B,EAAEmD,EAAExF,EAAEqC,EAAE,IAAImD,EAAE9E,EAAE2B,EAAErC,EAAEqC,IAAI8R,GAAG3O,IAAIhB,EAAEovG,KAAK,gBAAgB8lB,MAAM,CAACvlH,EAAE3O,GAAG,CAACmwG,QAAQlwF,GAAG,YAAYA,EAAExH,OAAO,EAAEs2H,WAAW,WAAW,OAAOhoF,EAAE1pD,KAAK8wI,SAAS9wI,KAAK8wI,QAAQ9F,gBAAgBhrI,KAAK8wI,QAAQ9F,kBAAkB,CAAC,EAAE,GAAG,KAAKiI,IAAIrjE,GAAE4hC,aAAa,CAACihC,mBAAkB,IAAK7iE,GAAEkgC,QAAQ,CAACyJ,UAAU,SAAS32F,EAAEjhB,EAAE8e,GAAG,OAAOzgB,KAAK+xI,aAAaD,GAAGlvH,EAAEjhB,EAAE8e,GAAGswH,OAAO/wI,MAAMA,IAAI,EAAE2gH,WAAW,SAAS/9F,GAAG,OAAOA,EAAE1b,UAAUjJ,OAAO2kB,EAAE5iB,KAAKm5G,SAASv2F,EAAEouH,QAAQhxI,IAAI,IAAI7C,GAAE2yG,QAAQ,CAACw6B,UAAU,SAAS1nH,EAAEjhB,GAAG,OAAO3B,KAAKm5G,OAAOn5G,KAAK+xI,aAAaD,GAAG9xI,KAAKm5G,OAAOv2F,EAAEjhB,GAAG3B,KAAKkzI,sBAAsBlzI,KAAKkZ,GAAG,CAACq5C,MAAMvyD,KAAKmzI,WAAWC,SAASpzI,KAAKqzI,YAAY5sI,OAAOzG,KAAK2gH,WAAWxsD,KAAKn0D,KAAKszI,aAAatzI,KAAKkzI,qBAAoB,GAAIlzI,IAAI,EAAEuzI,YAAY,WAAW,OAAOvzI,KAAKm5G,SAASn5G,KAAKyyD,IAAI,CAACF,MAAMvyD,KAAKmzI,WAAWC,SAASpzI,KAAKqzI,YAAY5sI,OAAOzG,KAAK2gH,WAAWxsD,KAAKn0D,KAAKszI,aAAatzI,KAAKkzI,qBAAoB,EAAGlzI,KAAKm5G,OAAO,MAAMn5G,IAAI,EAAEu5G,UAAU,SAAS32F,GAAG,OAAO5iB,KAAKm5G,QAAQn5G,KAAKm5G,OAAO83B,aAAaruH,IAAI5iB,KAAKm5G,OAAO43B,OAAO/wI,KAAKsvG,MAAMtvG,IAAI,EAAE2gH,WAAW,WAAW,OAAO3gH,KAAKm5G,QAAQn5G,KAAKm5G,OAAO63B,QAAQhxI,IAAI,EAAEwzI,YAAY,WAAW,OAAOxzI,KAAKm5G,QAAQn5G,KAAKm5G,OAAO7/E,OAAOt5B,MAAMA,IAAI,EAAEyzI,YAAY,WAAW,QAAQzzI,KAAKm5G,QAAQn5G,KAAKm5G,OAAOC,QAAQ,EAAEs6B,gBAAgB,SAAS9wH,GAAG,OAAO5iB,KAAKm5G,QAAQn5G,KAAKm5G,OAAOk4B,WAAWzuH,GAAG5iB,IAAI,EAAE2zI,SAAS,WAAW,OAAO3zI,KAAKm5G,MAAM,EAAEg6B,WAAW,SAASvwH,GAAG,IAAIjhB,EAAE3B,KAAKm5G,QAAQn5G,KAAKsvG,OAAO6iB,GAAGvvG,GAAGjhB,EAAEihB,EAAEsyF,OAAOtyF,EAAEjsB,OAAOqJ,KAAKm5G,OAAO23B,UAAUnvI,GAAGA,aAAaupI,IAAIlrI,KAAKm5G,OAAO23B,QAAQnvI,EAAE3B,KAAKu5G,UAAU32F,EAAEwzF,SAASp2G,KAAKsvG,KAAK6F,SAASn1G,KAAKm5G,QAAQn5G,KAAK2gH,aAAa3gH,KAAKu5G,UAAU32F,EAAEwzF,QAAQ,EAAEk9B,WAAW,SAAS1wH,GAAG5iB,KAAKm5G,OAAO4D,UAAUn6F,EAAEwzF,OAAO,EAAEi9B,YAAY,SAASzwH,GAAG,KAAKA,EAAEo3F,cAAc1N,SAAStsG,KAAKmzI,WAAWvwH,EAAE,IAAIiuH,GAAE3hC,OAAO,CAAC5wG,QAAQ,CAACg0G,KAAK,cAAcz3D,OAAO,CAAC,EAAE,GAAGm/B,UAAU,OAAO45D,WAAU,EAAGr0C,QAAO,EAAG57E,QAAQ,IAAIwrF,MAAM,SAASvsF,GAAGiuH,GAAEj1I,UAAUuzG,MAAMryG,KAAKkD,KAAK4iB,GAAG5iB,KAAKk+G,WAAWl+G,KAAK1B,QAAQqlB,SAASf,EAAEmuF,KAAK,cAAc,CAACv4G,QAAQwH,OAAOA,KAAK8wI,UAAU9wI,KAAK6zG,eAAe7zG,KAAK8wI,SAAS9wI,KAAK8wI,QAAQ//B,KAAK,cAAc,CAACv4G,QAAQwH,OAAM,GAAI,EAAEwxD,SAAS,SAAS5uC,GAAGiuH,GAAEj1I,UAAU41D,SAAS10D,KAAKkD,KAAK4iB,GAAGA,EAAEmuF,KAAK,eAAe,CAACv4G,QAAQwH,OAAOA,KAAK8wI,UAAU9wI,KAAK6jH,kBAAkB7jH,KAAK8wI,SAAS9wI,KAAK8wI,QAAQ//B,KAAK,eAAe,CAACv4G,QAAQwH,OAAM,GAAI,EAAE2mI,UAAU,WAAW,IAAI/jH,EAAEiuH,GAAEj1I,UAAU+qI,UAAU7pI,KAAKkD,MAAM,OAAOA,KAAK1B,QAAQs1I,YAAYhxH,EAAE8vH,SAAS1yI,KAAKgxI,OAAOpuH,CAAC,EAAEoyG,YAAY,WAAW,IAAIpyG,EAAE,oBAAoB5iB,KAAK1B,QAAQo6G,WAAW,IAAI,kBAAkB14G,KAAKq1H,cAAc,WAAW,QAAQr1H,KAAKwxI,aAAaxxI,KAAKs6G,WAAW/oG,GAAE,MAAMqR,EAAE,EAAE2uH,cAAc,WAAW,EAAErI,WAAW,WAAW,EAAE2K,aAAa,SAASjxH,GAAG,IAAIjhB,EAAE8e,EAAEzgB,KAAKsvG,KAAKzxG,EAAEmC,KAAKs6G,WAAWn9G,EAAEsjB,EAAE81G,uBAAuB91G,EAAE6kG,aAA+C1hH,GAAlC6c,EAAEA,EAAEs6G,2BAA2Bn4G,GAAK5iB,KAAK1B,QAAQ07E,WAAUt+B,EAAE79C,EAAEkjD,YAAYzvC,EAAEzT,EAAEmyH,aAAartH,EAAE+mD,EAAE1pD,KAAK1B,QAAQu8C,QAAQnC,EAAE14C,KAAK0xI,aAAajxH,EAAE,QAAQ7c,GAAGjC,EAAE+5C,EAAE,EAAEpqC,GAAG,WAAW1N,GAAGjC,EAAE+5C,EAAE,EAAE,IAAI/5C,EAAE,WAAWiC,EAAE83C,EAAE,EAAE,UAAU93C,EAAE,EAAE,SAASA,EAAE83C,EAAEj7B,EAAElhB,EAAEpC,EAAEoC,GAAGqE,EAAE,QAAQ,IAAIA,EAAE,OAAO83C,EAAE,GAAG/4C,EAAEpD,EAAEm5C,EAAEn5C,IAAI+R,EAAE,GAAGsR,EAAEA,EAAE6hG,SAAS/6D,EAAE/nD,EAAE8e,GAAE,IAAKoC,IAAIlgB,GAAGkgB,IAAI61B,GAAG81B,GAAE3wE,EAAE,yBAAyB2wE,GAAE3wE,EAAE,wBAAwB2wE,GAAE3wE,EAAE,uBAAuB2wE,GAAE3wE,EAAE,0BAA0BqnD,GAAErnD,EAAE,mBAAmB+F,GAAG8qE,GAAE7wE,EAAE+kB,EAAE,EAAE2hH,gBAAgB,WAAW,IAAI3hH,EAAE5iB,KAAKsvG,KAAKuN,mBAAmB78G,KAAKq2G,SAASr2G,KAAK6zI,aAAajxH,EAAE,EAAEs7F,WAAW,SAASt7F,GAAG5iB,KAAK1B,QAAQqlB,QAAQf,EAAE5iB,KAAKs6G,YAAY1+B,GAAE57E,KAAKs6G,WAAW13F,EAAE,EAAEg7G,aAAa,SAASh7G,GAAGA,EAAE5iB,KAAKsvG,KAAKoR,uBAAuB1gH,KAAKq2G,QAAQzzF,EAAE3J,KAAK2J,EAAEgvB,QAAQ5xC,KAAK6zI,aAAajxH,EAAE,EAAE8uH,WAAW,WAAW,OAAOhoF,EAAE1pD,KAAK8wI,SAAS9wI,KAAK8wI,QAAQ7F,oBAAoBjrI,KAAK1B,QAAQihG,OAAOv/F,KAAK8wI,QAAQ7F,oBAAoB,CAAC,EAAE,GAAG,KAAK6I,IAAIlkE,GAAEkgC,QAAQ,CAACikC,YAAY,SAASnxH,EAAEjhB,EAAE8e,GAAG,OAAOzgB,KAAK+xI,aAAakB,GAAGrwH,EAAEjhB,EAAE8e,GAAGswH,OAAO/wI,MAAMA,IAAI,EAAEg0I,aAAa,SAASpxH,GAAG,OAAOA,EAAEouH,QAAQhxI,IAAI,IAAI7C,GAAE2yG,QAAQ,CAACmkC,YAAY,SAASrxH,EAAEjhB,GAAG,OAAO3B,KAAKk0I,UAAUl0I,KAAKm0I,iBAAiBn0I,KAAKo0I,gBAAgBp0I,KAAKk0I,SAASl0I,KAAK+xI,aAAakB,GAAGjzI,KAAKk0I,SAAStxH,EAAEjhB,GAAG3B,KAAKq0I,2BAA2Br0I,KAAKk0I,SAAS51I,QAAQs1I,WAAW5zI,KAAKsvG,MAAMtvG,KAAKsvG,KAAK6F,SAASn1G,OAAOA,KAAK+zI,cAAc/zI,IAAI,EAAEo0I,cAAc,WAAW,OAAOp0I,KAAKk0I,WAAWl0I,KAAKq0I,0BAAyB,GAAIr0I,KAAKg0I,eAAeh0I,KAAKk0I,SAAS,MAAMl0I,IAAI,EAAEq0I,yBAAyB,SAASzxH,GAAG,IAAIjhB,EAAE8e,GAAGmC,GAAG5iB,KAAKs0I,wBAAwB3yI,EAAEihB,EAAE,MAAM,KAAKnC,EAAE,CAACha,OAAOzG,KAAKg0I,aAAa7/E,KAAKn0D,KAAKu0I,cAAcv0I,KAAKk0I,SAAS51I,QAAQs1I,UAAUnzH,EAAEoC,IAAI7iB,KAAKw0I,cAAc/zH,EAAE/L,UAAU1U,KAAKw0I,aAAa/zH,EAAEy2B,SAASl3C,KAAKg0I,aAAavzH,EAAE8xC,MAAMvyD,KAAKw0I,cAAcx0I,KAAKk0I,SAAS51I,QAAQihG,SAAS9+E,EAAEw2C,UAAUj3D,KAAKu0I,cAAcv0I,KAAK2B,GAAG8e,GAAGzgB,KAAKs0I,uBAAuB1xH,EAAE,EAAEmxH,YAAY,SAASnxH,GAAG,OAAO5iB,KAAKk0I,UAAUl0I,KAAKk0I,SAASjD,aAAaruH,IAAI5iB,KAAKk0I,SAASnD,OAAO/wI,KAAKsvG,MAAMtvG,IAAI,EAAEg0I,aAAa,WAAW,GAAGh0I,KAAKk0I,SAAS,OAAOl0I,KAAKk0I,SAASlD,OAAO,EAAEyD,cAAc,WAAW,OAAOz0I,KAAKk0I,UAAUl0I,KAAKk0I,SAAS56G,OAAOt5B,MAAMA,IAAI,EAAEm0I,cAAc,WAAW,OAAOn0I,KAAKk0I,SAAS96B,QAAQ,EAAEs7B,kBAAkB,SAAS9xH,GAAG,OAAO5iB,KAAKk0I,UAAUl0I,KAAKk0I,SAAS7C,WAAWzuH,GAAG5iB,IAAI,EAAE20I,WAAW,WAAW,OAAO30I,KAAKk0I,QAAQ,EAAEM,aAAa,SAAS5xH,IAAI5iB,KAAKk0I,WAAWl0I,KAAKsvG,MAAMtvG,KAAKsvG,KAAK/6F,UAAUvU,KAAKsvG,KAAK/6F,SAASqgI,WAAW50I,KAAKk0I,SAASpD,QAAQluH,EAAEsyF,OAAOtyF,EAAEjsB,OAAOqJ,KAAK+zI,YAAY/zI,KAAKk0I,SAAS51I,QAAQihG,OAAO38E,EAAEwzF,YAAO,GAAQ,EAAEm+B,aAAa,SAAS3xH,GAAG,IAAIjhB,EAAEihB,EAAEwzF,OAAOp2G,KAAKk0I,SAAS51I,QAAQihG,QAAQ38E,EAAEo3F,gBAAgBp3F,EAAE5iB,KAAKsvG,KAAK0rB,2BAA2Bp4G,EAAEo3F,eAAep3F,EAAE5iB,KAAKsvG,KAAKwrB,2BAA2Bl4G,GAAGjhB,EAAE3B,KAAKsvG,KAAK4Q,mBAAmBt9F,IAAI5iB,KAAKk0I,SAASn3B,UAAUp7G,EAAE,IAAI0lI,GAAGn4B,OAAO,CAAC5wG,QAAQ,CAAC67G,SAAS,CAAC,GAAG,IAAIpiG,MAAK,EAAG88H,MAAM,KAAKn8B,UAAU,oBAAoB8E,WAAW,SAAS56F,GAAOA,EAAEA,GAAG,QAAQA,EAAEk+B,QAAQl+B,EAAEhL,SAASC,cAAc,OAApD,IAA2DlW,EAAE3B,KAAK1B,QAAQ,OAAOqD,EAAEoW,gBAAgBouC,SAAS4oE,GAAGnsG,GAAGA,EAAE0tC,YAAY3uD,EAAEoW,OAAO6K,EAAEytC,WAAU,IAAK1uD,EAAEoW,KAAKpW,EAAEoW,KAAK,GAAGpW,EAAEkzI,QAAQlzI,EAAE+nD,EAAE/nD,EAAEkzI,OAAOjyH,EAAEtc,MAAMwuI,oBAAoBnzI,EAAEpC,EAAE,OAAOoC,EAAEnC,EAAE,MAAMQ,KAAK4nI,eAAehlH,EAAE,QAAQA,CAAC,EAAE86F,aAAa,WAAW,OAAO,IAAI,KAAK2pB,GAAG0N,QAAQ7M,GAAG,IAAI8M,GAAG73I,GAAE+xG,OAAO,CAAC5wG,QAAQ,CAAC22I,SAAS,IAAItxH,QAAQ,EAAE+9G,eAAej5C,GAAEgzB,OAAOy5B,mBAAkB,EAAGC,eAAe,IAAIpK,OAAO,EAAEh1D,OAAO,KAAKi+C,QAAQ,EAAEC,aAAQ,EAAOmhB,mBAAc,EAAOC,mBAAc,EAAOC,QAAO,EAAGhjC,KAAK,WAAWoG,UAAU,GAAG68B,WAAW,GAAG7lH,WAAW,SAAS9M,GAAGkW,EAAE94B,KAAK4iB,EAAE,EAAEusF,MAAM,WAAWnvG,KAAK+0H,iBAAiB/0H,KAAKw1I,QAAQ,CAAC,EAAEx1I,KAAKy1I,OAAO,CAAC,EAAEz1I,KAAKi2H,YAAY,EAAE2Q,UAAU,SAAShkH,GAAGA,EAAEikH,cAAc7mI,KAAK,EAAEwxD,SAAS,SAAS5uC,GAAG5iB,KAAK01I,kBAAkB5mB,GAAE9uH,KAAKs6G,YAAY13F,EAAEmkH,iBAAiB/mI,MAAMA,KAAKs6G,WAAW,KAAKt6G,KAAK21I,eAAU,CAAM,EAAExO,aAAa,WAAW,OAAOnnI,KAAKsvG,OAAO0f,GAAGhvH,KAAKs6G,YAAYt6G,KAAK41I,eAAel4I,KAAK+G,MAAMzE,IAAI,EAAEonI,YAAY,WAAW,OAAOpnI,KAAKsvG,OAAO4f,GAAGlvH,KAAKs6G,YAAYt6G,KAAK41I,eAAel4I,KAAK+B,MAAMO,IAAI,EAAEgwG,aAAa,WAAW,OAAOhwG,KAAKs6G,UAAU,EAAE4D,WAAW,SAASt7F,GAAG,OAAO5iB,KAAK1B,QAAQqlB,QAAQf,EAAE5iB,KAAK2qI,iBAAiB3qI,IAAI,EAAEggI,UAAU,SAASp9G,GAAG,OAAO5iB,KAAK1B,QAAQysI,OAAOnoH,EAAE5iB,KAAK8qI,gBAAgB9qI,IAAI,EAAE61I,UAAU,WAAW,OAAO71I,KAAK81I,QAAQ,EAAElkI,OAAO,WAAW,IAAIgR,EAAE,OAAO5iB,KAAKsvG,OAAOtvG,KAAK01I,mBAAmB9yH,EAAE5iB,KAAK+1I,WAAW/1I,KAAKsvG,KAAK8N,cAAcp9G,KAAK21I,YAAY31I,KAAK21I,UAAU/yH,EAAE5iB,KAAKg2I,iBAAiBh2I,KAAKi/H,WAAWj/H,IAAI,EAAE2mI,UAAU,WAAW,IAAI/jH,EAAE,CAACqzH,aAAaj2I,KAAKk2I,eAAe9L,UAAUpqI,KAAKi2H,WAAWh9G,KAAKjZ,KAAKi2H,WAAW0c,QAAQ3yI,KAAK+7H,YAAY,OAAO/7H,KAAK1B,QAAQojI,iBAAiB1hI,KAAKgkI,UAAUhkI,KAAKgkI,QAAQ5uG,EAAEp1B,KAAK+7H,WAAW/7H,KAAK1B,QAAQ62I,eAAen1I,OAAO4iB,EAAEuxC,KAAKn0D,KAAKgkI,SAAShkI,KAAKq1H,gBAAgBzyG,EAAEmtH,SAAS/vI,KAAK49H,cAAch7G,CAAC,EAAEuzH,WAAW,WAAW,OAAOv+H,SAASC,cAAc,MAAM,EAAEu+H,YAAY,WAAW,IAAIxzH,EAAE5iB,KAAK1B,QAAQ22I,SAAS,OAAOryH,aAAanS,EAAEmS,EAAE,IAAInS,EAAEmS,EAAEA,EAAE,EAAEkoH,cAAc,WAAW9qI,KAAKs6G,iBAAY,IAASt6G,KAAK1B,QAAQysI,QAAQ,OAAO/qI,KAAK1B,QAAQysI,SAAS/qI,KAAKs6G,WAAWh0G,MAAMykI,OAAO/qI,KAAK1B,QAAQysI,OAAO,EAAE6K,eAAe,SAAShzH,GAAG,IAAI,IAAIjhB,EAAE8e,EAAEzgB,KAAK46H,UAAUntC,SAAS5vF,GAAG+kB,GAAE,IAAK,KAAKzlB,EAAE,EAAEyG,EAAE6c,EAAExiB,OAAOd,EAAEyG,EAAEzG,IAAIwE,EAAE8e,EAAEtjB,GAAGmJ,MAAMykI,OAAOtqH,EAAEtjB,KAAK6C,KAAKs6G,YAAY34G,IAAI9D,EAAE+kB,EAAE/kB,GAAG8D,IAAIosB,SAASlwB,KAAKmC,KAAK1B,QAAQysI,OAAOltI,EAAE+kB,GAAG,EAAE,GAAG5iB,KAAK8qI,gBAAgB,EAAEH,eAAe,WAAW,GAAG3qI,KAAKsvG,OAAO7mB,GAAEoiC,MAAM,CAACjvC,GAAE57E,KAAKs6G,WAAWt6G,KAAK1B,QAAQqlB,SAAS,IAAIf,EAAEjhB,GAAG,IAAIyP,KAAKqP,GAAE,EAAG5iB,GAAE,EAAG,IAAI+kB,KAAK5iB,KAAKy1I,OAAO,CAAC,IAAIt4I,EAAEyG,EAAE5D,KAAKy1I,OAAO7yH,GAAGhf,EAAEitC,SAASjtC,EAAEyyI,SAASl5I,EAAEO,KAAK+B,IAAI,GAAGkC,EAAEiC,EAAEyyI,QAAQ,KAAKz6D,GAAEh4E,EAAEuX,GAAGhe,GAAGA,EAAE,EAAEsjB,GAAE,GAAI7c,EAAE0lG,OAAOzrG,GAAE,EAAGmC,KAAKs2I,cAAc1yI,GAAGA,EAAE0lG,QAAO,GAAI,CAACzrG,IAAImC,KAAKu2I,UAAUv2I,KAAKw2I,cAAc/1H,IAAIi7B,EAAE17C,KAAKy2I,YAAYz2I,KAAKy2I,WAAWl3I,EAAES,KAAK2qI,eAAe3qI,MAAM,CAAC,EAAEs2I,cAAc9/E,EAAEu+D,eAAe,WAAW/0H,KAAKs6G,aAAat6G,KAAKs6G,WAAW/oG,GAAE,MAAM,kBAAkBvR,KAAK1B,QAAQo6G,WAAW,KAAK14G,KAAK8qI,gBAAgB9qI,KAAK1B,QAAQqlB,QAAQ,GAAG3jB,KAAK2qI,iBAAiB3qI,KAAK46H,UAAUtqE,YAAYtwD,KAAKs6G,YAAY,EAAE07B,cAAc,WAAW,IAAIpzH,EAAE5iB,KAAK21I,UAAUh0I,EAAE3B,KAAK1B,QAAQ21H,QAAQ,QAAG,IAASrxG,EAAE,CAAC,IAAI,IAAInC,KAAKzgB,KAAKw1I,QAAQ/0H,EAAE3W,OAAO2W,GAAGzgB,KAAKw1I,QAAQ/0H,GAAGtF,GAAGsyE,SAASxvF,QAAQwiB,IAAImC,GAAG5iB,KAAKw1I,QAAQ/0H,GAAGtF,GAAG7U,MAAMykI,OAAOppI,EAAEjE,KAAKwgC,IAAItb,EAAEnC,GAAGzgB,KAAK02I,eAAej2H,KAAKquG,GAAE9uH,KAAKw1I,QAAQ/0H,GAAGtF,IAAInb,KAAK22I,mBAAmBl2H,GAAGzgB,KAAK42I,eAAen2H,UAAUzgB,KAAKw1I,QAAQ/0H,IAAI,IAAI5iB,EAAEmC,KAAKw1I,QAAQ5yH,GAAGzlB,EAAE6C,KAAKsvG,KAAK,OAAOzxG,KAAKA,EAAEmC,KAAKw1I,QAAQ5yH,GAAG,CAAC,GAAGzH,GAAG5J,GAAE,MAAM,+CAA+CvR,KAAKs6G,YAAYz8G,EAAEsd,GAAG7U,MAAMykI,OAAOppI,EAAE9D,EAAEo5C,OAAO95C,EAAEuhF,QAAQvhF,EAAEwpH,UAAUxpH,EAAEs9H,kBAAkB73G,GAAGqf,QAAQpkC,EAAEob,KAAK2J,EAAE5iB,KAAK62I,kBAAkBh5I,EAAEV,EAAEmoH,YAAYnoH,EAAEigH,WAAW5mD,EAAE34D,EAAEsd,GAAG4lC,aAAa/gD,KAAK82I,eAAej5I,IAAImC,KAAK+2I,OAAOl5I,CAAC,CAAC,EAAE64I,eAAelgF,EAAEogF,eAAepgF,EAAEsgF,eAAetgF,EAAEggF,YAAY,WAAW,GAAGx2I,KAAKsvG,KAAK,CAAC,IAAI1sF,EAAEjhB,EAAE8e,EAAE5iB,EAAEmC,KAAKsvG,KAAK8N,UAAU,GAAGv/G,EAAEmC,KAAK1B,QAAQ21H,SAASp2H,EAAEmC,KAAK1B,QAAQ01H,QAAQh0H,KAAK01I,sBAAsB,CAAC,IAAI9yH,KAAK5iB,KAAKy1I,QAAQh1H,EAAEzgB,KAAKy1I,OAAO7yH,IAAIo0H,OAAOv2H,EAAEowB,QAAQ,IAAIjuB,KAAK5iB,KAAKy1I,QAAQh1H,EAAEzgB,KAAKy1I,OAAO7yH,IAAIiuB,UAAUpwB,EAAE6oF,SAAS3nG,EAAE8e,EAAE04G,OAAOn5H,KAAKi3I,cAAct1I,EAAEpC,EAAEoC,EAAEnC,EAAEmC,EAAEujD,EAAEvjD,EAAEujD,EAAE,IAAIllD,KAAKk3I,gBAAgBv1I,EAAEpC,EAAEoC,EAAEnC,EAAEmC,EAAEujD,EAAEvjD,EAAEujD,EAAE,IAAI,IAAItiC,KAAK5iB,KAAKy1I,OAAOz1I,KAAKy1I,OAAO7yH,GAAGo0H,QAAQh3I,KAAKm3I,YAAYv0H,EAAE,CAAC,CAAC,EAAE+zH,mBAAmB,SAAS/zH,GAAG,IAAI,IAAIjhB,KAAK3B,KAAKy1I,OAAOz1I,KAAKy1I,OAAO9zI,GAAGw3H,OAAOj0E,IAAItiC,GAAG5iB,KAAKm3I,YAAYx1I,EAAE,EAAE+zI,gBAAgB,WAAW,IAAI,IAAI9yH,KAAK5iB,KAAKy1I,OAAOz1I,KAAKm3I,YAAYv0H,EAAE,EAAEszH,eAAe,WAAW,IAAI,IAAItzH,KAAK5iB,KAAKw1I,QAAQ1mB,GAAE9uH,KAAKw1I,QAAQ5yH,GAAGzH,IAAInb,KAAK42I,eAAe9sI,OAAO8Y,WAAW5iB,KAAKw1I,QAAQ5yH,GAAG5iB,KAAK01I,kBAAkB11I,KAAK21I,eAAU,CAAM,EAAEsB,cAAc,SAASr0H,EAAEjhB,EAAE8e,EAAE5iB,GAA2C4iB,GAAI,EAA5C,IAA6DtjB,IAAfA,EAAE,IAAIsT,IAAhDmS,EAAEllB,KAAKiqD,MAAM/kC,EAAE,MAAGjhB,EAAEjE,KAAKiqD,MAAMhmD,EAAE,MAA6BujD,EAAEzkC,EAAEzgB,KAAKo3I,iBAAiBj6I,IAAqB,OAAjBA,EAAE6C,KAAKy1I,OAAOt4I,KAAaA,EAAEmsG,OAAOnsG,EAAE65I,QAAO,GAAI75I,GAAGA,EAAEk5I,SAASl5I,EAAE65I,QAAO,GAAIn5I,EAAE4iB,GAAGzgB,KAAKi3I,cAAcr0H,EAAEjhB,EAAE8e,EAAE5iB,GAAG,EAAEq5I,gBAAgB,SAASt0H,EAAEjhB,EAAE8e,EAAE5iB,GAAG,IAAI,IAAIV,EAAE,EAAEylB,EAAEzlB,EAAE,EAAEylB,EAAE,EAAEzlB,IAAI,IAAI,IAAIyG,EAAE,EAAEjC,EAAEiC,EAAE,EAAEjC,EAAE,EAAEiC,IAAI,CAAC,IAAiB83C,IAAbA,EAAE,IAAIjrC,EAAEtT,EAAEyG,IAAQshD,EAAEzkC,EAAE,EAAEzgB,KAAKo3I,iBAAiB17F,KAAIA,EAAE17C,KAAKy1I,OAAO/5F,KAAMA,EAAE4tD,OAAO5tD,EAAEs7F,QAAO,GAAIt7F,GAAGA,EAAE26F,SAAS36F,EAAEs7F,QAAO,GAAIv2H,EAAE,EAAE5iB,GAAGmC,KAAKk3I,gBAAgB/5I,EAAEyG,EAAE6c,EAAE,EAAE5iB,GAAG,CAAC,EAAEo4H,WAAW,SAASrzG,GAAGA,EAAEA,IAAIA,EAAE+4G,OAAO/4G,EAAEy0G,OAAOr3H,KAAKq3I,SAASr3I,KAAKsvG,KAAKgW,YAAYtlH,KAAKsvG,KAAK8N,UAAUx6F,EAAEA,EAAE,EAAEg7G,aAAa,SAASh7G,GAAG5iB,KAAKq3I,SAASz0H,EAAEgvB,OAAOhvB,EAAE3J,MAAK,EAAG2J,EAAEm7G,SAAS,EAAEgY,WAAW,SAASnzH,GAAG,IAAIjhB,EAAE3B,KAAK1B,QAAQ,YAAO,IAASqD,EAAE0zI,eAAezyH,EAAEjhB,EAAE0zI,cAAc1zI,EAAE0zI,mBAAc,IAAS1zI,EAAEyzI,eAAezzI,EAAEyzI,cAAcxyH,EAAEjhB,EAAEyzI,cAAcxyH,CAAC,EAAEy0H,SAAS,SAASz0H,EAAEjhB,EAAE8e,EAAE5iB,GAAG,IAAIV,EAAEO,KAAKukC,MAAMtgC,GAA4IiC,GAAzIzG,OAAE,IAAS6C,KAAK1B,QAAQ21H,SAAS92H,EAAE6C,KAAK1B,QAAQ21H,cAAS,IAASj0H,KAAK1B,QAAQ01H,SAAS72H,EAAE6C,KAAK1B,QAAQ01H,aAAQ,EAAOh0H,KAAK+1I,WAAW54I,GAAK6C,KAAK1B,QAAQ42I,mBAAmB/3I,IAAI6C,KAAK21I,WAAU93I,IAAI+F,IAAI5D,KAAK21I,UAAUx4I,EAAE6C,KAAKs3I,eAAet3I,KAAKs3I,gBAAgBt3I,KAAKg2I,gBAAgBh2I,KAAKu3I,kBAAa,IAASp6I,GAAG6C,KAAKi/H,QAAQr8G,GAAGnC,GAAGzgB,KAAKw2I,cAAcx2I,KAAKu2I,WAAW91H,GAAGzgB,KAAKw3I,mBAAmB50H,EAAEjhB,EAAE,EAAE61I,mBAAmB,SAAS50H,EAAEjhB,GAAG,IAAI,IAAI8e,KAAKzgB,KAAKw1I,QAAQx1I,KAAK62I,kBAAkB72I,KAAKw1I,QAAQ/0H,GAAGmC,EAAEjhB,EAAE,EAAEk1I,kBAAkB,SAASj0H,EAAEjhB,EAAE8e,GAAG,IAAI5iB,EAAEmC,KAAKsvG,KAAKgnB,aAAa71G,EAAEmC,EAAE3J,MAAMtX,EAAEihB,EAAEq0B,OAAO4tE,WAAWhnH,GAAG4mH,SAASzkH,KAAKsvG,KAAKosB,mBAAmB/5H,EAAE8e,IAAIwhB,QAAQwmD,GAAEkjC,MAAM4D,GAAG3sG,EAAEzH,GAAGxZ,EAAE9D,GAAG6wE,GAAE9rD,EAAEzH,GAAGxZ,EAAE,EAAE41I,WAAW,WAAW,IAAI30H,EAAE5iB,KAAKsvG,KAAK3tG,EAAEihB,EAAEtkB,QAAQ05G,IAAIv3F,EAAEzgB,KAAKy3I,UAAUz3I,KAAKo2I,cAAcv4I,EAAEmC,KAAK21I,UAAUx4I,EAAE6C,KAAKsvG,KAAKqrB,oBAAoB36H,KAAK21I,WAAWx4I,IAAI6C,KAAK03I,iBAAiB13I,KAAK23I,qBAAqBx6I,IAAI6C,KAAK43I,OAAOj2I,EAAEslH,UAAUjnH,KAAK1B,QAAQg3I,QAAQ,CAAC53I,KAAKiqD,MAAM/kC,EAAE87D,QAAQ,CAAC,EAAE/8E,EAAEslH,QAAQ,IAAIppH,GAAG0B,EAAEkhB,EAAElhB,GAAG7B,KAAKC,KAAKilB,EAAE87D,QAAQ,CAAC,EAAE/8E,EAAEslH,QAAQ,IAAIppH,GAAG0B,EAAEkhB,EAAEjhB,IAAIQ,KAAK63I,OAAOl2I,EAAEulH,UAAUlnH,KAAK1B,QAAQg3I,QAAQ,CAAC53I,KAAKiqD,MAAM/kC,EAAE87D,QAAQ,CAAC/8E,EAAEulH,QAAQ,GAAG,GAAGrpH,GAAG2B,EAAEihB,EAAElhB,GAAG7B,KAAKC,KAAKilB,EAAE87D,QAAQ,CAAC/8E,EAAEulH,QAAQ,GAAG,GAAGrpH,GAAG2B,EAAEihB,EAAEjhB,GAAG,EAAEu8H,WAAW,WAAW/7H,KAAKsvG,OAAOtvG,KAAKsvG,KAAK+tB,gBAAgBr9H,KAAKi/H,SAAS,EAAE6Y,qBAAqB,SAASl1H,GAAG,IAAgBnC,GAAZ9e,EAAE3B,KAAKsvG,MAAS+tB,eAAe3/H,KAAK+G,IAAI9C,EAAEm8H,eAAen8H,EAAEy7G,WAAWz7G,EAAEy7G,UAAmFz7G,GAAzE8e,EAAE9e,EAAE20H,aAAa71G,EAAEzgB,KAAK21I,WAAW/yH,EAAEjhB,EAAE+8E,QAAQ97D,EAAE5iB,KAAK21I,WAAWhuF,QAAUhmD,EAAEgkH,UAAUhB,SAAS,EAAElkG,IAAG,OAAO,IAAIsnC,EAAEnlC,EAAE6hG,SAAS9iH,GAAGihB,EAAEC,IAAIlhB,GAAG,EAAEs9H,QAAQ,SAASr8G,GAAmB,GAAZjhB,EAAE3B,KAAKsvG,KAAU,CAAC,IAAI7uF,EAAEzgB,KAAK+1I,WAAWp0I,EAAEy7G,WAAW,QAAG,IAASx6F,IAAIA,EAAEjhB,EAAE2jH,kBAAa,IAAStlH,KAAK21I,UAAU,CAAC,IAAI93I,EAAE8D,EAAE3B,KAAK83I,qBAAqBl1H,GAAGzlB,EAAE6C,KAAK23I,qBAAqBh2I,GAAGiC,EAAEzG,EAAEmoH,YAAY5pE,EAAE,GAA6BpqC,GAA1B3P,EAAE3B,KAAK1B,QAAQi3I,WAAa,IAAIxtF,EAAE5qD,EAAEooH,gBAAgBd,SAAS,CAAC9iH,GAAGA,IAAIxE,EAAEqoH,cAAc3iG,IAAI,CAAClhB,GAAGA,MAAK,KAAKosB,SAAS5wB,EAAEsC,IAAIF,IAAIwuB,SAAS5wB,EAAEsC,IAAID,IAAIuuB,SAAS5wB,EAAEsH,IAAIlF,IAAIwuB,SAAS5wB,EAAEsH,IAAIjF,IAAI,MAAM,IAAImU,MAAM,iDAAiD,IAAI9V,KAAKmC,KAAKy1I,OAAO,CAAC,IAAI9yI,EAAE3C,KAAKy1I,OAAO53I,GAAGs7H,OAAOx2H,EAAEuiD,IAAIllD,KAAK21I,WAAWrkI,EAAE4+C,SAAS,IAAIz/C,EAAE9N,EAAEpD,EAAEoD,EAAEnD,MAAMQ,KAAKy1I,OAAO53I,GAAGgzC,SAAQ,EAAG,CAAC,GAAG,EAAEnzC,KAAKwgC,IAAIzd,EAAEzgB,KAAK21I,WAAW31I,KAAKq3I,SAASz0H,EAAEnC,OAAO,CAAC,IAAI,IAAIi4B,EAAEv7C,EAAEsC,IAAID,EAAEk5C,GAAGv7C,EAAEsH,IAAIjF,EAAEk5C,IAAI,IAAI,IAAI8d,EAAEr5D,EAAEsC,IAAIF,EAAEi3D,GAAGr5D,EAAEsH,IAAIlF,EAAEi3D,IAAI,CAAC,IAAI19B,EAAE/6B,EAAE,IAAI0S,EAAE+lD,EAAE9d,GAAG36C,EAAEmnD,EAAEllD,KAAK21I,UAAU31I,KAAK+3I,aAAah6I,MAAM+6B,EAAE94B,KAAKy1I,OAAOz1I,KAAKo3I,iBAAiBr5I,KAAK+6B,EAAE+X,SAAQ,EAAG6K,EAAE55C,KAAK/D,GAAG,CAAC,GAAG29C,EAAErqC,MAAK,SAASuR,EAAEjhB,GAAG,OAAOihB,EAAEwiG,WAAWxhH,GAAGjC,EAAEyjH,WAAWxhH,EAAE,IAAG,IAAI83C,EAAEz9C,OAAO,CAAC+B,KAAK81I,WAAW91I,KAAK81I,UAAS,EAAG91I,KAAK+wG,KAAK,YAAgB,IAAIrnD,EAAE9xC,SAASogI,yBAAnB,IAA4CxhF,EAAE,EAAEA,EAAE9a,EAAEz9C,OAAOu4D,IAAIx2D,KAAKi4I,SAASv8F,EAAE8a,GAAG9M,GAAG1pD,KAAK+2I,OAAO57H,GAAGm1C,YAAY5G,EAAE,CAAC,CAAC,CAAC,CAAC,EAAEquF,aAAa,SAASn1H,GAAG,IAAIjhB,EAAE3B,KAAKsvG,KAAKhxG,QAAQ05G,IAAI,IAAIr2G,EAAEklH,SAAS,CAAC,IAAIpmG,EAAEzgB,KAAK03I,iBAAiB,IAAI/1I,EAAEslH,UAAUrkG,EAAErjB,EAAEkhB,EAAEhhB,IAAIF,GAAGqjB,EAAErjB,EAAEkhB,EAAEhc,IAAIlF,KAAKoC,EAAEulH,UAAUtkG,EAAEpjB,EAAEihB,EAAEhhB,IAAID,GAAGojB,EAAEpjB,EAAEihB,EAAEhc,IAAIjF,GAAG,OAAM,CAAE,CAAC,OAAIQ,KAAK1B,QAAQy3E,SAAgBp0E,EAAE3B,KAAKk4I,oBAAoBt1H,GAAUld,EAAE1F,KAAK1B,QAAQy3E,QAAQ6vC,SAASjkH,GAAE,EAAEw2I,aAAa,SAASv1H,GAAG,OAAO5iB,KAAKk4I,oBAAoBl4I,KAAKo4I,iBAAiBx1H,GAAG,EAAEy1H,kBAAkB,SAASz1H,GAAG,IAAIjhB,EAAE3B,KAAKsvG,KAAK7uF,EAAEzgB,KAAKo2I,cAAcv4I,EAAE+kB,EAAEmiG,QAAQtkG,GAAc,OAAXA,EAAE5iB,EAAEglB,IAAIpC,GAAS,CAAC9e,EAAEglH,UAAU9oH,EAAE+kB,EAAEsiC,GAAGvjD,EAAEglH,UAAUlmG,EAAEmC,EAAEsiC,GAAG,EAAEgzF,oBAAoB,SAASt1H,GAAkD,OAAnBA,EAAE,IAAIhf,GAAlCgf,EAAE5iB,KAAKq4I,kBAAkBz1H,IAAa,GAAGA,EAAE,IAAa5iB,KAAK1B,QAAQg3I,OAAO1yH,EAAE5iB,KAAKsvG,KAAK6X,iBAAiBvkG,EAAE,EAAEw0H,iBAAiB,SAASx0H,GAAG,OAAOA,EAAErjB,EAAE,IAAIqjB,EAAEpjB,EAAE,IAAIojB,EAAEsiC,CAAC,EAAEkzF,iBAAiB,SAASx1H,GAAG,IAAmBjhB,EAAE,IAAI8O,IAArBmS,EAAEA,EAAEve,MAAM,MAAgB,IAAIue,EAAE,IAAI,OAAOjhB,EAAEujD,GAAGtiC,EAAE,GAAGjhB,CAAC,EAAEw1I,YAAY,SAASv0H,GAAG,IAAIjhB,EAAE3B,KAAKy1I,OAAO7yH,GAAGjhB,IAAImtH,GAAEntH,EAAEwZ,WAAWnb,KAAKy1I,OAAO7yH,GAAG5iB,KAAK+wG,KAAK,aAAa,CAACunC,KAAK32I,EAAEwZ,GAAGg+G,OAAOn5H,KAAKo4I,iBAAiBx1H,KAAK,EAAE21H,UAAU,SAAS31H,GAAGsiC,GAAEtiC,EAAE,gBAAgB,IAAIjhB,EAAE3B,KAAKo2I,cAAcxzH,EAAEtc,MAAM5G,MAAMiC,EAAEpC,EAAE,KAAKqjB,EAAEtc,MAAM3G,OAAOgC,EAAEnC,EAAE,KAAKojB,EAAEotH,cAAcx5E,EAAE5zC,EAAEqtH,YAAYz5E,EAAEiyB,GAAEoiC,OAAO7qH,KAAK1B,QAAQqlB,QAAQ,GAAGi4D,GAAEh5D,EAAE5iB,KAAK1B,QAAQqlB,QAAQ,EAAEs0H,SAAS,SAASr1H,EAAEjhB,GAAG,IAAI8e,EAAEzgB,KAAKw4I,YAAY51H,GAAG/kB,EAAEmC,KAAKo3I,iBAAiBx0H,GAAGzlB,EAAE6C,KAAKm2I,WAAWn2I,KAAKy4I,YAAY71H,GAAGtR,EAAEtR,KAAK04I,WAAW14I,KAAK4iB,IAAI5iB,KAAKu4I,UAAUp7I,GAAG6C,KAAKm2I,WAAWl4I,OAAO,GAAGsB,EAAE+R,EAAEtR,KAAK04I,WAAW14I,KAAK4iB,EAAE,KAAKzlB,IAAIuxE,GAAEvxE,EAAEsjB,GAAGzgB,KAAKy1I,OAAO53I,GAAG,CAACsd,GAAGhe,EAAEg8H,OAAOv2G,EAAEiuB,SAAQ,GAAIlvC,EAAE2uD,YAAYnzD,GAAG6C,KAAK+wG,KAAK,gBAAgB,CAACunC,KAAKn7I,EAAEg8H,OAAOv2G,GAAG,EAAE81H,WAAW,SAAS91H,EAAEjhB,EAAE8e,GAAG9e,GAAG3B,KAAK+wG,KAAK,YAAY,CAAChrF,MAAMpkB,EAAE22I,KAAK73H,EAAE04G,OAAOv2G,IAAI,IAAI/kB,EAAEmC,KAAKo3I,iBAAiBx0H,IAAInC,EAAEzgB,KAAKy1I,OAAO53I,MAAM4iB,EAAE41H,QAAQ,IAAIjlI,KAAKpR,KAAKsvG,KAAK8rB,eAAex/C,GAAEn7D,EAAEtF,GAAG,GAAGugC,EAAE17C,KAAKy2I,YAAYz2I,KAAKy2I,WAAWl3I,EAAES,KAAK2qI,eAAe3qI,QAAQygB,EAAE6oF,QAAO,EAAGtpG,KAAKw2I,eAAe70I,IAAIujD,GAAEzkC,EAAEtF,GAAG,uBAAuBnb,KAAK+wG,KAAK,WAAW,CAACunC,KAAK73H,EAAEtF,GAAGg+G,OAAOv2G,KAAK5iB,KAAK24I,mBAAmB34I,KAAK81I,UAAS,EAAG91I,KAAK+wG,KAAK,QAAQtoB,GAAEoiC,QAAQ7qH,KAAKsvG,KAAK8rB,cAAc77H,EAAES,KAAKw2I,YAAYx2I,MAAMsmB,WAAWhV,EAAEtR,KAAKw2I,YAAYx2I,MAAM,MAAM,EAAEw4I,YAAY,SAAS51H,GAAG,OAAOA,EAAEmiG,QAAQ/kH,KAAKo2I,eAAe3xB,SAASzkH,KAAK+2I,OAAO9/F,OAAO,EAAEwhG,YAAY,SAAS71H,GAAG,IAAIjhB,EAAE,IAAI8O,EAAEzQ,KAAK43I,OAAOlwF,EAAE9kC,EAAErjB,EAAES,KAAK43I,QAAQh1H,EAAErjB,EAAES,KAAK63I,OAAOnwF,EAAE9kC,EAAEpjB,EAAEQ,KAAK63I,QAAQj1H,EAAEpjB,GAAG,OAAOmC,EAAEujD,EAAEtiC,EAAEsiC,EAAEvjD,CAAC,EAAEg2I,qBAAqB,SAAS/0H,GAAG,IAAIjhB,EAAE3B,KAAKo2I,cAAc,OAAO,IAAIruF,EAAEnlC,EAAEnjB,IAAIulH,UAAUrjH,GAAGgmD,QAAQ/kC,EAAEne,IAAIugH,UAAUrjH,GAAGhE,OAAO8mH,SAAS,CAAC,EAAE,IAAI,EAAEk0B,eAAe,WAAW,IAAI,IAAI/1H,KAAK5iB,KAAKy1I,OAAO,IAAIz1I,KAAKy1I,OAAO7yH,GAAGyzH,OAAO,OAAM,EAAG,OAAM,CAAE,IAAQuC,GAAG5D,GAAG9lC,OAAO,CAAC5wG,QAAQ,CAAC01H,QAAQ,EAAEC,QAAQ,GAAG4kB,WAAW,MAAMC,aAAa,GAAGC,WAAW,EAAEC,KAAI,EAAGC,aAAY,EAAGC,cAAa,EAAG1R,aAAY,EAAG2R,gBAAe,GAAIzpH,WAAW,SAAS9M,EAAEjhB,GAAG3B,KAAK0vI,KAAK9sH,GAAGjhB,EAAEm3B,EAAE94B,KAAK2B,IAAIu3I,cAAczwD,GAAE0jC,QAAQ,EAAExqH,EAAEsyH,UAAUtyH,EAAEszI,SAASv3I,KAAKiqD,MAAMhmD,EAAEszI,SAAS,GAAGtzI,EAAEs3I,aAAat3I,EAAEo3I,aAAap3I,EAAEqyH,YAAYryH,EAAEo3I,aAAap3I,EAAEsyH,WAAWtyH,EAAEqyH,QAAQt2H,KAAK+G,IAAI,EAAE9C,EAAEqyH,UAAU,iBAAiBryH,EAAEk3I,aAAal3I,EAAEk3I,WAAWl3I,EAAEk3I,WAAWx0I,MAAM,KAAKrE,KAAKkZ,GAAG,aAAalZ,KAAKo5I,cAAc,EAAEvJ,OAAO,SAASjtH,EAAEjhB,GAAG,OAAO3B,KAAK0vI,OAAO9sH,QAAG,IAASjhB,IAAIA,GAAE,GAAI3B,KAAK0vI,KAAK9sH,EAAEjhB,GAAG3B,KAAK4R,SAAS5R,IAAI,EAAEm2I,WAAW,SAASvzH,EAAEjhB,GAAG,IAAI8e,EAAE7I,SAASC,cAAc,OAAO,OAAO89C,GAAEl1C,EAAE,OAAOnP,EAAEtR,KAAKq5I,YAAYr5I,KAAK2B,EAAE8e,IAAIk1C,GAAEl1C,EAAE,QAAQnP,EAAEtR,KAAKs5I,aAAat5I,KAAK2B,EAAE8e,KAAKzgB,KAAK1B,QAAQkpI,aAAa,KAAKxnI,KAAK1B,QAAQkpI,cAAc/mH,EAAE+mH,aAAY,IAAKxnI,KAAK1B,QAAQkpI,YAAY,GAAGxnI,KAAK1B,QAAQkpI,aAAa,iBAAiBxnI,KAAK1B,QAAQ66I,iBAAiB14H,EAAE04H,eAAen5I,KAAK1B,QAAQ66I,gBAAgB14H,EAAE6jG,IAAI,GAAG7jG,EAAEyN,aAAa,OAAO,gBAAgBzN,EAAEwnH,IAAIjoI,KAAKu5I,WAAW32H,GAAGnC,CAAC,EAAE84H,WAAW,SAAS32H,GAAG,IAAIjhB,EAAE,CAAC+5C,EAAE+sC,GAAE0jC,OAAO,MAAM,GAAGvoH,EAAE5D,KAAKw5I,cAAc52H,GAAGrjB,EAAEqjB,EAAErjB,EAAEC,EAAEojB,EAAEpjB,EAAE0lD,EAAEllD,KAAKy5I,kBAAkB,OAAOz5I,KAAKsvG,OAAOtvG,KAAKsvG,KAAKhxG,QAAQ05G,IAAI6O,WAAWjkG,EAAE5iB,KAAK03I,iBAAiBjzI,IAAIjF,EAAEojB,EAAEpjB,EAAEQ,KAAK1B,QAAQ06I,MAAMr3I,EAAEnC,EAAEojB,GAAGjhB,EAAE,MAAMihB,GAAGk2C,EAAE94D,KAAK0vI,KAAKh3F,EAAE/2C,EAAE3B,KAAK1B,SAAS,EAAE+6I,YAAY,SAASz2H,EAAEjhB,GAAG8mF,GAAEoiC,MAAMvkG,WAAWhV,EAAEsR,EAAE5iB,KAAK,KAAK2B,GAAG,GAAGihB,EAAE,KAAKjhB,EAAE,EAAE23I,aAAa,SAAS12H,EAAEjhB,EAAE8e,GAAG,IAAI5iB,EAAEmC,KAAK1B,QAAQw6I,aAAaj7I,GAAG8D,EAAEwsB,aAAa,SAAStwB,IAAI8D,EAAEsmI,IAAIpqI,GAAG+kB,EAAEnC,EAAE9e,EAAE,EAAEy3I,cAAc,SAASx2H,GAAGA,EAAE01H,KAAKryE,OAAO,IAAI,EAAEwzE,eAAe,WAAW,IAAI72H,EAAE5iB,KAAK21I,UAAUh0I,EAAE3B,KAAK1B,QAAQ21H,QAAQ,OAAOrxG,EAAE5iB,KAAK1B,QAAQ26I,YAAYt3I,EAAEihB,EAAEA,GAAG5iB,KAAK1B,QAAQy6I,UAAU,EAAES,cAAc,SAAS52H,GAAsD,OAAnDA,EAAEllB,KAAKwgC,IAAItb,EAAErjB,EAAEqjB,EAAEpjB,GAAGQ,KAAK1B,QAAQu6I,WAAW56I,OAAc+B,KAAK1B,QAAQu6I,WAAWj2H,EAAE,EAAE00H,cAAc,WAAW,IAAI10H,EAAEjhB,EAAE8e,EAAE,IAAImC,KAAK5iB,KAAKy1I,OAAOz1I,KAAKy1I,OAAO7yH,GAAGu2G,OAAOj0E,IAAIllD,KAAK21I,aAAal1H,EAAEzgB,KAAKy1I,OAAO7yH,GAAGzH,IAAI8qD,OAAOzP,EAAE/1C,EAAEylD,QAAQ1P,EAAE/1C,EAAEi5H,WAAWj5H,EAAEwnH,IAAIvmB,EAAE//G,EAAE3B,KAAKy1I,OAAO7yH,GAAGu2G,OAAOrK,GAAEruG,UAAUzgB,KAAKy1I,OAAO7yH,GAAG5iB,KAAK+wG,KAAK,YAAY,CAACunC,KAAK73H,EAAE04G,OAAOx3H,KAAK,EAAEw1I,YAAY,SAASv0H,GAAG,IAAIjhB,EAAE3B,KAAKy1I,OAAO7yH,GAAG,GAAGjhB,EAAE,OAAOA,EAAEwZ,GAAG+S,aAAa,MAAMwzF,GAAGszB,GAAGp5I,UAAUu7I,YAAYr6I,KAAKkD,KAAK4iB,EAAE,EAAE81H,WAAW,SAAS91H,EAAEjhB,EAAE8e,GAAG,GAAGzgB,KAAKsvG,QAAQ7uF,GAAGA,EAAE0N,aAAa,SAASuzF,GAAG,OAAOszB,GAAGp5I,UAAU88I,WAAW57I,KAAKkD,KAAK4iB,EAAEjhB,EAAE8e,EAAE,IAAI,SAASk5H,GAAG/2H,EAAEjhB,GAAG,OAAO,IAAIi3I,GAAGh2H,EAAEjhB,EAAE,CAAC,IAAIi4I,GAAGhB,GAAG1pC,OAAO,CAAC2qC,iBAAiB,CAACC,QAAQ,MAAMp0E,QAAQ,SAASwuD,OAAO,GAAG6lB,OAAO,GAAGxyI,OAAO,aAAayyI,aAAY,EAAG/nI,QAAQ,SAAS3T,QAAQ,CAAC05G,IAAI,KAAKiiC,WAAU,GAAIvqH,WAAW,SAAS9M,EAAEjhB,GAAG3B,KAAK0vI,KAAK9sH,EAAE,IAAInC,EAAE5iB,EAAE66C,EAAE,CAAC,EAAE14C,KAAK65I,kBAAkB,IAAIp5H,KAAK9e,EAAE8e,KAAKzgB,KAAK1B,UAAUT,EAAE4iB,GAAG9e,EAAE8e,IAAQmC,GAAGjhB,EAAEm3B,EAAE94B,KAAK2B,IAAIu3I,cAAczwD,GAAE0jC,OAAO,EAAE,EAA7C,IAA+ChvH,EAAE6C,KAAKo2I,cAAcv4I,EAAE6B,MAAMvC,EAAEoC,EAAEqjB,EAAE/kB,EAAE8B,OAAOxC,EAAEqC,EAAEojB,EAAE5iB,KAAKk6I,UAAUr8I,CAAC,EAAEsxG,MAAM,SAASvsF,GAAG5iB,KAAKm6I,KAAKn6I,KAAK1B,QAAQ05G,KAAKp1F,EAAEtkB,QAAQ05G,IAAIh4G,KAAKo6I,YAAYt+E,WAAW97D,KAAKk6I,UAAUjoI,SAAS,IAAItQ,EAAE,KAAK3B,KAAKo6I,YAAY,MAAM,MAAMp6I,KAAKk6I,UAAUv4I,GAAG3B,KAAKm6I,KAAKt5D,KAAK+3D,GAAGh9I,UAAUuzG,MAAMryG,KAAKkD,KAAK4iB,EAAE,EAAE22H,WAAW,SAAS32H,GAAG,IAAIjhB,EAAE3B,KAAKq4I,kBAAkBz1H,GAA4DnC,GAAR9e,GAArC8e,EAAEuG,GAAdvG,EAAEzgB,KAAKm6I,MAAWz7D,QAAQ/8E,EAAE,IAAI8e,EAAEi+D,QAAQ/8E,EAAE,MAASlC,IAAMghB,EAAEhc,KAAmI,OAA/H9C,GAAG,KAAK3B,KAAKo6I,aAAap6I,KAAKm6I,OAAOrrF,GAAG,CAACntD,EAAEnC,EAAEmC,EAAEpC,EAAEkhB,EAAEjhB,EAAEihB,EAAElhB,GAAG,CAACoC,EAAEpC,EAAEoC,EAAEnC,EAAEihB,EAAElhB,EAAEkhB,EAAEjhB,IAAI+nE,KAAK,MAAK9mD,EAAEm4H,GAAGh9I,UAAU29I,WAAWz8I,KAAKkD,KAAK4iB,IAAYksD,EAAE9uE,KAAKk6I,UAAUz5H,EAAEzgB,KAAK1B,QAAQ27I,YAAYj6I,KAAK1B,QAAQ27I,UAAU,SAAS,UAAUt4I,CAAC,EAAE04I,UAAU,SAASz3H,EAAEjhB,GAAG,OAAO+2C,EAAE14C,KAAKk6I,UAAUt3H,GAAGjhB,GAAG3B,KAAK4R,SAAS5R,IAAI,IAAI44I,GAAG0B,IAAIV,GAAGD,GAAGY,IAAI,SAAS33H,EAAEjhB,GAAG,OAAO,IAAIi4I,GAAGh3H,EAAEjhB,EAAE,EAAE,IAAI64I,GAAGr9I,GAAE+xG,OAAO,CAAC5wG,QAAQ,CAACiS,QAAQ,IAAImf,WAAW,SAAS9M,GAAGkW,EAAE94B,KAAK4iB,GAAGjgB,EAAE3C,MAAMA,KAAKmhH,QAAQnhH,KAAKmhH,SAAS,CAAC,CAAC,EAAEhS,MAAM,WAAWnvG,KAAKs6G,aAAat6G,KAAK+0H,iBAAiB/0H,KAAKq1H,eAAenwE,GAAEllD,KAAKs6G,WAAW,0BAA0Bt6G,KAAK46H,UAAUtqE,YAAYtwD,KAAKs6G,YAAYt6G,KAAKi/H,UAAUj/H,KAAKkZ,GAAG,SAASlZ,KAAKy6I,aAAaz6I,KAAK,EAAEwxD,SAAS,WAAWxxD,KAAKyyD,IAAI,SAASzyD,KAAKy6I,aAAaz6I,MAAMA,KAAK06I,mBAAmB,EAAE/T,UAAU,WAAW,IAAI/jH,EAAE,CAACwnH,UAAUpqI,KAAK4rI,OAAO3yH,KAAKjZ,KAAK26I,QAAQhI,QAAQ3yI,KAAKi/H,QAAQ2b,QAAQ56I,KAAK66I,YAAY,OAAO76I,KAAKq1H,gBAAgBzyG,EAAEmtH,SAAS/vI,KAAK86I,aAAal4H,CAAC,EAAEk4H,YAAY,SAASl4H,GAAG5iB,KAAK+6I,iBAAiBn4H,EAAEgvB,OAAOhvB,EAAE3J,KAAK,EAAE0hI,QAAQ,WAAW36I,KAAK+6I,iBAAiB/6I,KAAKsvG,KAAKgW,YAAYtlH,KAAKsvG,KAAK8N,UAAU,EAAE29B,iBAAiB,SAASn4H,EAAEjhB,GAAG,IAAI8e,EAAEzgB,KAAKsvG,KAAKgnB,aAAa30H,EAAE3B,KAAK01G,OAAO73G,EAAEmC,KAAKsvG,KAAKqW,UAAUd,WAAW,GAAG7kH,KAAK1B,QAAQiS,SAASpT,EAAE6C,KAAKsvG,KAAK5wB,QAAQ1+E,KAAKg7I,QAAQr5I,GAAG9D,EAAEA,EAAEgnH,YAAYpkG,GAAGoC,IAAI1lB,GAAGsnH,SAASzkH,KAAKsvG,KAAKosB,mBAAmB94G,EAAEjhB,IAAI8mF,GAAEkjC,MAAM4D,GAAGvvH,KAAKs6G,WAAWz8G,EAAE4iB,GAAGiuD,GAAE1uE,KAAKs6G,WAAWz8G,EAAE,EAAE+tI,OAAO,WAAW,IAAI,IAAIhpH,KAAK5iB,KAAKi/H,UAAUj/H,KAAK+6I,iBAAiB/6I,KAAKg7I,QAAQh7I,KAAK01G,OAAO11G,KAAKmhH,QAAQnhH,KAAKmhH,QAAQv+F,GAAGgpH,QAAQ,EAAEiP,WAAW,WAAW,IAAI,IAAIj4H,KAAK5iB,KAAKmhH,QAAQnhH,KAAKmhH,QAAQv+F,GAAGupH,UAAU,EAAEsO,aAAa,WAAW,IAAI,IAAI73H,KAAK5iB,KAAKmhH,QAAQnhH,KAAKmhH,QAAQv+F,GAAGq8G,SAAS,EAAEA,QAAQ,WAAW,IAAIr8G,EAAE5iB,KAAK1B,QAAQiS,QAAQ5O,EAAE3B,KAAKsvG,KAAKqW,UAAUllG,EAAEzgB,KAAKsvG,KAAKwrB,2BAA2Bn5H,EAAEkjH,YAAYjiG,IAAIqf,QAAQjiC,KAAKk3G,QAAQ,IAAInvD,EAAEtnC,EAAEA,EAAEoC,IAAIlhB,EAAEkjH,WAAW,EAAE,EAAEjiG,IAAIqf,SAASjiC,KAAKg7I,QAAQh7I,KAAKsvG,KAAKgW,YAAYtlH,KAAK01G,MAAM11G,KAAKsvG,KAAK8N,SAAS,IAAI69B,GAAGT,GAAGtrC,OAAO,CAAC5wG,QAAQ,CAAC+tI,UAAU,GAAG1F,UAAU,WAAW,IAAI/jH,EAAE43H,GAAG5+I,UAAU+qI,UAAU7pI,KAAKkD,MAAM,OAAO4iB,EAAEqzH,aAAaj2I,KAAKk7I,gBAAgBt4H,CAAC,EAAEs4H,gBAAgB,WAAWl7I,KAAKm7I,sBAAqB,CAAE,EAAEhsC,MAAM,WAAWqrC,GAAG5+I,UAAUuzG,MAAMryG,KAAKkD,MAAMA,KAAKo7I,OAAO,EAAErmB,eAAe,WAAW,IAAInyG,EAAE5iB,KAAKs6G,WAAW1iG,SAASC,cAAc,UAAU89C,GAAE/yC,EAAE,YAAY5iB,KAAKq7I,aAAar7I,MAAM21D,GAAE/yC,EAAE,+CAA+C5iB,KAAKs7I,SAASt7I,MAAM21D,GAAE/yC,EAAE,WAAW5iB,KAAKu7I,gBAAgBv7I,MAAM4iB,EAAE05G,yBAAwB,EAAGt8H,KAAKw7I,KAAK54H,EAAE2nG,WAAW,KAAK,EAAEmwB,kBAAkB,WAAWh/F,EAAE17C,KAAKy7I,uBAAuBz7I,KAAKw7I,KAAK1sB,GAAE9uH,KAAKs6G,YAAYqV,GAAE3vH,KAAKs6G,mBAAmBt6G,KAAKs6G,UAAU,EAAEmgC,aAAa,WAAW,IAAIz6I,KAAKm7I,qBAAqB,CAAC,IAAI,IAAIv4H,KAAK5iB,KAAK07I,cAAc,KAAK17I,KAAKmhH,QAAQnhH,KAAKmhH,QAAQv+F,GAAGq8G,UAAUj/H,KAAK27I,SAAS,CAAC,EAAE1c,QAAQ,WAAW,IAAIr8G,EAAEjhB,EAAE8e,EAAE5iB,EAAEmC,KAAKsvG,KAAK+tB,gBAAgBr9H,KAAKk3G,UAAUsjC,GAAG5+I,UAAUqjI,QAAQniI,KAAKkD,MAAM4iB,EAAE5iB,KAAKk3G,QAAQv1G,EAAE3B,KAAKs6G,WAAW75F,EAAEmC,EAAE+iG,UAAU9nH,EAAE4qF,GAAE0jC,OAAO,EAAE,EAAEz9C,GAAE/sE,EAAEihB,EAAEnjB,KAAKkC,EAAEjC,MAAM7B,EAAE4iB,EAAElhB,EAAEoC,EAAEhC,OAAO9B,EAAE4iB,EAAEjhB,EAAEmC,EAAE2E,MAAM5G,MAAM+gB,EAAElhB,EAAE,KAAKoC,EAAE2E,MAAM3G,OAAO8gB,EAAEjhB,EAAE,KAAKipF,GAAE0jC,QAAQnsH,KAAKw7I,KAAKt7I,MAAM,EAAE,GAAGF,KAAKw7I,KAAK59G,WAAWhb,EAAEnjB,IAAIF,GAAGqjB,EAAEnjB,IAAID,GAAGQ,KAAK+wG,KAAK,UAAU,EAAE66B,OAAO,WAAW4O,GAAG5+I,UAAUgwI,OAAO9uI,KAAKkD,MAAMA,KAAKm7I,uBAAuBn7I,KAAKm7I,sBAAqB,EAAGn7I,KAAKy6I,eAAe,EAAE9O,UAAU,SAAS/oH,GAAG5iB,KAAK47I,iBAAiBh5H,GAAGA,GAAG5iB,KAAKmhH,QAAQx+G,EAAEigB,IAAIA,GAAGi5H,OAAO,CAAC3mC,MAAMtyF,EAAEk5H,KAAK97I,KAAK+7I,UAAU9qF,KAAK,MAAMjxD,KAAK+7I,YAAY/7I,KAAK+7I,UAAU9qF,KAAKruC,GAAG5iB,KAAK+7I,UAAUn5H,EAAE5iB,KAAKg8I,WAAWh8I,KAAKg8I,YAAYh8I,KAAK+7I,SAAS,EAAElQ,SAAS,SAASjpH,GAAG5iB,KAAKi8I,eAAer5H,EAAE,EAAEkpH,YAAY,SAASlpH,GAAG,IAAenC,GAAX9e,EAAEihB,EAAEi5H,QAAW5qF,KAAKtvD,EAAEA,EAAEm6I,KAAKr7H,EAAEA,EAAEq7H,KAAKn6I,EAAE3B,KAAK+7I,UAAUp6I,EAAEA,EAAEA,EAAEsvD,KAAKxwC,EAAEzgB,KAAKg8I,WAAWv7H,SAASmC,EAAEi5H,cAAc77I,KAAKmhH,QAAQx+G,EAAEigB,IAAI5iB,KAAKi8I,eAAer5H,EAAE,EAAEmpH,YAAY,SAASnpH,GAAG5iB,KAAKk8I,oBAAoBt5H,GAAGA,EAAEupH,WAAWvpH,EAAEq8G,UAAUj/H,KAAKi8I,eAAer5H,EAAE,EAAEopH,aAAa,SAASppH,GAAG5iB,KAAK47I,iBAAiBh5H,GAAG5iB,KAAKi8I,eAAer5H,EAAE,EAAEg5H,iBAAiB,SAASh5H,GAAG,GAAG,iBAAiBA,EAAEtkB,QAAQgtI,UAAU,CAAC,IAAI,IAAI3pI,EAAE8e,EAAEmC,EAAEtkB,QAAQgtI,UAAUjnI,MAAM,SAASxG,EAAE,GAAGV,EAAE,EAAEA,EAAEsjB,EAAExiB,OAAOd,IAAI,CAAC,GAAGwE,EAAEmI,OAAO2W,EAAEtjB,IAAIsqB,MAAM9lB,GAAG,OAAO9D,EAAEiE,KAAKH,EAAE,CAACihB,EAAEtkB,QAAQ69I,WAAWt+I,CAAC,MAAM+kB,EAAEtkB,QAAQ69I,WAAWv5H,EAAEtkB,QAAQgtI,SAAS,EAAE2Q,eAAe,SAASr5H,GAAG5iB,KAAKsvG,OAAOtvG,KAAKk8I,oBAAoBt5H,GAAG5iB,KAAKy7I,eAAez7I,KAAKy7I,gBAAgBl8I,EAAES,KAAK27I,QAAQ37I,MAAM,EAAEk8I,oBAAoB,SAASt5H,GAAG,IAAIjhB,EAAEihB,EAAE+pH,YAAYhrI,GAAGihB,EAAEtkB,QAAQs5F,QAAQ,GAAG,EAAE53F,KAAK07I,cAAc17I,KAAK07I,eAAe,IAAI3zF,EAAE/nD,KAAK07I,cAAcxsC,OAAOtsF,EAAE+pH,UAAUltI,IAAIglH,SAAS,CAAC9iH,EAAEA,KAAK3B,KAAK07I,cAAcxsC,OAAOtsF,EAAE+pH,UAAUloI,IAAIoe,IAAI,CAAClhB,EAAEA,KAAK,EAAEg6I,QAAQ,WAAW37I,KAAKy7I,eAAe,KAAKz7I,KAAK07I,gBAAgB17I,KAAK07I,cAAcj8I,IAAIwlH,SAASjlH,KAAK07I,cAAcj3I,IAAIygH,SAASllH,KAAKo8I,SAASp8I,KAAKo7I,QAAQp7I,KAAK07I,cAAc,IAAI,EAAEU,OAAO,WAAW,IAAIx5H,EAAEjhB,EAAE3B,KAAK07I,cAAc/5I,GAAGihB,EAAEjhB,EAAEgkH,UAAU3lH,KAAKw7I,KAAKa,UAAU16I,EAAElC,IAAIF,EAAEoC,EAAElC,IAAID,EAAEojB,EAAErjB,EAAEqjB,EAAEpjB,KAAKQ,KAAKw7I,KAAKc,OAAOt8I,KAAKw7I,KAAK5qB,aAAa,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG5wH,KAAKw7I,KAAKa,UAAU,EAAE,EAAEr8I,KAAKs6G,WAAW56G,MAAMM,KAAKs6G,WAAW36G,QAAQK,KAAKw7I,KAAKe,UAAU,EAAEnB,MAAM,WAAW,IAAIx4H,EAAEjhB,EAAE8e,EAAEzgB,KAAK07I,cAAc17I,KAAKw7I,KAAKc,OAAO77H,IAAI9e,EAAE8e,EAAEklG,UAAU3lH,KAAKw7I,KAAKgB,YAAYx8I,KAAKw7I,KAAK94F,KAAKjiC,EAAEhhB,IAAIF,EAAEkhB,EAAEhhB,IAAID,EAAEmC,EAAEpC,EAAEoC,EAAEnC,GAAGQ,KAAKw7I,KAAK9jE,QAAQ13E,KAAKy8I,UAAS,EAAG,IAAI,IAAI5+I,EAAEmC,KAAKg8I,WAAWn+I,EAAEA,EAAEA,EAAEozD,KAAKruC,EAAE/kB,EAAEq3G,QAAQz0F,GAAGmC,EAAE+pH,WAAW/pH,EAAE+pH,UAAUvxB,WAAW36F,KAAKmC,EAAEmpH,cAAc/rI,KAAKy8I,UAAS,EAAGz8I,KAAKw7I,KAAKe,SAAS,EAAErO,YAAY,SAAStrH,EAAEjhB,GAAG,GAAG3B,KAAKy8I,SAAS,CAAC,IAAIh8H,EAAE5iB,EAAEV,EAAEyG,EAAE83C,EAAE94B,EAAE6qH,OAAOn8H,EAAEoqC,EAAEz9C,OAAO0E,EAAE3C,KAAKw7I,KAAK,GAAGlqI,EAAE,CAAC,IAAI3O,EAAE65I,YAAY/7H,EAAE,EAAEA,EAAEnP,EAAEmP,IAAI,CAAC,IAAI5iB,EAAE,EAAEV,EAAEu+C,EAAEj7B,GAAGxiB,OAAOJ,EAAEV,EAAEU,IAAI+F,EAAE83C,EAAEj7B,GAAG5iB,GAAG8E,EAAE9E,EAAE,SAAS,UAAU+F,EAAErE,EAAEqE,EAAEpE,GAAGmC,GAAGgB,EAAE67E,WAAW,CAACx+E,KAAK08I,YAAY/5I,EAAEigB,EAAE,CAAC,CAAC,EAAEgqH,cAAc,SAAShqH,GAAG,IAAIjhB,EAAE8e,EAAE5iB,EAAEV,EAAE6C,KAAKy8I,WAAW75H,EAAEiqH,WAAWlrI,EAAEihB,EAAE6pH,OAAOhsH,EAAEzgB,KAAKw7I,KAAK39I,EAAEH,KAAK+G,IAAI/G,KAAKukC,MAAMrf,EAAE65G,SAAS,GAAG,IAAIt/H,GAAGO,KAAK+G,IAAI/G,KAAKukC,MAAMrf,EAAE8pH,UAAU,IAAI7uI,GAAGA,KAAK4iB,EAAE67H,OAAO77H,EAAEvgB,MAAM,EAAE/C,IAAIsjB,EAAE+7H,YAAY/7H,EAAEvnB,IAAIyI,EAAEpC,EAAEoC,EAAEnC,EAAErC,EAAEU,EAAE,EAAE,EAAEH,KAAK6H,IAAG,GAAI,GAAGpI,GAAGsjB,EAAE87H,UAAUv8I,KAAK08I,YAAYj8H,EAAEmC,GAAG,EAAE85H,YAAY,SAAS95H,EAAEjhB,GAAG,IAAI8e,EAAE9e,EAAErD,QAAQmiB,EAAEupD,OAAOpnD,EAAE+5H,YAAYl8H,EAAEgrH,YAAY7oH,EAAEg6H,UAAUn8H,EAAE+qH,WAAW/qH,EAAE7L,MAAMgO,EAAEonD,KAAKvpD,EAAEirH,UAAU,YAAYjrH,EAAE0qH,QAAQ,IAAI1qH,EAAEm3E,SAASh1E,EAAEi6H,aAAaj6H,EAAEi6H,YAAYl7I,EAAErD,SAASqD,EAAErD,QAAQ69I,YAAY,IAAIv5H,EAAE+5H,YAAYl8H,EAAEkD,QAAQf,EAAEk6H,UAAUr8H,EAAEm3E,OAAOh1E,EAAEm6H,YAAYt8H,EAAE7L,MAAMgO,EAAEwoH,QAAQ3qH,EAAE2qH,QAAQxoH,EAAEyoH,SAAS5qH,EAAE4qH,SAASzoH,EAAEuoH,SAAS,EAAEmQ,SAAS,SAAS14H,GAAG,IAAI,IAAIjhB,EAAE8e,EAAE5iB,EAAEmC,KAAKsvG,KAAK2rB,uBAAuBr4G,GAAGzlB,EAAE6C,KAAKg8I,WAAW7+I,EAAEA,EAAEA,EAAE8zD,MAAMtvD,EAAExE,EAAE+3G,OAAO52G,QAAQorI,aAAa/nI,EAAEmrI,eAAejvI,MAAM,UAAU+kB,EAAExH,MAAM,aAAawH,EAAExH,OAAOpb,KAAKsvG,KAAK8sB,gBAAgBz6H,KAAK8e,EAAE9e,IAAI3B,KAAKg9I,aAAav8H,GAAG,CAACA,GAAGmC,EAAE,EAAEy4H,aAAa,SAASz4H,GAAG,IAAIjhB,GAAG3B,KAAKsvG,MAAMtvG,KAAKsvG,KAAK/6F,SAASqgI,UAAU50I,KAAKsvG,KAAK+tB,iBAAiB17H,EAAE3B,KAAKsvG,KAAK2rB,uBAAuBr4G,GAAG5iB,KAAKi9I,kBAAkBr6H,EAAEjhB,GAAG,EAAE45I,gBAAgB,SAAS34H,GAAG,IAAIjhB,EAAE3B,KAAKk9I,cAAcv7I,IAAI6sE,GAAExuE,KAAKs6G,WAAW,uBAAuBt6G,KAAKg9I,WAAW,CAACr7I,GAAGihB,EAAE,YAAY5iB,KAAKk9I,cAAc,KAAKl9I,KAAKm9I,sBAAqB,EAAG,EAAEF,kBAAkB,SAASr6H,EAAEjhB,GAAG,IAAI3B,KAAKm9I,qBAAqB,CAAC,IAAI,IAAI18H,EAAE5iB,EAAEV,EAAE6C,KAAKg8I,WAAW7+I,EAAEA,EAAEA,EAAE8zD,MAAMxwC,EAAEtjB,EAAE+3G,OAAO52G,QAAQorI,aAAajpH,EAAEqsH,eAAenrI,KAAK9D,EAAE4iB,GAAG5iB,IAAImC,KAAKk9I,gBAAgBl9I,KAAKu7I,gBAAgB34H,GAAG/kB,IAAIqnD,GAAEllD,KAAKs6G,WAAW,uBAAuBt6G,KAAKg9I,WAAW,CAACn/I,GAAG+kB,EAAE,aAAa5iB,KAAKk9I,cAAcr/I,IAAImC,KAAKg9I,aAAah9I,KAAKk9I,eAAe,CAACl9I,KAAKk9I,eAAet6H,GAAG5iB,KAAKm9I,sBAAqB,EAAG72H,WAAWhV,GAAE,WAAWtR,KAAKm9I,sBAAqB,CAAE,GAAEn9I,MAAM,GAAG,CAAC,EAAEg9I,WAAW,SAASp6H,EAAEjhB,EAAE8e,GAAGzgB,KAAKsvG,KAAKitB,cAAc56H,EAAE8e,GAAG9e,EAAEyZ,KAAKwH,EAAE,EAAE4nH,cAAc,SAAS5nH,GAAG,IAAIjhB,EAAE8e,EAAE5iB,EAAE+kB,EAAEi5H,OAAOh+I,IAAI8D,EAAE9D,EAAEozD,KAAKxwC,EAAE5iB,EAAEi+I,KAAKn6I,KAAKA,EAAEm6I,KAAKr7H,GAAGA,EAAEwwC,KAAKtvD,EAAEA,IAAI3B,KAAKg8I,WAAWr6I,GAAG9D,EAAEi+I,KAAK97I,KAAK+7I,WAAW/7I,KAAK+7I,UAAU9qF,KAAKpzD,GAAGozD,KAAK,KAAKjxD,KAAK+7I,UAAUl+I,EAAEmC,KAAKi8I,eAAer5H,IAAI,EAAEspH,aAAa,SAAStpH,GAAG,IAAIjhB,EAAE8e,EAAE5iB,EAAE+kB,EAAEi5H,OAAOh+I,IAAI8D,EAAE9D,EAAEozD,MAAMxwC,EAAE5iB,EAAEi+I,SAASr7H,EAAEwwC,KAAKtvD,GAAGA,EAAEm6I,KAAKr7H,EAAEA,IAAIzgB,KAAK+7I,UAAUt7H,GAAG5iB,EAAEi+I,KAAK,KAAKj+I,EAAEozD,KAAKjxD,KAAKg8I,WAAWh8I,KAAKg8I,WAAWF,KAAKj+I,EAAEmC,KAAKg8I,WAAWn+I,EAAEmC,KAAKi8I,eAAer5H,IAAI,IAAI,SAASw6H,GAAGx6H,GAAG,OAAO6lE,GAAE4jC,OAAO,IAAI4uB,GAAGr4H,GAAG,IAAI,CAAC,IAAIy6H,GAAG,WAAW,IAAI,OAAOzlI,SAAS0lI,WAAWz6H,IAAI,OAAO,iCAAiC,SAASD,GAAG,OAAOhL,SAASC,cAAc,SAAS+K,EAAE,iBAAiB,CAAC,CAAC,MAAMA,GAAG,CAAC,OAAO,SAASA,GAAG,OAAOhL,SAASC,cAAc,IAAI+K,EAAE,uDAAuD,CAAC,CAAvR,GAAiwD26H,IAAt+Cz0B,GAAG,CAACiM,eAAe,WAAW/0H,KAAKs6G,WAAW/oG,GAAE,MAAM,wBAAwB,EAAE0tH,QAAQ,WAAWj/H,KAAKsvG,KAAK+tB,iBAAiBmd,GAAG5+I,UAAUqjI,QAAQniI,KAAKkD,MAAMA,KAAK+wG,KAAK,UAAU,EAAE46B,UAAU,SAAS/oH,GAAG,IAAIjhB,EAAEihB,EAAE03F,WAAW+iC,GAAG,SAASn4F,GAAEvjD,EAAE,sBAAsB3B,KAAK1B,QAAQo6G,WAAW,KAAK/2G,EAAE67I,UAAU,MAAM56H,EAAE09F,MAAM+8B,GAAG,QAAQ17I,EAAE2uD,YAAY1tC,EAAE09F,OAAOtgH,KAAKgsI,aAAappH,GAAG5iB,KAAKmhH,QAAQx+G,EAAEigB,IAAIA,CAAC,EAAEipH,SAAS,SAASjpH,GAAG,IAAIjhB,EAAEihB,EAAE03F,WAAWt6G,KAAKs6G,WAAWhqD,YAAY3uD,GAAGihB,EAAEtkB,QAAQorI,aAAa9mH,EAAE4jH,qBAAqB7kI,EAAE,EAAEmqI,YAAY,SAASlpH,GAAG,IAAIjhB,EAAEihB,EAAE03F,WAAWwU,GAAEntH,GAAGihB,EAAE6jH,wBAAwB9kI,UAAU3B,KAAKmhH,QAAQx+G,EAAEigB,GAAG,EAAEopH,aAAa,SAASppH,GAAG,IAAIjhB,EAAEihB,EAAE66H,QAAQh9H,EAAEmC,EAAE86H,MAAM7/I,EAAE+kB,EAAEtkB,QAAQnB,EAAEylB,EAAE03F,WAAWn9G,EAAEwgJ,UAAU9/I,EAAEstI,OAAOhuI,EAAEygJ,SAAS//I,EAAEmsE,KAAKnsE,EAAEstI,QAAQxpI,EAAEA,IAAIihB,EAAE66H,QAAQJ,GAAG,WAAWlgJ,EAAEmzD,YAAY3uD,GAAGA,EAAEi2F,OAAO/5F,EAAE+5F,OAAO,KAAKj2F,EAAEiT,MAAM/W,EAAE+W,MAAMjT,EAAEgiB,QAAQ9lB,EAAE8lB,QAAQ9lB,EAAEytI,UAAU3pI,EAAEk8I,UAAU9/I,EAAEF,EAAEytI,WAAWztI,EAAEytI,UAAU/jE,KAAK,KAAK1pE,EAAEytI,UAAUvsI,QAAQ,WAAW,KAAK4C,EAAEk8I,UAAU,GAAGl8I,EAAEm8I,OAAOjgJ,EAAEutI,QAAQrsI,QAAQ,OAAO,QAAQ4C,EAAEo8I,UAAUlgJ,EAAEwtI,UAAU1pI,IAAIxE,EAAEsyD,YAAY9tD,GAAGihB,EAAE66H,QAAQ,MAAM5/I,EAAEmsE,MAAMvpD,EAAEA,IAAImC,EAAE86H,MAAML,GAAG,SAASlgJ,EAAEmzD,YAAY7vC,GAAGA,EAAE7L,MAAM/W,EAAE2tI,WAAW3tI,EAAE+W,MAAM6L,EAAEkD,QAAQ9lB,EAAE4tI,aAAahrH,IAAItjB,EAAEsyD,YAAYhvC,GAAGmC,EAAE86H,MAAM,KAAK,EAAE9Q,cAAc,SAAShqH,GAAG,IAAIjhB,EAAEihB,EAAE6pH,OAAOxqG,QAAQxhB,EAAE/iB,KAAKukC,MAAMrf,EAAE65G,SAAS5+H,EAAEH,KAAKukC,MAAMrf,EAAE8pH,UAAUjsH,GAAGzgB,KAAKg+I,SAASp7H,EAAEA,EAAEiqH,SAAS,OAAO,MAAMlrI,EAAEpC,EAAE,IAAIoC,EAAEnC,EAAE,IAAIihB,EAAE,IAAI5iB,EAAE,cAAc,EAAEmgJ,SAAS,SAASp7H,EAAEjhB,GAAGihB,EAAE09F,MAAMrjH,EAAE0E,CAAC,EAAE6oI,cAAc,SAAS5nH,GAAGosG,GAAGpsG,EAAE03F,WAAW,EAAE4xB,aAAa,SAAStpH,GAAGssG,GAAGtsG,EAAE03F,WAAW,GAAM7xB,GAAE6jC,IAAI+wB,GAAGx1B,GAAGo2B,GAAGzD,GAAGtrC,OAAO,CAAC6lB,eAAe,WAAW/0H,KAAKs6G,WAAWijC,GAAG,OAAOv9I,KAAKs6G,WAAWpsF,aAAa,iBAAiB,QAAQluB,KAAKk+I,WAAWX,GAAG,KAAKv9I,KAAKs6G,WAAWhqD,YAAYtwD,KAAKk+I,WAAW,EAAExD,kBAAkB,WAAW5rB,GAAE9uH,KAAKs6G,YAAYqV,GAAE3vH,KAAKs6G,mBAAmBt6G,KAAKs6G,kBAAkBt6G,KAAKk+I,kBAAkBl+I,KAAKm+I,QAAQ,EAAElf,QAAQ,WAAW,IAAIr8G,EAAEjhB,EAAE8e,EAAEzgB,KAAKsvG,KAAK+tB,gBAAgBr9H,KAAKk3G,UAAUsjC,GAAG5+I,UAAUqjI,QAAQniI,KAAKkD,MAAM2B,GAAGihB,EAAE5iB,KAAKk3G,SAASyO,UAAUllG,EAAEzgB,KAAKs6G,WAAWt6G,KAAKm+I,UAAUn+I,KAAKm+I,SAAS94B,OAAO1jH,KAAK3B,KAAKm+I,SAASx8I,EAAE8e,EAAEyN,aAAa,QAAQvsB,EAAEpC,GAAGkhB,EAAEyN,aAAa,SAASvsB,EAAEnC,IAAIkvE,GAAEjuD,EAAEmC,EAAEnjB,KAAKghB,EAAEyN,aAAa,UAAU,CAACtL,EAAEnjB,IAAIF,EAAEqjB,EAAEnjB,IAAID,EAAEmC,EAAEpC,EAAEoC,EAAEnC,GAAG+nE,KAAK,MAAMvnE,KAAK+wG,KAAK,UAAU,EAAE46B,UAAU,SAAS/oH,GAAG,IAAIjhB,EAAEihB,EAAE09F,MAAMi9B,GAAG,QAAQ36H,EAAEtkB,QAAQo6G,WAAWxzD,GAAEvjD,EAAEihB,EAAEtkB,QAAQo6G,WAAW91F,EAAEtkB,QAAQorI,aAAaxkF,GAAEvjD,EAAE,uBAAuB3B,KAAKgsI,aAAappH,GAAG5iB,KAAKmhH,QAAQx+G,EAAEigB,IAAIA,CAAC,EAAEipH,SAAS,SAASjpH,GAAG5iB,KAAKk+I,YAAYl+I,KAAK+0H,iBAAiB/0H,KAAKk+I,WAAW5tF,YAAY1tC,EAAE09F,OAAO19F,EAAE4jH,qBAAqB5jH,EAAE09F,MAAM,EAAEwrB,YAAY,SAASlpH,GAAGksG,GAAElsG,EAAE09F,OAAO19F,EAAE6jH,wBAAwB7jH,EAAE09F,cAActgH,KAAKmhH,QAAQx+G,EAAEigB,GAAG,EAAEmpH,YAAY,SAASnpH,GAAGA,EAAEupH,WAAWvpH,EAAEq8G,SAAS,EAAE+M,aAAa,SAASppH,GAAG,IAAIjhB,EAAEihB,EAAE09F,MAAM19F,EAAEA,EAAEtkB,QAAQqD,IAAIihB,EAAEuoH,QAAQxpI,EAAEusB,aAAa,SAAStL,EAAEhO,OAAOjT,EAAEusB,aAAa,iBAAiBtL,EAAEe,SAAShiB,EAAEusB,aAAa,eAAetL,EAAEg1E,QAAQj2F,EAAEusB,aAAa,iBAAiBtL,EAAEwoH,SAASzpI,EAAEusB,aAAa,kBAAkBtL,EAAEyoH,UAAUzoH,EAAE0oH,UAAU3pI,EAAEusB,aAAa,mBAAmBtL,EAAE0oH,WAAW3pI,EAAE2sD,gBAAgB,oBAAoB1rC,EAAE2oH,WAAW5pI,EAAEusB,aAAa,oBAAoBtL,EAAE2oH,YAAY5pI,EAAE2sD,gBAAgB,sBAAsB3sD,EAAEusB,aAAa,SAAS,QAAQtL,EAAEonD,MAAMroE,EAAEusB,aAAa,OAAOtL,EAAE4oH,WAAW5oH,EAAEhO,OAAOjT,EAAEusB,aAAa,eAAetL,EAAE6oH,aAAa9pI,EAAEusB,aAAa,YAAYtL,EAAE8oH,UAAU,YAAY/pI,EAAEusB,aAAa,OAAO,QAAQ,EAAEggH,YAAY,SAAStrH,EAAEjhB,GAAG3B,KAAKg+I,SAASp7H,EAAEsqD,EAAGtqD,EAAE6qH,OAAO9rI,GAAG,EAAEirI,cAAc,SAAShqH,GAAG,IAAIjhB,EAAEihB,EAAE6pH,OAAOhsH,EAAE/iB,KAAK+G,IAAI/G,KAAKukC,MAAMrf,EAAE65G,SAAS,GAAG5+H,EAAE,IAAI4iB,EAAE,KAAK/iB,KAAK+G,IAAI/G,KAAKukC,MAAMrf,EAAE8pH,UAAU,IAAIjsH,GAAG,UAAU9e,EAAEihB,EAAEiqH,SAAS,OAAO,KAAKlrI,EAAEpC,EAAEkhB,GAAG,IAAI9e,EAAEnC,EAAE3B,EAAE,EAAE4iB,EAAE,MAAM5iB,EAAE,GAAG4iB,EAAE,MAAMzgB,KAAKg+I,SAASp7H,EAAEjhB,EAAE,EAAEq8I,SAAS,SAASp7H,EAAEjhB,GAAGihB,EAAE09F,MAAMpyF,aAAa,IAAIvsB,EAAE,EAAE6oI,cAAc,SAAS5nH,GAAGosG,GAAGpsG,EAAE09F,MAAM,EAAE4rB,aAAa,SAAStpH,GAAGssG,GAAGtsG,EAAE09F,MAAM,IAAI,SAAS89B,GAAGx7H,GAAG,OAAO6lE,GAAEn5E,KAAKm5E,GAAE6jC,IAAI,IAAI2xB,GAAGr7H,GAAG,IAAI,CAAC6lE,GAAE6jC,KAAK2xB,GAAGnuC,QAAQgZ,IAAIl5C,GAAEkgC,QAAQ,CAACiR,YAAY,SAASn+F,GAAmJ,OAAhJA,GAAGA,EAAEA,EAAEtkB,QAAQ81H,UAAUp0H,KAAKq+I,iBAAiBz7H,EAAEtkB,QAAQg0G,OAAOtyG,KAAK1B,QAAQ81H,UAAUp0H,KAAK85H,aAAa95H,KAAK85H,UAAU95H,KAAKs+I,mBAA0Bt+I,KAAKm1G,SAASvyF,IAAI5iB,KAAK80G,SAASlyF,GAAGA,CAAC,EAAEy7H,iBAAiB,SAASz7H,GAAG,GAAG,gBAAgBA,QAAG,IAASA,EAAE,OAAM,EAAG,IAAIjhB,EAAE3B,KAAKu7H,eAAe34G,GAAG,YAAO,IAASjhB,IAAIA,EAAE3B,KAAKs+I,gBAAgB,CAAChsC,KAAK1vF,IAAI5iB,KAAKu7H,eAAe34G,GAAGjhB,GAAGA,CAAC,EAAE28I,gBAAgB,SAAS17H,GAAG,OAAO5iB,KAAK1B,QAAQigJ,cAAcnB,GAAGx6H,IAAIw7H,GAAGx7H,EAAE,IAAI,IAAI47H,GAAGrQ,GAAGj/B,OAAO,CAACx/E,WAAW,SAAS9M,EAAEjhB,GAAGwsI,GAAGvyI,UAAU8zB,WAAW5yB,KAAKkD,KAAKA,KAAKy+I,iBAAiB77H,GAAGjhB,EAAE,EAAEmuI,UAAU,SAASltH,GAAG,OAAO5iB,KAAKutI,WAAWvtI,KAAKy+I,iBAAiB77H,GAAG,EAAE67H,iBAAiB,SAAS77H,GAAG,MAAM,EAAEA,EAAEld,EAAEkd,IAAIkjG,eAAeljG,EAAEojG,eAAepjG,EAAEmjG,eAAenjG,EAAEsjG,eAAe,IAAI+3B,GAAG5hJ,OAAOkhJ,GAAGU,GAAGS,aAAaxxE,EAAGkhE,GAAGuQ,gBAAgBrQ,GAAGF,GAAGS,eAAeC,GAAGV,GAAGwQ,gBAAgB5P,GAAGZ,GAAGyQ,eAAe3P,GAAGd,GAAG0Q,gBAAgB3P,GAAGf,GAAG2Q,WAAW3P,GAAGhB,GAAG4Q,UAAUzQ,GAAG3+D,GAAE4hC,aAAa,CAACqrB,SAAQ,IAAS/U,EAAGjqH,EAAEqxG,OAAO,CAACx/E,WAAW,SAAS9M,GAAG5iB,KAAKsvG,KAAK1sF,EAAE5iB,KAAKs6G,WAAW13F,EAAE03F,WAAWt6G,KAAKi/I,MAAMr8H,EAAEi3G,OAAOqlB,YAAYl/I,KAAKm/I,mBAAmB,EAAEv8H,EAAE1J,GAAG,SAASlZ,KAAKo/I,SAASp/I,KAAK,EAAEijI,SAAS,WAAWttE,GAAE31D,KAAKs6G,WAAW,YAAYt6G,KAAKq/I,aAAar/I,KAAK,EAAEkjI,YAAY,WAAWvT,GAAE3vH,KAAKs6G,WAAW,YAAYt6G,KAAKq/I,aAAar/I,KAAK,EAAE04D,MAAM,WAAW,OAAO14D,KAAKi6H,MAAM,EAAEmlB,SAAS,WAAWtwB,GAAE9uH,KAAKi/I,cAAcj/I,KAAKi/I,KAAK,EAAEK,YAAY,WAAWt/I,KAAKm/I,mBAAmB,EAAEn/I,KAAKi6H,QAAO,CAAE,EAAEslB,yBAAyB,WAAW,IAAIv/I,KAAKm/I,qBAAqB94H,aAAarmB,KAAKm/I,oBAAoBn/I,KAAKm/I,mBAAmB,EAAE,EAAEE,aAAa,SAASz8H,GAAG,IAAIA,EAAEu2C,UAAU,IAAIv2C,EAAE+gH,OAAO,IAAI/gH,EAAEghH,OAAO,OAAM,EAAG5jI,KAAKu/I,2BAA2Bv/I,KAAKs/I,cAAcjxB,KAAKoB,KAAKzvH,KAAK8jI,YAAY9jI,KAAKsvG,KAAK0rB,2BAA2Bp4G,GAAG+yC,GAAE/9C,SAAS,CAAC4nI,YAAYrtB,GAAGl7D,UAAUj3D,KAAKq7I,aAAankF,QAAQl3D,KAAKy/I,WAAWC,QAAQ1/I,KAAK2/I,YAAY3/I,KAAK,EAAEq7I,aAAa,SAASz4H,GAAG5iB,KAAKi6H,SAASj6H,KAAKi6H,QAAO,EAAGj6H,KAAK4/I,KAAKruI,GAAE,MAAM,mBAAmBvR,KAAKs6G,YAAYp1D,GAAEllD,KAAKs6G,WAAW,qBAAqBt6G,KAAKsvG,KAAKyB,KAAK,iBAAiB/wG,KAAKysI,OAAOzsI,KAAKsvG,KAAK0rB,2BAA2Bp4G,GAAG,IAA0CjhB,GAAtCihB,EAAE,IAAImlC,EAAE/nD,KAAKysI,OAAOzsI,KAAK8jI,cAAiBne,UAAUj3C,GAAE1uE,KAAK4/I,KAAKh9H,EAAEnjB,KAAKO,KAAK4/I,KAAKt5I,MAAM5G,MAAMiC,EAAEpC,EAAE,KAAKS,KAAK4/I,KAAKt5I,MAAM3G,OAAOgC,EAAEnC,EAAE,IAAI,EAAEqgJ,QAAQ,WAAW7/I,KAAKi6H,SAASnL,GAAE9uH,KAAK4/I,MAAMpxE,GAAExuE,KAAKs6G,WAAW,sBAAsBgU,KAAKoB,KAAKC,GAAE/3G,SAAS,CAAC4nI,YAAYrtB,GAAGl7D,UAAUj3D,KAAKq7I,aAAankF,QAAQl3D,KAAKy/I,WAAWC,QAAQ1/I,KAAK2/I,YAAY3/I,KAAK,EAAEy/I,WAAW,SAAS78H,GAAG,IAAIA,EAAE+gH,OAAO,IAAI/gH,EAAEghH,SAAS5jI,KAAK6/I,UAAU7/I,KAAKi6H,SAASj6H,KAAKu/I,2BAA2Bv/I,KAAKm/I,mBAAmB74H,WAAWhV,EAAEtR,KAAKs/I,YAAYt/I,MAAM,GAAG4iB,EAAE,IAAIhf,EAAE5D,KAAKsvG,KAAKknB,uBAAuBx2H,KAAK8jI,aAAa9jI,KAAKsvG,KAAKknB,uBAAuBx2H,KAAKysI,SAASzsI,KAAKsvG,KAAKgO,UAAU16F,GAAGmuF,KAAK,aAAa,CAAC+uC,cAAcl9H,KAAK,EAAE+8H,WAAW,SAAS/8H,GAAG,KAAKA,EAAE0pF,UAAUtsG,KAAK6/I,UAAU7/I,KAAKu/I,2BAA2Bv/I,KAAKs/I,cAAc,IAAQ1vE,GAAE8hC,YAAY,aAAa,UAAUoW,GAAIl4C,GAAE4hC,aAAa,CAACuuC,iBAAgB,IAA7E/2B,GAAkFnrH,EAAEqxG,OAAO,CAAC+zB,SAAS,WAAWjjI,KAAKsvG,KAAKp2F,GAAG,WAAWlZ,KAAKggJ,eAAehgJ,KAAK,EAAEkjI,YAAY,WAAWljI,KAAKsvG,KAAK78C,IAAI,WAAWzyD,KAAKggJ,eAAehgJ,KAAK,EAAEggJ,eAAe,SAASp9H,GAAG,IAAIjhB,EAAE3B,KAAKsvG,KAAK7uF,EAAE9e,EAAEy7G,UAAUv/G,EAAE8D,EAAErD,QAAQo2H,UAAUj0G,EAAEmC,EAAEo3F,cAAc7gD,SAAS14C,EAAE5iB,EAAE4iB,EAAE5iB,EAAE,WAAW8D,EAAErD,QAAQyhJ,gBAAgBp+I,EAAEu0H,QAAQz1G,GAAG9e,EAAE00H,cAAczzG,EAAE85G,eAAej8G,EAAE,IAAn1E,IAAw1E0oG,IAAIv5C,GAAE8hC,YAAY,aAAa,kBAAkBsX,IAAIp5C,GAAE4hC,aAAa,CAACj9F,UAAS,EAAG0rI,SAAQ,EAAGC,oBAAoB,KAAKC,gBAAgB,IAAIhpB,cAAc,GAAGipB,eAAc,EAAGC,mBAAmB,IAAIxiJ,EAAEqxG,OAAO,CAAC+zB,SAAS,WAAW,IAAIrgH,EAAE5iB,KAAK4oI,aAAahmH,EAAE5iB,KAAKsvG,KAAKtvG,KAAK4oI,WAAW,IAAIzF,GAAGvgH,EAAE61F,SAAS71F,EAAE03F,YAAYt6G,KAAK4oI,WAAW1vH,GAAG,CAAC66B,UAAU/zC,KAAK6oI,aAAa91F,KAAK/yC,KAAKgpI,QAAQh1F,QAAQh0C,KAAKipI,YAAYjpI,MAAMA,KAAK4oI,WAAW1vH,GAAG,UAAUlZ,KAAKsgJ,gBAAgBtgJ,MAAM4iB,EAAEtkB,QAAQ8hJ,gBAAgBpgJ,KAAK4oI,WAAW1vH,GAAG,UAAUlZ,KAAKugJ,eAAevgJ,MAAM4iB,EAAE1J,GAAG,UAAUlZ,KAAK66I,WAAW76I,MAAM4iB,EAAEkvF,UAAU9xG,KAAK66I,WAAW76I,QAAQklD,GAAEllD,KAAKsvG,KAAKgL,WAAW,mCAAmCt6G,KAAK4oI,WAAW/tG,SAAS76B,KAAKwgJ,WAAW,GAAGxgJ,KAAKygJ,OAAO,EAAE,EAAEvd,YAAY,WAAW10D,GAAExuE,KAAKsvG,KAAKgL,WAAW,gBAAgB9rC,GAAExuE,KAAKsvG,KAAKgL,WAAW,sBAAsBt6G,KAAK4oI,WAAW9L,SAAS,EAAEpkE,MAAM,WAAW,OAAO14D,KAAK4oI,YAAY5oI,KAAK4oI,WAAW3O,MAAM,EAAE2a,OAAO,WAAW,OAAO50I,KAAK4oI,YAAY5oI,KAAK4oI,WAAW/E,OAAO,EAAEgF,aAAa,WAAW,IAAIjmH,EAAEjhB,EAAE3B,KAAKsvG,KAAK3tG,EAAEg0H,QAAQ31H,KAAKsvG,KAAKhxG,QAAQ61H,WAAWn0H,KAAKsvG,KAAKhxG,QAAQ+hJ,oBAAoBz9H,EAAEld,EAAE1F,KAAKsvG,KAAKhxG,QAAQ61H,WAAWn0H,KAAK0gJ,aAAa15H,EAAEhnB,KAAKsvG,KAAKinB,uBAAuB3zG,EAAEojG,gBAAgBnB,YAAY,GAAG7kH,KAAKsvG,KAAKinB,uBAAuB3zG,EAAEsjG,gBAAgBrB,YAAY,GAAGhiG,IAAI7iB,KAAKsvG,KAAKqW,YAAY3lH,KAAK2gJ,WAAWjjJ,KAAK+B,IAAI,EAAE/B,KAAK+G,IAAI,EAAEzE,KAAKsvG,KAAKhxG,QAAQ+hJ,sBAAsBrgJ,KAAK0gJ,aAAa,KAAK/+I,EAAEovG,KAAK,aAAaA,KAAK,aAAapvG,EAAErD,QAAQ2hJ,UAAUjgJ,KAAKwgJ,WAAW,GAAGxgJ,KAAKygJ,OAAO,GAAG,EAAEzX,QAAQ,SAASpmH,GAAG,IAAIjhB,EAAE8e,EAAEzgB,KAAKsvG,KAAKhxG,QAAQ2hJ,UAAUt+I,EAAE3B,KAAK4gJ,WAAW,IAAIxvI,KAAKqP,EAAEzgB,KAAK6gJ,SAAS7gJ,KAAK4oI,WAAWkY,SAAS9gJ,KAAK4oI,WAAWvE,QAAQrkI,KAAKwgJ,WAAW1+I,KAAK2e,GAAGzgB,KAAKygJ,OAAO3+I,KAAKH,GAAG3B,KAAK+gJ,gBAAgBp/I,IAAI3B,KAAKsvG,KAAKyB,KAAK,OAAOnuF,GAAGmuF,KAAK,OAAOnuF,EAAE,EAAEm+H,gBAAgB,SAASn+H,GAAG,KAAK,EAAE5iB,KAAKwgJ,WAAWviJ,QAAQ,GAAG2kB,EAAE5iB,KAAKygJ,OAAO,IAAIzgJ,KAAKwgJ,WAAWn2G,QAAQrqC,KAAKygJ,OAAOp2G,OAAO,EAAEwwG,WAAW,WAAW,IAAIj4H,EAAE5iB,KAAKsvG,KAAKqW,UAAUhB,SAAS,GAAGhjH,EAAE3B,KAAKsvG,KAAKuN,mBAAmB,CAAC,EAAE,IAAI78G,KAAKghJ,oBAAoBr/I,EAAE8iH,SAAS7hG,GAAGrjB,EAAES,KAAKihJ,YAAYjhJ,KAAKsvG,KAAKqrB,sBAAsBhV,UAAUpmH,CAAC,EAAE2hJ,cAAc,SAASt+H,EAAEjhB,GAAG,OAAOihB,GAAGA,EAAEjhB,GAAG3B,KAAK2gJ,UAAU,EAAEL,gBAAgB,WAAW,IAAI19H,EAAEjhB,EAAE3B,KAAK2gJ,YAAY3gJ,KAAK0gJ,eAAe99H,EAAE5iB,KAAK4oI,WAAWvE,QAAQ5f,SAASzkH,KAAK4oI,WAAWrV,WAAW5xH,EAAE3B,KAAK0gJ,aAAa99H,EAAErjB,EAAEoC,EAAElC,IAAIF,IAAIqjB,EAAErjB,EAAES,KAAKkhJ,cAAct+H,EAAErjB,EAAEoC,EAAElC,IAAIF,IAAIqjB,EAAEpjB,EAAEmC,EAAElC,IAAID,IAAIojB,EAAEpjB,EAAEQ,KAAKkhJ,cAAct+H,EAAEpjB,EAAEmC,EAAElC,IAAID,IAAIojB,EAAErjB,EAAEoC,EAAE8C,IAAIlF,IAAIqjB,EAAErjB,EAAES,KAAKkhJ,cAAct+H,EAAErjB,EAAEoC,EAAE8C,IAAIlF,IAAIqjB,EAAEpjB,EAAEmC,EAAE8C,IAAIjF,IAAIojB,EAAEpjB,EAAEQ,KAAKkhJ,cAAct+H,EAAEpjB,EAAEmC,EAAE8C,IAAIjF,IAAIQ,KAAK4oI,WAAWvE,QAAQrkI,KAAK4oI,WAAWrV,UAAU1wG,IAAID,GAAG,EAAE29H,eAAe,WAAW,IAAI39H,EAAE5iB,KAAKihJ,YAAYt/I,EAAEjE,KAAKukC,MAAMrf,EAAE,GAAGnC,EAAEzgB,KAAKghJ,oBAAgD7jJ,IAA5BU,EAAEmC,KAAK4oI,WAAWvE,QAAQ9kI,GAAOoC,EAAE8e,GAAGmC,EAAEjhB,EAAE8e,EAAE5iB,GAAGA,EAAE8D,EAAE8e,GAAGmC,EAAEjhB,EAAE8e,EAAEmC,EAAEllB,KAAKwgC,IAAI/gC,EAAEsjB,GAAG/iB,KAAKwgC,IAAIrgC,EAAE4iB,GAAGtjB,EAAEU,EAAEmC,KAAK4oI,WAAWkY,QAAQ9gJ,KAAK4oI,WAAWvE,QAAQl6G,QAAQnqB,KAAK4oI,WAAWvE,QAAQ9kI,EAAEqjB,CAAC,EAAEqmH,WAAW,SAASrmH,GAAG,IAAIjhB,EAAE8e,EAAE5iB,EAAEV,EAAEyG,EAAE5D,KAAKsvG,KAAK5zD,EAAE93C,EAAEtF,QAAQgT,GAAGoqC,EAAEukG,SAASr9H,EAAE4hH,WAAWxkI,KAAKygJ,OAAOxiJ,OAAO,EAAE2F,EAAEmtG,KAAK,UAAUnuF,GAAGtR,EAAE1N,EAAEmtG,KAAK,YAAY/wG,KAAK+gJ,iBAAiB,IAAI3vI,MAAMwR,EAAE5iB,KAAK6gJ,SAASp8B,SAASzkH,KAAKwgJ,WAAW,IAAIlvI,GAAGtR,KAAK4gJ,UAAU5gJ,KAAKygJ,OAAO,IAAI,IAAI9+I,EAAE+5C,EAAEy7E,cAAc7lH,GAAGsR,EAAEA,EAAEiiG,WAAWljH,EAAE2P,IAAI8zG,WAAW,CAAC,EAAE,IAAI3kG,EAAE/iB,KAAK+B,IAAIi8C,EAAEykG,gBAAgB7uI,GAAGsR,EAAEA,EAAEiiG,WAAWpkG,EAAEnP,GAAGzT,EAAE4iB,GAAGi7B,EAAEwkG,oBAAoBv+I,IAAIxE,EAAEylB,EAAEiiG,YAAYhnH,EAAE,GAAGokC,SAAS1iC,GAAGpC,EAAEqC,GAAGrC,EAAEyG,EAAEs5H,aAAa//H,EAAEyG,EAAEtF,QAAQ61H,WAAW50H,GAAE,WAAWqE,EAAEizH,MAAM15H,EAAE,CAACsU,SAAS5T,EAAEs5H,cAAcx1H,EAAEs1H,aAAY,EAAGnkB,SAAQ,GAAI,KAAIlvG,EAAEmtG,KAAK,WAAW,KAA6pNowC,IAAppNvxE,GAAE8hC,YAAY,aAAa,WAAWyX,IAAIv5C,GAAE4hC,aAAa,CAACm4B,UAAS,EAAGyX,iBAAiB,KAA3Fl4B,GAAgGrrH,EAAEqxG,OAAO,CAACmyC,SAAS,CAAC/5I,KAAK,CAAC,IAAIF,MAAM,CAAC,IAAIk6I,KAAK,CAAC,IAAIC,GAAG,CAAC,IAAIprB,OAAO,CAAC,IAAI,IAAI,GAAG,KAAKC,QAAQ,CAAC,IAAI,IAAI,GAAG,MAAM1mG,WAAW,SAAS9M,GAAG5iB,KAAKsvG,KAAK1sF,EAAE5iB,KAAKwhJ,aAAa5+H,EAAEtkB,QAAQ8iJ,kBAAkBphJ,KAAKyhJ,cAAc7+H,EAAEtkB,QAAQo2H,UAAU,EAAEuO,SAAS,WAAW,IAAIrgH,EAAE5iB,KAAKsvG,KAAKgL,WAAW13F,EAAEitG,UAAU,IAAIjtG,EAAEitG,SAAS,KAAKl6D,GAAE/yC,EAAE,CAACkU,MAAM92B,KAAK0hJ,SAASC,KAAK3hJ,KAAK4hJ,QAAQ5tF,UAAUh0D,KAAKq/I,cAAcr/I,MAAMA,KAAKsvG,KAAKp2F,GAAG,CAAC4d,MAAM92B,KAAK6hJ,UAAUF,KAAK3hJ,KAAK8hJ,cAAc9hJ,KAAK,EAAEkjI,YAAY,WAAWljI,KAAK8hJ,eAAenyB,GAAE3vH,KAAKsvG,KAAKgL,WAAW,CAACxjF,MAAM92B,KAAK0hJ,SAASC,KAAK3hJ,KAAK4hJ,QAAQ5tF,UAAUh0D,KAAKq/I,cAAcr/I,MAAMA,KAAKsvG,KAAK78C,IAAI,CAAC37B,MAAM92B,KAAK6hJ,UAAUF,KAAK3hJ,KAAK8hJ,cAAc9hJ,KAAK,EAAEq/I,aAAa,WAAW,IAAIz8H,EAAEjhB,EAAE8e,EAAEzgB,KAAK+hJ,WAAWthI,EAAE7I,SAASi3F,KAAKjsF,EAAEhL,SAAS8tC,gBAAgB/jD,EAAE8e,EAAEu7G,WAAWp5G,EAAEo5G,UAAUv7G,EAAEA,EAAEw7G,YAAYr5G,EAAEq5G,WAAWj8H,KAAKsvG,KAAKgL,WAAWxjF,QAAQnkB,OAAOqvI,SAASvhI,EAAE9e,GAAG,EAAE+/I,SAAS,WAAW1hJ,KAAK+hJ,UAAS,EAAG/hJ,KAAKsvG,KAAKyB,KAAK,QAAQ,EAAE6wC,QAAQ,WAAW5hJ,KAAK+hJ,UAAS,EAAG/hJ,KAAKsvG,KAAKyB,KAAK,OAAO,EAAEywC,aAAa,SAAS5+H,GAAG,IAAI,IAAIjhB,EAAE3B,KAAKiiJ,SAAS,CAAC,EAAExhI,EAAEzgB,KAAKqhJ,SAASxjJ,EAAE,EAAEV,EAAEsjB,EAAEnZ,KAAKrJ,OAAOJ,EAAEV,EAAEU,IAAI8D,EAAE8e,EAAEnZ,KAAKzJ,IAAI,EAAE,EAAE+kB,EAAE,GAAG,IAAI/kB,EAAE,EAAEV,EAAEsjB,EAAErZ,MAAMnJ,OAAOJ,EAAEV,EAAEU,IAAI8D,EAAE8e,EAAErZ,MAAMvJ,IAAI,CAAC+kB,EAAE,GAAG,IAAI/kB,EAAE,EAAEV,EAAEsjB,EAAE6gI,KAAKrjJ,OAAOJ,EAAEV,EAAEU,IAAI8D,EAAE8e,EAAE6gI,KAAKzjJ,IAAI,CAAC,EAAE+kB,GAAG,IAAI/kB,EAAE,EAAEV,EAAEsjB,EAAE8gI,GAAGtjJ,OAAOJ,EAAEV,EAAEU,IAAI8D,EAAE8e,EAAE8gI,GAAG1jJ,IAAI,CAAC,GAAG,EAAE+kB,EAAE,EAAE6+H,cAAc,SAAS7+H,GAAG,IAAI,IAAIjhB,EAAE3B,KAAKkiJ,UAAU,CAAC,EAAEzhI,EAAEzgB,KAAKqhJ,SAASxjJ,EAAE,EAAEV,EAAEsjB,EAAE01G,OAAOl4H,OAAOJ,EAAEV,EAAEU,IAAI8D,EAAE8e,EAAE01G,OAAOt4H,IAAI+kB,EAAE,IAAI/kB,EAAE,EAAEV,EAAEsjB,EAAE21G,QAAQn4H,OAAOJ,EAAEV,EAAEU,IAAI8D,EAAE8e,EAAE21G,QAAQv4H,KAAK+kB,CAAC,EAAEi/H,UAAU,WAAWlsF,GAAE/9C,SAAS,UAAU5X,KAAK2/I,WAAW3/I,KAAK,EAAE8hJ,aAAa,WAAWnyB,GAAE/3G,SAAS,UAAU5X,KAAK2/I,WAAW3/I,KAAK,EAAE2/I,WAAW,SAAS/8H,GAAG,KAAKA,EAAE03B,QAAQ13B,EAAEu/H,SAASv/H,EAAEw/H,SAAS,CAAC,IAAIzgJ,EAAE8e,EAAEmC,EAAE0pF,QAAQzuG,EAAEmC,KAAKsvG,KAAK,GAAG7uF,KAAKzgB,KAAKiiJ,SAASpkJ,EAAEi5H,UAAUj5H,EAAEi5H,SAAS1D,cAAczxH,EAAE3B,KAAKiiJ,SAASxhI,GAAGmC,EAAEu2C,WAAWx3D,EAAE+nD,EAAE/nD,GAAGkjH,WAAW,IAAIhnH,EAAEg5H,MAAMl1H,GAAG9D,EAAES,QAAQ61H,WAAWt2H,EAAEi6H,gBAAgBj6H,EAAES,QAAQ61H,iBAAiB,GAAG1zG,KAAKzgB,KAAKkiJ,UAAUrkJ,EAAEq4H,QAAQr4H,EAAEu/G,WAAWx6F,EAAEu2C,SAAS,EAAE,GAAGn5D,KAAKkiJ,UAAUzhI,QAAQ,CAAC,GAAG,KAAKA,IAAI5iB,EAAEs7G,SAASt7G,EAAEs7G,OAAO76G,QAAQg0I,iBAAiB,OAAOz0I,EAAE8iH,YAAY,CAACwR,GAAGvvG,EAAE,CAAC,IAASgtD,GAAE8hC,YAAY,aAAa,WAAWwX,IAAIt5C,GAAE4hC,aAAa,CAAC6wC,iBAAgB,EAAGC,kBAAkB,GAAGC,oBAAoB,KAA1Hl5B,GAA+HxrH,EAAEqxG,OAAO,CAAC+zB,SAAS,WAAWttE,GAAE31D,KAAKsvG,KAAKgL,WAAW,QAAQt6G,KAAKwiJ,eAAexiJ,MAAMA,KAAKyiJ,OAAO,CAAC,EAAEvf,YAAY,WAAWvT,GAAE3vH,KAAKsvG,KAAKgL,WAAW,QAAQt6G,KAAKwiJ,eAAexiJ,KAAK,EAAEwiJ,eAAe,SAAS5/H,GAAG,IAAIjhB,EAAE2wH,GAAG1vG,GAAGnC,EAAEzgB,KAAKsvG,KAAKhxG,QAAQgkJ,kBAAqBtiJ,KAAKyiJ,QAAQ9gJ,EAAE3B,KAAK0iJ,cAAc1iJ,KAAKsvG,KAAK0rB,2BAA2Bp4G,GAAG5iB,KAAKyzH,aAAazzH,KAAKyzH,YAAY,IAAIriH,MAApHzP,EAA0HjE,KAAK+G,IAAIgc,IAAI,IAAIrP,KAAKpR,KAAKyzH,YAAY,GAAIptG,aAAarmB,KAAK2iJ,QAAQ3iJ,KAAK2iJ,OAAOr8H,WAAWhV,EAAEtR,KAAK4iJ,aAAa5iJ,MAAM2B,GAAGwwH,GAAGvvG,EAAE,EAAEggI,aAAa,WAAW,IAAIhgI,EAAE5iB,KAAKsvG,KAAK3tG,EAAEihB,EAAEw6F,UAAU38F,EAAEzgB,KAAKsvG,KAAKhxG,QAAQm2H,UAAU,EAAE52H,GAAG+kB,EAAE+yG,QAAQ31H,KAAKyiJ,QAAQ,EAAEziJ,KAAKsvG,KAAKhxG,QAAQikJ,sBAAsB1kJ,EAAE,EAAEH,KAAKy4D,IAAI,GAAG,EAAEz4D,KAAK43D,KAAK53D,KAAKwgC,IAAIrgC,MAAMH,KAAKm7D,IAAIp4C,EAAEA,EAAE/iB,KAAKC,KAAKE,EAAE4iB,GAAGA,EAAE5iB,EAAEA,EAAE+kB,EAAEwyG,WAAWzzH,GAAG,EAAE3B,KAAKyiJ,OAAOhiI,GAAGA,IAAI9e,EAAE3B,KAAKyiJ,OAAO,EAAEziJ,KAAKyzH,WAAW,KAAK51H,IAAI,WAAW+kB,EAAEtkB,QAAQ+jJ,gBAAgBz/H,EAAEszG,QAAQv0H,EAAE9D,GAAG+kB,EAAEyzG,cAAcr2H,KAAK0iJ,cAAc/gJ,EAAE9D,GAAG,IAAS+xE,GAAE8hC,YAAY,aAAa,kBAAkB2X,IAAIz5C,GAAE4hC,aAAa,CAACqxC,QAAQp6D,GAAEujC,aAAavjC,GAAE2iC,QAAQ3iC,GAAEgzB,OAAOqnC,aAAa,KAA5Hx5B,GAAiIzrH,EAAEqxG,OAAO,CAAC+zB,SAAS,WAAWttE,GAAE31D,KAAKsvG,KAAKgL,WAAW,aAAat6G,KAAKwjI,QAAQxjI,KAAK,EAAEkjI,YAAY,WAAWvT,GAAE3vH,KAAKsvG,KAAKgL,WAAW,aAAat6G,KAAKwjI,QAAQxjI,KAAK,EAAEwjI,QAAQ,SAAS5gH,GAAG,IAAIjhB,EAAE0kB,aAAarmB,KAAK+iJ,cAAc,IAAIngI,EAAEmxC,QAAQ91D,SAAS0D,EAAEihB,EAAEmxC,QAAQ,GAAG/zD,KAAKuzH,UAAUvzH,KAAKqkI,QAAQ,IAAI5zH,EAAE9O,EAAEojD,QAAQpjD,EAAEqjD,SAAShlD,KAAK+iJ,aAAaz8H,WAAWhV,GAAE,WAAWtR,KAAKgjJ,UAAUhjJ,KAAKijJ,gBAAgBttF,GAAE/9C,SAAS,WAAWi4D,IAAGla,GAAE/9C,SAAS,uBAAuB5X,KAAKkjJ,qBAAqBljJ,KAAKmjJ,eAAe,cAAcxhJ,GAAG,GAAE3B,MAAM,KAAK21D,GAAE/9C,SAAS,mCAAmC5X,KAAKgjJ,QAAQhjJ,MAAM21D,GAAE/9C,SAAS,YAAY5X,KAAKgkI,QAAQhkI,MAAM,EAAEkjJ,oBAAoB,SAAStgI,IAAI+sG,GAAE/3G,SAAS,WAAWi4D,IAAG8/C,GAAE/3G,SAAS,uBAAuBgL,EAAE,EAAEogI,QAAQ,WAAW38H,aAAarmB,KAAK+iJ,cAAcpzB,GAAE/3G,SAAS,mCAAmC5X,KAAKgjJ,QAAQhjJ,MAAM2vH,GAAE/3G,SAAS,YAAY5X,KAAKgkI,QAAQhkI,KAAK,EAAEgkI,QAAQ,SAASphH,GAAGA,EAAEA,EAAEmxC,QAAQ,GAAG/zD,KAAKqkI,QAAQ,IAAI5zH,EAAEmS,EAAEmiC,QAAQniC,EAAEoiC,QAAQ,EAAEi+F,YAAY,WAAW,OAAOjjJ,KAAKqkI,QAAQjf,WAAWplH,KAAKuzH,YAAYvzH,KAAKsvG,KAAKhxG,QAAQwkJ,YAAY,EAAEK,eAAe,SAASvgI,EAAEjhB,IAAGihB,EAAE,IAAIwgI,WAAWxgI,EAAE,CAACygI,SAAQ,EAAGC,YAAW,EAAGxsF,KAAKnkD,OAAO2rH,QAAQ38H,EAAE28H,QAAQC,QAAQ58H,EAAE48H,QAAQx5E,QAAQpjD,EAAEojD,QAAQC,QAAQrjD,EAAEqjD,WAAYgpE,YAAW,EAAGrsH,EAAEhL,OAAOyjC,cAAcxX,EAAE,IAASgtD,GAAE8hC,YAAY,aAAa,UAAU4X,IAAI15C,GAAE4hC,aAAa,CAAC+xC,UAAU96D,GAAE30B,MAAM0vF,oBAAmB,IAAlG/5B,GAAuG5rH,EAAEqxG,OAAO,CAAC+zB,SAAS,WAAW/9E,GAAEllD,KAAKsvG,KAAKgL,WAAW,sBAAsB3kD,GAAE31D,KAAKsvG,KAAKgL,WAAW,aAAat6G,KAAKyjJ,cAAczjJ,KAAK,EAAEkjI,YAAY,WAAW10D,GAAExuE,KAAKsvG,KAAKgL,WAAW,sBAAsBqV,GAAE3vH,KAAKsvG,KAAKgL,WAAW,aAAat6G,KAAKyjJ,cAAczjJ,KAAK,EAAEyjJ,cAAc,SAAS7gI,GAAG,IAAIjhB,EAAE8e,EAAE5iB,EAAEmC,KAAKsvG,MAAM1sF,EAAEmxC,SAAS,IAAInxC,EAAEmxC,QAAQ91D,QAAQJ,EAAEw/H,gBAAgBr9H,KAAK0jJ,WAAW/hJ,EAAE9D,EAAEm9H,2BAA2Bp4G,EAAEmxC,QAAQ,IAAItzC,EAAE5iB,EAAEm9H,2BAA2Bp4G,EAAEmxC,QAAQ,IAAI/zD,KAAK2jJ,aAAa9lJ,EAAE8nH,UAAUf,UAAU,GAAG5kH,KAAK4jJ,aAAa/lJ,EAAE24H,uBAAuBx2H,KAAK2jJ,cAAc,WAAW9lJ,EAAES,QAAQilJ,YAAYvjJ,KAAK6jJ,kBAAkBhmJ,EAAE24H,uBAAuB70H,EAAEkhB,IAAIpC,GAAGmkG,UAAU,KAAK5kH,KAAK8jJ,WAAWniJ,EAAEyjH,WAAW3kG,GAAGzgB,KAAK+jJ,WAAWlmJ,EAAEu/G,UAAUp9G,KAAKi6H,QAAO,EAAGj6H,KAAK0jJ,UAAS,EAAG7lJ,EAAE83H,QAAQhgE,GAAE/9C,SAAS,YAAY5X,KAAKgkJ,aAAahkJ,MAAM21D,GAAE/9C,SAAS,uBAAuB5X,KAAKikJ,YAAYjkJ,MAAM6vE,GAAEjtD,GAAG,EAAEohI,aAAa,SAASphI,GAAG,GAAGA,EAAEmxC,SAAS,IAAInxC,EAAEmxC,QAAQ91D,QAAQ+B,KAAK0jJ,SAAS,CAAC,IAAI/hJ,EAAE3B,KAAKsvG,KAAK7uF,EAAE9e,EAAEq5H,2BAA2Bp4G,EAAEmxC,QAAQ,IAAIl2D,EAAE8D,EAAEq5H,2BAA2Bp4G,EAAEmxC,QAAQ,IAAI52D,EAAEsjB,EAAE2kG,WAAWvnH,GAAGmC,KAAK8jJ,WAAW,GAAG9jJ,KAAK01G,MAAM/zG,EAAE81H,aAAat6H,EAAE6C,KAAK+jJ,aAAapiJ,EAAErD,QAAQklJ,qBAAqBxjJ,KAAK01G,MAAM/zG,EAAEo3G,cAAc57G,EAAE,GAAG6C,KAAK01G,MAAM/zG,EAAEk2G,cAAc,EAAE16G,KAAK6C,KAAK01G,MAAM/zG,EAAEyzH,WAAWp1H,KAAK01G,QAAQ,WAAW/zG,EAAErD,QAAQilJ,WAAW,GAAGvjJ,KAAKg7I,QAAQh7I,KAAK4jJ,aAAa,GAAGzmJ,EAAE,WAAW,CAAuD,GAAtDsjB,EAAEA,EAAE+jG,KAAK3mH,GAAG+mH,UAAU,GAAGF,UAAU1kH,KAAK2jJ,cAAiB,GAAGxmJ,GAAG,IAAIsjB,EAAElhB,GAAG,IAAIkhB,EAAEjhB,EAAE,OAAOQ,KAAKg7I,QAAQr5I,EAAEglH,UAAUhlH,EAAE+8E,QAAQ1+E,KAAK6jJ,kBAAkB7jJ,KAAK01G,OAAO+O,SAAShkG,GAAGzgB,KAAK01G,MAAM,CAAC11G,KAAKi6H,SAASt4H,EAAE21H,YAAW,GAAG,GAAIt3H,KAAKi6H,QAAO,GAAIv+E,EAAE17C,KAAKkkJ,cAAcrmJ,EAAEyT,EAAE3P,EAAE61H,MAAM71H,EAAE3B,KAAKg7I,QAAQh7I,KAAK01G,MAAM,CAACimB,OAAM,EAAG15F,OAAM,IAAKjiC,KAAKkkJ,aAAa3kJ,EAAE1B,EAAEmC,MAAK,GAAI6vE,GAAEjtD,EAAE,CAAC,EAAEqhI,YAAY,WAAWjkJ,KAAKi6H,QAAQj6H,KAAK0jJ,UAAU1jJ,KAAK0jJ,UAAS,EAAGhoG,EAAE17C,KAAKkkJ,cAAcv0B,GAAE/3G,SAAS,YAAY5X,KAAKgkJ,aAAahkJ,MAAM2vH,GAAE/3G,SAAS,uBAAuB5X,KAAKikJ,YAAYjkJ,MAAMA,KAAKsvG,KAAKhxG,QAAQuiH,cAAc7gH,KAAKsvG,KAAKsuB,aAAa59H,KAAKg7I,QAAQh7I,KAAKsvG,KAAK8lB,WAAWp1H,KAAK01G,QAAO,EAAG11G,KAAKsvG,KAAKhxG,QAAQm2H,UAAUz0H,KAAKsvG,KAAK2mB,WAAWj2H,KAAKg7I,QAAQh7I,KAAKsvG,KAAK8lB,WAAWp1H,KAAK01G,SAAS11G,KAAK0jJ,UAAS,CAAE,IAAS9zE,GAAE8hC,YAAY,aAAa,YAAY+X,IAAI75C,GAAEu0E,QAAQr8B,EAAGl4C,GAAEw0E,gBAAgBp7B,GAAGp5C,GAAEy0E,KAAKl7B,GAAGv5C,GAAE00E,SAASp7B,GAAGt5C,GAAE20E,gBAAgBl7B,GAAGz5C,GAAE40E,QAAQl7B,GAAG15C,GAAE60E,UAAUh7B,GAAG7mG,EAAE8hI,OAAO38F,EAAEnlC,EAAE44F,QAAQ/yB,GAAE7lE,EAAE+hI,IAAIt+B,EAAGzjG,EAAEgiI,OAAO3J,GAAGr4H,EAAEiiI,OAAO9X,GAAGnqH,EAAEkiI,aAAaxY,GAAG1pH,EAAEmiI,MAAMpiC,EAAG//F,EAAEosF,QAAQnnC,GAAEjlD,EAAEs3F,QAAQ45B,GAAGlxH,EAAEoiI,WAAWnU,GAAEjuH,EAAE4sF,SAASwY,EAAGplG,EAAEwsF,QAAQ2Y,EAAGnlG,EAAEqiI,UAAU9hB,GAAGvgH,EAAEsiI,QAAQnhC,EAAGnhG,EAAEqvF,aAAai1B,GAAGtkH,EAAEuiI,QAAQ/W,GAAGxrH,EAAEwiI,UAAUpQ,GAAGpyH,EAAEyiI,QAAQxnJ,EAAE+kB,EAAEs6F,KAAKmqB,GAAGzkH,EAAE0iI,aAAa9V,GAAG5sH,EAAEu5F,OAAOl/G,EAAE2lB,EAAEq0F,aAAarzG,EAAEgf,EAAE2iI,MAAMpoJ,GAAEylB,EAAEmyF,WAAWgxB,GAAGnjH,EAAE4iI,SAASt9B,GAAGtlG,EAAEitF,IAAIjgC,GAAEhtD,EAAEyvF,OAAOo3B,GAAG7mH,EAAEogG,MAAMiF,GAAGrlG,EAAEw9F,KAAK8qB,GAAGtoH,EAAEuwD,MAAM1iE,EAAEmS,EAAE6iI,SAASt9B,GAAGvlG,EAAE6wD,QAAQ06D,GAAGvrH,EAAEu9F,SAAS8sB,GAAGrqH,EAAE8iI,MAAM5T,GAAGlvH,EAAE+iI,aAAa1yB,GAAGrwG,EAAEgjI,WAAWr9B,GAAG3lG,EAAEijI,UAAUrH,GAAG57H,EAAEkjI,SAAStL,GAAG53H,EAAEy9F,IAAI49B,GAAGr7H,EAAEmjI,WAAWnV,GAAGhuH,EAAEojI,UAAUpN,GAAGh2H,EAAEqjI,QAAQhT,GAAGrwH,EAAEsjI,eAAe7+B,EAAGzkG,EAAE4wF,KAAKuO,EAAGn/F,EAAEujI,aAAahW,GAAGvtH,EAAE3Z,KAAKqI,EAAEsR,EAAEmzD,OAAO/uD,EAAEpE,EAAEypG,OAAO+wB,GAAGx6H,EAAE5pB,OAAO,SAAS4pB,EAAEjhB,EAAE8e,GAAG,OAAO,IAAIssH,GAAGnqH,EAAEjhB,EAAE8e,EAAE,EAAEmC,EAAEwjI,aAAa,SAASxjI,EAAEjhB,GAAG,OAAO,IAAI2qI,GAAG1pH,EAAEjhB,EAAE,EAAEihB,EAAEmvF,QAAQksB,GAAGr7G,EAAEyjI,QAAQ,SAASzjI,GAAG,OAAO,IAAIkxH,GAAGlxH,EAAE,EAAEA,EAAEssF,OAAOx2D,EAAE91B,EAAEgxF,aAAa,SAAShxF,EAAEjhB,GAAG,OAAO,IAAIulI,GAAGtkH,EAAEjhB,EAAE,EAAEihB,EAAE0jI,QAAQjX,GAAGzsH,EAAE2jI,QAAQ19B,GAAGjmG,EAAE4jI,UAAU,SAAS5jI,GAAG,OAAO,IAAIoyH,GAAGpyH,EAAE,EAAEA,EAAEs5F,KAAK,SAASt5F,GAAG,OAAO,IAAIykH,GAAGzkH,EAAE,EAAEA,EAAE6jI,aAAa,SAAS7jI,EAAEjhB,EAAE8e,GAAG,OAAO,IAAI+uH,GAAG5sH,EAAEjhB,EAAE8e,EAAE,EAAEmC,EAAE8jI,OAAO9jJ,EAAEggB,EAAE+jI,aAAajhJ,EAAEkd,EAAEgkI,WAAW,SAAShkI,EAAEjhB,GAAG,OAAO,IAAIokI,GAAGnjH,EAAEjhB,EAAE,EAAEihB,EAAEjf,IAAI,SAASif,EAAEjhB,GAAG,OAAO,IAAIiuE,GAAEhtD,EAAEjhB,EAAE,EAAEihB,EAAEikI,OAAO,SAASjkI,EAAEjhB,GAAG,OAAO,IAAI8nI,GAAG7mH,EAAEjhB,EAAE,EAAEihB,EAAEowC,MAAMtJ,EAAE9mC,EAAE21D,QAAQ,SAAS31D,EAAEjhB,GAAG,OAAO,IAAIwsI,GAAGvrH,EAAEjhB,EAAE,EAAEihB,EAAEkkI,SAAS,SAASlkI,EAAEjhB,GAAG,OAAO,IAAIsrI,GAAGrqH,EAAEjhB,EAAE,EAAEihB,EAAE2vH,MAAM,SAAS3vH,EAAEjhB,GAAG,OAAO,IAAImwI,GAAGlvH,EAAEjhB,EAAE,EAAEihB,EAAEmkI,UAAU,SAASnkI,EAAEjhB,GAAG,OAAO,IAAI68I,GAAG57H,EAAEjhB,EAAE,EAAEihB,EAAE6wF,WAAW36E,EAAElW,EAAEy0F,MAAM10G,EAAEigB,EAAEtT,IAAI8uI,GAAGx7H,EAAEokI,WAAW,SAASpkI,EAAEjhB,EAAE8e,GAAG,OAAO,IAAImwH,GAAGhuH,EAAEjhB,EAAE8e,EAAE,EAAEmC,EAAEqkI,UAAUtN,GAAG/2H,EAAEpqB,QAAQ,SAASoqB,EAAEjhB,GAAG,OAAO,IAAIsxI,GAAGrwH,EAAEjhB,EAAE,EAAEihB,EAAE2jG,eAAemB,EAAG9kG,EAAE3Q,QAAQ,QAAQ2Q,EAAEskI,aAAa,SAAStkI,EAAEjhB,EAAE8e,GAAG,OAAO,IAAI0vH,GAAGvtH,EAAEjhB,EAAE8e,EAAE,EAAE9N,OAAO87D,GAAG7rD,EAAEukI,WAAW,WAAW,OAAOx0I,OAAO87D,EAAE0yE,GAAGnhJ,IAAI,EAAE2S,OAAO87D,EAAE7rD,CAAC,CAAhy4IjhB,CAAEpL,E,GCHlE6wJ,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBvkJ,IAAjBwkJ,EACH,OAAOA,EAAahxJ,QAGrB,IAAID,EAAS8wJ,EAAyBE,GAAY,CAGjD/wJ,QAAS,CAAC,GAOX,OAHAixJ,EAAoBF,GAAUxqJ,KAAKxG,EAAOC,QAASD,EAAQA,EAAOC,QAAS8wJ,GAGpE/wJ,EAAOC,OACf,CCrBA8wJ,EAAoBxpJ,EAAI,SAASvH,GAChC,IAAIysD,EAASzsD,GAAUA,EAAOmxJ,WAC7B,WAAa,OAAOnxJ,EAAgB,OAAG,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADA+wJ,EAAoBtpJ,EAAEglD,EAAQ,CAAEzxC,EAAGyxC,IAC5BA,CACR,ECNAskG,EAAoBtpJ,EAAI,SAASxH,EAASmxJ,GACzC,IAAI,IAAInpJ,KAAOmpJ,EACXL,EAAoBlqJ,EAAEuqJ,EAAYnpJ,KAAS8oJ,EAAoBlqJ,EAAE5G,EAASgI,IAC5EnC,OAAOmuB,eAAeh0B,EAASgI,EAAK,CAAEhC,YAAY,EAAMiuB,IAAKk9H,EAAWnpJ,IAG3E,ECPA8oJ,EAAoBlqJ,EAAI,SAASzB,EAAKisJ,GAAQ,OAAOvrJ,OAAOR,UAAU2wD,eAAezvD,KAAKpB,EAAKisJ,EAAO,E,iFCGtGh1I,OAAO87D,EAAIA,EAQX97D,OAAO1S,GAAKA,EACZ0S,OAAOX,GAAKA,G","sources":["webpack://dfe-web-skeleton/./node_modules/c3/c3.js","webpack://dfe-web-skeleton/./node_modules/d3/d3.js","webpack://dfe-web-skeleton/./node_modules/leaflet-fullscreen/dist/Leaflet.fullscreen.js","webpack://dfe-web-skeleton/./node_modules/leaflet.markercluster/dist/leaflet.markercluster.js","webpack://dfe-web-skeleton/./node_modules/leaflet/dist/leaflet.js","webpack://dfe-web-skeleton/webpack/bootstrap","webpack://dfe-web-skeleton/webpack/runtime/compat get default export","webpack://dfe-web-skeleton/webpack/runtime/define property getters","webpack://dfe-web-skeleton/webpack/runtime/hasOwnProperty shorthand","webpack://dfe-web-skeleton/./ClientApp/Entry/MapChartVendor.js"],"sourcesContent":["/* @license C3.js v0.4.24 | (c) C3 Team and other contributors | http://c3js.org/ */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.c3 = factory());\n}(this, (function () { 'use strict';\n\n var CLASS = {\n target: 'c3-target',\n chart: 'c3-chart',\n chartLine: 'c3-chart-line',\n chartLines: 'c3-chart-lines',\n chartBar: 'c3-chart-bar',\n chartBars: 'c3-chart-bars',\n chartText: 'c3-chart-text',\n chartTexts: 'c3-chart-texts',\n chartArc: 'c3-chart-arc',\n chartArcs: 'c3-chart-arcs',\n chartArcsTitle: 'c3-chart-arcs-title',\n chartArcsBackground: 'c3-chart-arcs-background',\n chartArcsGaugeUnit: 'c3-chart-arcs-gauge-unit',\n chartArcsGaugeMax: 'c3-chart-arcs-gauge-max',\n chartArcsGaugeMin: 'c3-chart-arcs-gauge-min',\n selectedCircle: 'c3-selected-circle',\n selectedCircles: 'c3-selected-circles',\n eventRect: 'c3-event-rect',\n eventRects: 'c3-event-rects',\n eventRectsSingle: 'c3-event-rects-single',\n eventRectsMultiple: 'c3-event-rects-multiple',\n zoomRect: 'c3-zoom-rect',\n brush: 'c3-brush',\n focused: 'c3-focused',\n defocused: 'c3-defocused',\n region: 'c3-region',\n regions: 'c3-regions',\n title: 'c3-title',\n tooltipContainer: 'c3-tooltip-container',\n tooltip: 'c3-tooltip',\n tooltipName: 'c3-tooltip-name',\n shape: 'c3-shape',\n shapes: 'c3-shapes',\n line: 'c3-line',\n lines: 'c3-lines',\n bar: 'c3-bar',\n bars: 'c3-bars',\n circle: 'c3-circle',\n circles: 'c3-circles',\n arc: 'c3-arc',\n arcLabelLine: 'c3-arc-label-line',\n arcs: 'c3-arcs',\n area: 'c3-area',\n areas: 'c3-areas',\n empty: 'c3-empty',\n text: 'c3-text',\n texts: 'c3-texts',\n gaugeValue: 'c3-gauge-value',\n grid: 'c3-grid',\n gridLines: 'c3-grid-lines',\n xgrid: 'c3-xgrid',\n xgrids: 'c3-xgrids',\n xgridLine: 'c3-xgrid-line',\n xgridLines: 'c3-xgrid-lines',\n xgridFocus: 'c3-xgrid-focus',\n ygrid: 'c3-ygrid',\n ygrids: 'c3-ygrids',\n ygridLine: 'c3-ygrid-line',\n ygridLines: 'c3-ygrid-lines',\n axis: 'c3-axis',\n axisX: 'c3-axis-x',\n axisXLabel: 'c3-axis-x-label',\n axisY: 'c3-axis-y',\n axisYLabel: 'c3-axis-y-label',\n axisY2: 'c3-axis-y2',\n axisY2Label: 'c3-axis-y2-label',\n legendBackground: 'c3-legend-background',\n legendItem: 'c3-legend-item',\n legendItemEvent: 'c3-legend-item-event',\n legendItemTile: 'c3-legend-item-tile',\n legendItemHidden: 'c3-legend-item-hidden',\n legendItemFocused: 'c3-legend-item-focused',\n dragarea: 'c3-dragarea',\n EXPANDED: '_expanded_',\n SELECTED: '_selected_',\n INCLUDED: '_included_'\n };\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n var classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n\n var inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n };\n\n var possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n };\n\n var isValue = function isValue(v) {\n return v || v === 0;\n };\n var isFunction = function isFunction(o) {\n return typeof o === 'function';\n };\n var isArray = function isArray(o) {\n return Array.isArray(o);\n };\n var isString = function isString(o) {\n return typeof o === 'string';\n };\n var isUndefined = function isUndefined(v) {\n return typeof v === 'undefined';\n };\n var isDefined = function isDefined(v) {\n return typeof v !== 'undefined';\n };\n var ceil10 = function ceil10(v) {\n return Math.ceil(v / 10) * 10;\n };\n var asHalfPixel = function asHalfPixel(n) {\n return Math.ceil(n) + 0.5;\n };\n var diffDomain = function diffDomain(d) {\n return d[1] - d[0];\n };\n var isEmpty = function isEmpty(o) {\n return typeof o === 'undefined' || o === null || isString(o) && o.length === 0 || (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === 'object' && Object.keys(o).length === 0;\n };\n var notEmpty = function notEmpty(o) {\n return !c3_chart_internal_fn.isEmpty(o);\n };\n var getOption = function getOption(options, key, defaultValue) {\n return isDefined(options[key]) ? options[key] : defaultValue;\n };\n var hasValue = function hasValue(dict, value) {\n var found = false;\n Object.keys(dict).forEach(function (key) {\n if (dict[key] === value) {\n found = true;\n }\n });\n return found;\n };\n var sanitise = function sanitise(str) {\n return typeof str === 'string' ? str.replace(/</g, '<').replace(/>/g, '>') : str;\n };\n var getPathBox = function getPathBox(path) {\n var box = path.getBoundingClientRect(),\n items = [path.pathSegList.getItem(0), path.pathSegList.getItem(1)],\n minX = items[0].x,\n minY = Math.min(items[0].y, items[1].y);\n return { x: minX, y: minY, width: box.width, height: box.height };\n };\n\n var c3_axis_fn;\n var c3_axis_internal_fn;\n\n function AxisInternal(component, params) {\n var internal = this;\n internal.component = component;\n internal.params = params || {};\n\n internal.d3 = component.d3;\n internal.scale = internal.d3.scale.linear();\n internal.range;\n internal.orient = \"bottom\";\n internal.innerTickSize = 6;\n internal.outerTickSize = this.params.withOuterTick ? 6 : 0;\n internal.tickPadding = 3;\n internal.tickValues = null;\n internal.tickFormat;\n internal.tickArguments;\n\n internal.tickOffset = 0;\n internal.tickCulling = true;\n internal.tickCentered;\n internal.tickTextCharSize;\n internal.tickTextRotate = internal.params.tickTextRotate;\n internal.tickLength;\n\n internal.axis = internal.generateAxis();\n }\n c3_axis_internal_fn = AxisInternal.prototype;\n\n c3_axis_internal_fn.axisX = function (selection, x, tickOffset) {\n selection.attr(\"transform\", function (d) {\n return \"translate(\" + Math.ceil(x(d) + tickOffset) + \", 0)\";\n });\n };\n c3_axis_internal_fn.axisY = function (selection, y) {\n selection.attr(\"transform\", function (d) {\n return \"translate(0,\" + Math.ceil(y(d)) + \")\";\n });\n };\n c3_axis_internal_fn.scaleExtent = function (domain) {\n var start = domain[0],\n stop = domain[domain.length - 1];\n return start < stop ? [start, stop] : [stop, start];\n };\n c3_axis_internal_fn.generateTicks = function (scale) {\n var internal = this;\n var i,\n domain,\n ticks = [];\n if (scale.ticks) {\n return scale.ticks.apply(scale, internal.tickArguments);\n }\n domain = scale.domain();\n for (i = Math.ceil(domain[0]); i < domain[1]; i++) {\n ticks.push(i);\n }\n if (ticks.length > 0 && ticks[0] > 0) {\n ticks.unshift(ticks[0] - (ticks[1] - ticks[0]));\n }\n return ticks;\n };\n c3_axis_internal_fn.copyScale = function () {\n var internal = this;\n var newScale = internal.scale.copy(),\n domain;\n if (internal.params.isCategory) {\n domain = internal.scale.domain();\n newScale.domain([domain[0], domain[1] - 1]);\n }\n return newScale;\n };\n c3_axis_internal_fn.textFormatted = function (v) {\n var internal = this,\n formatted = internal.tickFormat ? internal.tickFormat(v) : v;\n return typeof formatted !== 'undefined' ? formatted : '';\n };\n c3_axis_internal_fn.updateRange = function () {\n var internal = this;\n internal.range = internal.scale.rangeExtent ? internal.scale.rangeExtent() : internal.scaleExtent(internal.scale.range());\n return internal.range;\n };\n c3_axis_internal_fn.updateTickTextCharSize = function (tick) {\n var internal = this;\n if (internal.tickTextCharSize) {\n return internal.tickTextCharSize;\n }\n var size = {\n h: 11.5,\n w: 5.5\n };\n tick.select('text').text(function (d) {\n return internal.textFormatted(d);\n }).each(function (d) {\n var box = this.getBoundingClientRect(),\n text = internal.textFormatted(d),\n h = box.height,\n w = text ? box.width / text.length : undefined;\n if (h && w) {\n size.h = h;\n size.w = w;\n }\n }).text('');\n internal.tickTextCharSize = size;\n return size;\n };\n c3_axis_internal_fn.transitionise = function (selection) {\n return this.params.withoutTransition ? selection : this.d3.transition(selection);\n };\n c3_axis_internal_fn.isVertical = function () {\n return this.orient === 'left' || this.orient === 'right';\n };\n c3_axis_internal_fn.tspanData = function (d, i, ticks, scale) {\n var internal = this;\n var splitted = internal.params.tickMultiline ? internal.splitTickText(d, ticks, scale) : [].concat(internal.textFormatted(d));\n\n if (internal.params.tickMultiline && internal.params.tickMultilineMax > 0) {\n splitted = internal.ellipsify(splitted, internal.params.tickMultilineMax);\n }\n\n return splitted.map(function (s) {\n return { index: i, splitted: s, length: splitted.length };\n });\n };\n c3_axis_internal_fn.splitTickText = function (d, ticks, scale) {\n var internal = this,\n tickText = internal.textFormatted(d),\n maxWidth = internal.params.tickWidth,\n subtext,\n spaceIndex,\n textWidth,\n splitted = [];\n\n if (Object.prototype.toString.call(tickText) === \"[object Array]\") {\n return tickText;\n }\n\n if (!maxWidth || maxWidth <= 0) {\n maxWidth = internal.isVertical() ? 95 : internal.params.isCategory ? Math.ceil(scale(ticks[1]) - scale(ticks[0])) - 12 : 110;\n }\n\n function split(splitted, text) {\n spaceIndex = undefined;\n for (var i = 1; i < text.length; i++) {\n if (text.charAt(i) === ' ') {\n spaceIndex = i;\n }\n subtext = text.substr(0, i + 1);\n textWidth = internal.tickTextCharSize.w * subtext.length;\n // if text width gets over tick width, split by space index or crrent index\n if (maxWidth < textWidth) {\n return split(splitted.concat(text.substr(0, spaceIndex ? spaceIndex : i)), text.slice(spaceIndex ? spaceIndex + 1 : i));\n }\n }\n return splitted.concat(text);\n }\n\n return split(splitted, tickText + \"\");\n };\n c3_axis_internal_fn.ellipsify = function (splitted, max) {\n if (splitted.length <= max) {\n return splitted;\n }\n\n var ellipsified = splitted.slice(0, max);\n var remaining = 3;\n for (var i = max - 1; i >= 0; i--) {\n var available = ellipsified[i].length;\n\n ellipsified[i] = ellipsified[i].substr(0, available - remaining).padEnd(available, '.');\n\n remaining -= available;\n\n if (remaining <= 0) {\n break;\n }\n }\n\n return ellipsified;\n };\n c3_axis_internal_fn.updateTickLength = function () {\n var internal = this;\n internal.tickLength = Math.max(internal.innerTickSize, 0) + internal.tickPadding;\n };\n c3_axis_internal_fn.lineY2 = function (d) {\n var internal = this,\n tickPosition = internal.scale(d) + (internal.tickCentered ? 0 : internal.tickOffset);\n return internal.range[0] < tickPosition && tickPosition < internal.range[1] ? internal.innerTickSize : 0;\n };\n c3_axis_internal_fn.textY = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? 11.5 - 2.5 * (rotate / 15) * (rotate > 0 ? 1 : -1) : internal.tickLength;\n };\n c3_axis_internal_fn.textTransform = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? \"rotate(\" + rotate + \")\" : \"\";\n };\n c3_axis_internal_fn.textTextAnchor = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? rotate > 0 ? \"start\" : \"end\" : \"middle\";\n };\n c3_axis_internal_fn.tspanDx = function () {\n var internal = this,\n rotate = internal.tickTextRotate;\n return rotate ? 8 * Math.sin(Math.PI * (rotate / 180)) : 0;\n };\n c3_axis_internal_fn.tspanDy = function (d, i) {\n var internal = this,\n dy = internal.tickTextCharSize.h;\n if (i === 0) {\n if (internal.isVertical()) {\n dy = -((d.length - 1) * (internal.tickTextCharSize.h / 2) - 3);\n } else {\n dy = \".71em\";\n }\n }\n return dy;\n };\n\n c3_axis_internal_fn.generateAxis = function () {\n var internal = this,\n d3 = internal.d3,\n params = internal.params;\n function axis(g) {\n g.each(function () {\n var g = axis.g = d3.select(this);\n\n var scale0 = this.__chart__ || internal.scale,\n scale1 = this.__chart__ = internal.copyScale();\n\n var ticks = internal.tickValues ? internal.tickValues : internal.generateTicks(scale1),\n tick = g.selectAll(\".tick\").data(ticks, scale1),\n tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", 1e-6),\n\n // MEMO: No exit transition. The reason is this transition affects max tick width calculation because old tick will be included in the ticks.\n tickExit = tick.exit().remove(),\n tickUpdate = internal.transitionise(tick).style(\"opacity\", 1),\n tickTransform,\n tickX,\n tickY;\n\n if (params.isCategory) {\n internal.tickOffset = Math.ceil((scale1(1) - scale1(0)) / 2);\n tickX = internal.tickCentered ? 0 : internal.tickOffset;\n tickY = internal.tickCentered ? internal.tickOffset : 0;\n } else {\n internal.tickOffset = tickX = 0;\n }\n\n tickEnter.append(\"line\");\n tickEnter.append(\"text\");\n\n internal.updateRange();\n internal.updateTickLength();\n internal.updateTickTextCharSize(g.select('.tick'));\n\n var lineUpdate = tickUpdate.select(\"line\"),\n textUpdate = tickUpdate.select(\"text\"),\n tspanUpdate = tick.select(\"text\").selectAll('tspan').data(function (d, i) {\n return internal.tspanData(d, i, ticks, scale1);\n });\n\n tspanUpdate.enter().append('tspan');\n tspanUpdate.exit().remove();\n tspanUpdate.text(function (d) {\n return d.splitted;\n });\n\n var path = g.selectAll(\".domain\").data([0]),\n pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), internal.transitionise(path));\n\n // TODO: each attr should be one function and change its behavior by internal.orient, probably\n switch (internal.orient) {\n case \"bottom\":\n {\n tickTransform = internal.axisX;\n lineUpdate.attr(\"x1\", tickX).attr(\"x2\", tickX).attr(\"y2\", function (d, i) {\n return internal.lineY2(d, i);\n });\n textUpdate.attr(\"x\", 0).attr(\"y\", function (d, i) {\n return internal.textY(d, i);\n }).attr(\"transform\", function (d, i) {\n return internal.textTransform(d, i);\n }).style(\"text-anchor\", function (d, i) {\n return internal.textTextAnchor(d, i);\n });\n tspanUpdate.attr('x', 0).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n }).attr('dx', function (d, i) {\n return internal.tspanDx(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + internal.range[0] + \",\" + internal.outerTickSize + \"V0H\" + internal.range[1] + \"V\" + internal.outerTickSize);\n break;\n }\n case \"top\":\n {\n // TODO: rotated tick text\n tickTransform = internal.axisX;\n lineUpdate.attr(\"x1\", tickX).attr(\"x2\", tickX).attr(\"y2\", function (d, i) {\n return -1 * internal.lineY2(d, i);\n });\n textUpdate.attr(\"x\", 0).attr(\"y\", function (d, i) {\n return -1 * internal.textY(d, i) - (params.isCategory ? 2 : internal.tickLength - 2);\n }).attr(\"transform\", function (d, i) {\n return internal.textTransform(d, i);\n }).style(\"text-anchor\", function (d, i) {\n return internal.textTextAnchor(d, i);\n });\n tspanUpdate.attr('x', 0).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n }).attr('dx', function (d, i) {\n return internal.tspanDx(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + internal.range[0] + \",\" + -internal.outerTickSize + \"V0H\" + internal.range[1] + \"V\" + -internal.outerTickSize);\n break;\n }\n case \"left\":\n {\n tickTransform = internal.axisY;\n lineUpdate.attr(\"x2\", -internal.innerTickSize).attr(\"y1\", tickY).attr(\"y2\", tickY);\n textUpdate.attr(\"x\", -internal.tickLength).attr(\"y\", internal.tickOffset).style(\"text-anchor\", \"end\");\n tspanUpdate.attr('x', -internal.tickLength).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + -internal.outerTickSize + \",\" + internal.range[0] + \"H0V\" + internal.range[1] + \"H\" + -internal.outerTickSize);\n break;\n }\n case \"right\":\n {\n tickTransform = internal.axisY;\n lineUpdate.attr(\"x2\", internal.innerTickSize).attr(\"y1\", tickY).attr(\"y2\", tickY);\n textUpdate.attr(\"x\", internal.tickLength).attr(\"y\", internal.tickOffset).style(\"text-anchor\", \"start\");\n tspanUpdate.attr('x', internal.tickLength).attr(\"dy\", function (d, i) {\n return internal.tspanDy(d, i);\n });\n pathUpdate.attr(\"d\", \"M\" + internal.outerTickSize + \",\" + internal.range[0] + \"H0V\" + internal.range[1] + \"H\" + internal.outerTickSize);\n break;\n }\n }\n if (scale1.rangeBand) {\n var x = scale1,\n dx = x.rangeBand() / 2;\n scale0 = scale1 = function scale1(d) {\n return x(d) + dx;\n };\n } else if (scale0.rangeBand) {\n scale0 = scale1;\n } else {\n tickExit.call(tickTransform, scale1, internal.tickOffset);\n }\n tickEnter.call(tickTransform, scale0, internal.tickOffset);\n tickUpdate.call(tickTransform, scale1, internal.tickOffset);\n });\n }\n axis.scale = function (x) {\n if (!arguments.length) {\n return internal.scale;\n }\n internal.scale = x;\n return axis;\n };\n axis.orient = function (x) {\n if (!arguments.length) {\n return internal.orient;\n }\n internal.orient = x in { top: 1, right: 1, bottom: 1, left: 1 } ? x + \"\" : \"bottom\";\n return axis;\n };\n axis.tickFormat = function (format) {\n if (!arguments.length) {\n return internal.tickFormat;\n }\n internal.tickFormat = format;\n return axis;\n };\n axis.tickCentered = function (isCentered) {\n if (!arguments.length) {\n return internal.tickCentered;\n }\n internal.tickCentered = isCentered;\n return axis;\n };\n axis.tickOffset = function () {\n return internal.tickOffset;\n };\n axis.tickInterval = function () {\n var interval, length;\n if (params.isCategory) {\n interval = internal.tickOffset * 2;\n } else {\n length = axis.g.select('path.domain').node().getTotalLength() - internal.outerTickSize * 2;\n interval = length / axis.g.selectAll('line').size();\n }\n return interval === Infinity ? 0 : interval;\n };\n axis.ticks = function () {\n if (!arguments.length) {\n return internal.tickArguments;\n }\n internal.tickArguments = arguments;\n return axis;\n };\n axis.tickCulling = function (culling) {\n if (!arguments.length) {\n return internal.tickCulling;\n }\n internal.tickCulling = culling;\n return axis;\n };\n axis.tickValues = function (x) {\n if (typeof x === 'function') {\n internal.tickValues = function () {\n return x(internal.scale.domain());\n };\n } else {\n if (!arguments.length) {\n return internal.tickValues;\n }\n internal.tickValues = x;\n }\n return axis;\n };\n return axis;\n };\n\n var Axis = function (_Component) {\n inherits(Axis, _Component);\n\n function Axis(owner) {\n classCallCheck(this, Axis);\n\n var fn = {\n fn: c3_axis_fn,\n internal: {\n fn: c3_axis_internal_fn\n }\n };\n\n var _this = possibleConstructorReturn(this, (Axis.__proto__ || Object.getPrototypeOf(Axis)).call(this, owner, 'axis', fn));\n\n _this.d3 = owner.d3;\n _this.internal = AxisInternal;\n return _this;\n }\n\n return Axis;\n }(Component);\n\n c3_axis_fn = Axis.prototype;\n\n c3_axis_fn.init = function init() {\n var $$ = this.owner,\n config = $$.config,\n main = $$.main;\n $$.axes.x = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisX).attr(\"clip-path\", config.axis_x_inner ? \"\" : $$.clipPathForXAxis).attr(\"transform\", $$.getTranslate('x')).style(\"visibility\", config.axis_x_show ? 'visible' : 'hidden');\n $$.axes.x.append(\"text\").attr(\"class\", CLASS.axisXLabel).attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\").style(\"text-anchor\", this.textAnchorForXAxisLabel.bind(this));\n $$.axes.y = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisY).attr(\"clip-path\", config.axis_y_inner ? \"\" : $$.clipPathForYAxis).attr(\"transform\", $$.getTranslate('y')).style(\"visibility\", config.axis_y_show ? 'visible' : 'hidden');\n $$.axes.y.append(\"text\").attr(\"class\", CLASS.axisYLabel).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").style(\"text-anchor\", this.textAnchorForYAxisLabel.bind(this));\n\n $$.axes.y2 = main.append(\"g\").attr(\"class\", CLASS.axis + ' ' + CLASS.axisY2)\n // clip-path?\n .attr(\"transform\", $$.getTranslate('y2')).style(\"visibility\", config.axis_y2_show ? 'visible' : 'hidden');\n $$.axes.y2.append(\"text\").attr(\"class\", CLASS.axisY2Label).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").style(\"text-anchor\", this.textAnchorForY2AxisLabel.bind(this));\n };\n c3_axis_fn.getXAxis = function getXAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n var $$ = this.owner,\n config = $$.config,\n axisParams = {\n isCategory: $$.isCategorized(),\n withOuterTick: withOuterTick,\n tickMultiline: config.axis_x_tick_multiline,\n tickMultilineMax: config.axis_x_tick_multiline ? Number(config.axis_x_tick_multilineMax) : 0,\n tickWidth: config.axis_x_tick_width,\n tickTextRotate: withoutRotateTickText ? 0 : config.axis_x_tick_rotate,\n withoutTransition: withoutTransition\n },\n axis = new this.internal(this, axisParams).axis.scale(scale).orient(orient);\n\n if ($$.isTimeSeries() && tickValues && typeof tickValues !== \"function\") {\n tickValues = tickValues.map(function (v) {\n return $$.parseDate(v);\n });\n }\n\n // Set tick\n axis.tickFormat(tickFormat).tickValues(tickValues);\n if ($$.isCategorized()) {\n axis.tickCentered(config.axis_x_tick_centered);\n if (isEmpty(config.axis_x_tick_culling)) {\n config.axis_x_tick_culling = false;\n }\n }\n\n return axis;\n };\n c3_axis_fn.updateXAxisTickValues = function updateXAxisTickValues(targets, axis) {\n var $$ = this.owner,\n config = $$.config,\n tickValues;\n if (config.axis_x_tick_fit || config.axis_x_tick_count) {\n tickValues = this.generateTickValues($$.mapTargetsToUniqueXs(targets), config.axis_x_tick_count, $$.isTimeSeries());\n }\n if (axis) {\n axis.tickValues(tickValues);\n } else {\n $$.xAxis.tickValues(tickValues);\n $$.subXAxis.tickValues(tickValues);\n }\n return tickValues;\n };\n c3_axis_fn.getYAxis = function getYAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) {\n var $$ = this.owner,\n config = $$.config,\n axisParams = {\n withOuterTick: withOuterTick,\n withoutTransition: withoutTransition,\n tickTextRotate: withoutRotateTickText ? 0 : config.axis_y_tick_rotate\n },\n axis = new this.internal(this, axisParams).axis.scale(scale).orient(orient).tickFormat(tickFormat);\n if ($$.isTimeSeriesY()) {\n axis.ticks($$.d3.time[config.axis_y_tick_time_value], config.axis_y_tick_time_interval);\n } else {\n axis.tickValues(tickValues);\n }\n return axis;\n };\n c3_axis_fn.getId = function getId(id) {\n var config = this.owner.config;\n return id in config.data_axes ? config.data_axes[id] : 'y';\n };\n c3_axis_fn.getXAxisTickFormat = function getXAxisTickFormat() {\n var $$ = this.owner,\n config = $$.config,\n format = $$.isTimeSeries() ? $$.defaultAxisTimeFormat : $$.isCategorized() ? $$.categoryName : function (v) {\n return v < 0 ? v.toFixed(0) : v;\n };\n if (config.axis_x_tick_format) {\n if (isFunction(config.axis_x_tick_format)) {\n format = config.axis_x_tick_format;\n } else if ($$.isTimeSeries()) {\n format = function format(date) {\n return date ? $$.axisTimeFormat(config.axis_x_tick_format)(date) : \"\";\n };\n }\n }\n return isFunction(format) ? function (v) {\n return format.call($$, v);\n } : format;\n };\n c3_axis_fn.getTickValues = function getTickValues(tickValues, axis) {\n return tickValues ? tickValues : axis ? axis.tickValues() : undefined;\n };\n c3_axis_fn.getXAxisTickValues = function getXAxisTickValues() {\n return this.getTickValues(this.owner.config.axis_x_tick_values, this.owner.xAxis);\n };\n c3_axis_fn.getYAxisTickValues = function getYAxisTickValues() {\n return this.getTickValues(this.owner.config.axis_y_tick_values, this.owner.yAxis);\n };\n c3_axis_fn.getY2AxisTickValues = function getY2AxisTickValues() {\n return this.getTickValues(this.owner.config.axis_y2_tick_values, this.owner.y2Axis);\n };\n c3_axis_fn.getLabelOptionByAxisId = function getLabelOptionByAxisId(axisId) {\n var $$ = this.owner,\n config = $$.config,\n option;\n if (axisId === 'y') {\n option = config.axis_y_label;\n } else if (axisId === 'y2') {\n option = config.axis_y2_label;\n } else if (axisId === 'x') {\n option = config.axis_x_label;\n }\n return option;\n };\n c3_axis_fn.getLabelText = function getLabelText(axisId) {\n var option = this.getLabelOptionByAxisId(axisId);\n return isString(option) ? option : option ? option.text : null;\n };\n c3_axis_fn.setLabelText = function setLabelText(axisId, text) {\n var $$ = this.owner,\n config = $$.config,\n option = this.getLabelOptionByAxisId(axisId);\n if (isString(option)) {\n if (axisId === 'y') {\n config.axis_y_label = text;\n } else if (axisId === 'y2') {\n config.axis_y2_label = text;\n } else if (axisId === 'x') {\n config.axis_x_label = text;\n }\n } else if (option) {\n option.text = text;\n }\n };\n c3_axis_fn.getLabelPosition = function getLabelPosition(axisId, defaultPosition) {\n var option = this.getLabelOptionByAxisId(axisId),\n position = option && (typeof option === 'undefined' ? 'undefined' : _typeof(option)) === 'object' && option.position ? option.position : defaultPosition;\n return {\n isInner: position.indexOf('inner') >= 0,\n isOuter: position.indexOf('outer') >= 0,\n isLeft: position.indexOf('left') >= 0,\n isCenter: position.indexOf('center') >= 0,\n isRight: position.indexOf('right') >= 0,\n isTop: position.indexOf('top') >= 0,\n isMiddle: position.indexOf('middle') >= 0,\n isBottom: position.indexOf('bottom') >= 0\n };\n };\n c3_axis_fn.getXAxisLabelPosition = function getXAxisLabelPosition() {\n return this.getLabelPosition('x', this.owner.config.axis_rotated ? 'inner-top' : 'inner-right');\n };\n c3_axis_fn.getYAxisLabelPosition = function getYAxisLabelPosition() {\n return this.getLabelPosition('y', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n };\n c3_axis_fn.getY2AxisLabelPosition = function getY2AxisLabelPosition() {\n return this.getLabelPosition('y2', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top');\n };\n c3_axis_fn.getLabelPositionById = function getLabelPositionById(id) {\n return id === 'y2' ? this.getY2AxisLabelPosition() : id === 'y' ? this.getYAxisLabelPosition() : this.getXAxisLabelPosition();\n };\n c3_axis_fn.textForXAxisLabel = function textForXAxisLabel() {\n return this.getLabelText('x');\n };\n c3_axis_fn.textForYAxisLabel = function textForYAxisLabel() {\n return this.getLabelText('y');\n };\n c3_axis_fn.textForY2AxisLabel = function textForY2AxisLabel() {\n return this.getLabelText('y2');\n };\n c3_axis_fn.xForAxisLabel = function xForAxisLabel(forHorizontal, position) {\n var $$ = this.owner;\n if (forHorizontal) {\n return position.isLeft ? 0 : position.isCenter ? $$.width / 2 : $$.width;\n } else {\n return position.isBottom ? -$$.height : position.isMiddle ? -$$.height / 2 : 0;\n }\n };\n c3_axis_fn.dxForAxisLabel = function dxForAxisLabel(forHorizontal, position) {\n if (forHorizontal) {\n return position.isLeft ? \"0.5em\" : position.isRight ? \"-0.5em\" : \"0\";\n } else {\n return position.isTop ? \"-0.5em\" : position.isBottom ? \"0.5em\" : \"0\";\n }\n };\n c3_axis_fn.textAnchorForAxisLabel = function textAnchorForAxisLabel(forHorizontal, position) {\n if (forHorizontal) {\n return position.isLeft ? 'start' : position.isCenter ? 'middle' : 'end';\n } else {\n return position.isBottom ? 'start' : position.isMiddle ? 'middle' : 'end';\n }\n };\n c3_axis_fn.xForXAxisLabel = function xForXAxisLabel() {\n return this.xForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n };\n c3_axis_fn.xForYAxisLabel = function xForYAxisLabel() {\n return this.xForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n };\n c3_axis_fn.xForY2AxisLabel = function xForY2AxisLabel() {\n return this.xForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n };\n c3_axis_fn.dxForXAxisLabel = function dxForXAxisLabel() {\n return this.dxForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition());\n };\n c3_axis_fn.dxForYAxisLabel = function dxForYAxisLabel() {\n return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition());\n };\n c3_axis_fn.dxForY2AxisLabel = function dxForY2AxisLabel() {\n return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition());\n };\n c3_axis_fn.dyForXAxisLabel = function dyForXAxisLabel() {\n var $$ = this.owner,\n config = $$.config,\n position = this.getXAxisLabelPosition();\n if (config.axis_rotated) {\n return position.isInner ? \"1.2em\" : -25 - ($$.config.axis_x_inner ? 0 : this.getMaxTickWidth('x'));\n } else {\n return position.isInner ? \"-0.5em\" : config.axis_x_height ? config.axis_x_height - 10 : \"3em\";\n }\n };\n c3_axis_fn.dyForYAxisLabel = function dyForYAxisLabel() {\n var $$ = this.owner,\n position = this.getYAxisLabelPosition();\n if ($$.config.axis_rotated) {\n return position.isInner ? \"-0.5em\" : \"3em\";\n } else {\n return position.isInner ? \"1.2em\" : -10 - ($$.config.axis_y_inner ? 0 : this.getMaxTickWidth('y') + 10);\n }\n };\n c3_axis_fn.dyForY2AxisLabel = function dyForY2AxisLabel() {\n var $$ = this.owner,\n position = this.getY2AxisLabelPosition();\n if ($$.config.axis_rotated) {\n return position.isInner ? \"1.2em\" : \"-2.2em\";\n } else {\n return position.isInner ? \"-0.5em\" : 15 + ($$.config.axis_y2_inner ? 0 : this.getMaxTickWidth('y2') + 15);\n }\n };\n c3_axis_fn.textAnchorForXAxisLabel = function textAnchorForXAxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel(!$$.config.axis_rotated, this.getXAxisLabelPosition());\n };\n c3_axis_fn.textAnchorForYAxisLabel = function textAnchorForYAxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getYAxisLabelPosition());\n };\n c3_axis_fn.textAnchorForY2AxisLabel = function textAnchorForY2AxisLabel() {\n var $$ = this.owner;\n return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getY2AxisLabelPosition());\n };\n c3_axis_fn.getMaxTickWidth = function getMaxTickWidth(id, withoutRecompute) {\n var $$ = this.owner,\n config = $$.config,\n maxWidth = 0,\n targetsToShow,\n scale,\n axis,\n dummy,\n svg;\n if (withoutRecompute && $$.currentMaxTickWidths[id]) {\n return $$.currentMaxTickWidths[id];\n }\n if ($$.svg) {\n targetsToShow = $$.filterTargetsToShow($$.data.targets);\n if (id === 'y') {\n scale = $$.y.copy().domain($$.getYDomain(targetsToShow, 'y'));\n axis = this.getYAxis(scale, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, false, true, true);\n } else if (id === 'y2') {\n scale = $$.y2.copy().domain($$.getYDomain(targetsToShow, 'y2'));\n axis = this.getYAxis(scale, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, false, true, true);\n } else {\n scale = $$.x.copy().domain($$.getXDomain(targetsToShow));\n axis = this.getXAxis(scale, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, false, true, true);\n this.updateXAxisTickValues(targetsToShow, axis);\n }\n dummy = $$.d3.select('body').append('div').classed('c3', true);\n svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0), svg.append('g').call(axis).each(function () {\n $$.d3.select(this).selectAll('text').each(function () {\n var box = this.getBoundingClientRect();\n if (maxWidth < box.width) {\n maxWidth = box.width;\n }\n });\n dummy.remove();\n });\n }\n $$.currentMaxTickWidths[id] = maxWidth <= 0 ? $$.currentMaxTickWidths[id] : maxWidth;\n return $$.currentMaxTickWidths[id];\n };\n\n c3_axis_fn.updateLabels = function updateLabels(withTransition) {\n var $$ = this.owner;\n var axisXLabel = $$.main.select('.' + CLASS.axisX + ' .' + CLASS.axisXLabel),\n axisYLabel = $$.main.select('.' + CLASS.axisY + ' .' + CLASS.axisYLabel),\n axisY2Label = $$.main.select('.' + CLASS.axisY2 + ' .' + CLASS.axisY2Label);\n (withTransition ? axisXLabel.transition() : axisXLabel).attr(\"x\", this.xForXAxisLabel.bind(this)).attr(\"dx\", this.dxForXAxisLabel.bind(this)).attr(\"dy\", this.dyForXAxisLabel.bind(this)).text(this.textForXAxisLabel.bind(this));\n (withTransition ? axisYLabel.transition() : axisYLabel).attr(\"x\", this.xForYAxisLabel.bind(this)).attr(\"dx\", this.dxForYAxisLabel.bind(this)).attr(\"dy\", this.dyForYAxisLabel.bind(this)).text(this.textForYAxisLabel.bind(this));\n (withTransition ? axisY2Label.transition() : axisY2Label).attr(\"x\", this.xForY2AxisLabel.bind(this)).attr(\"dx\", this.dxForY2AxisLabel.bind(this)).attr(\"dy\", this.dyForY2AxisLabel.bind(this)).text(this.textForY2AxisLabel.bind(this));\n };\n c3_axis_fn.getPadding = function getPadding(padding, key, defaultValue, domainLength) {\n var p = typeof padding === 'number' ? padding : padding[key];\n if (!isValue(p)) {\n return defaultValue;\n }\n if (padding.unit === 'ratio') {\n return padding[key] * domainLength;\n }\n // assume padding is pixels if unit is not specified\n return this.convertPixelsToAxisPadding(p, domainLength);\n };\n c3_axis_fn.convertPixelsToAxisPadding = function convertPixelsToAxisPadding(pixels, domainLength) {\n var $$ = this.owner,\n length = $$.config.axis_rotated ? $$.width : $$.height;\n return domainLength * (pixels / length);\n };\n c3_axis_fn.generateTickValues = function generateTickValues(values, tickCount, forTimeSeries) {\n var tickValues = values,\n targetCount,\n start,\n end,\n count,\n interval,\n i,\n tickValue;\n if (tickCount) {\n targetCount = isFunction(tickCount) ? tickCount() : tickCount;\n // compute ticks according to tickCount\n if (targetCount === 1) {\n tickValues = [values[0]];\n } else if (targetCount === 2) {\n tickValues = [values[0], values[values.length - 1]];\n } else if (targetCount > 2) {\n count = targetCount - 2;\n start = values[0];\n end = values[values.length - 1];\n interval = (end - start) / (count + 1);\n // re-construct unique values\n tickValues = [start];\n for (i = 0; i < count; i++) {\n tickValue = +start + interval * (i + 1);\n tickValues.push(forTimeSeries ? new Date(tickValue) : tickValue);\n }\n tickValues.push(end);\n }\n }\n if (!forTimeSeries) {\n tickValues = tickValues.sort(function (a, b) {\n return a - b;\n });\n }\n return tickValues;\n };\n c3_axis_fn.generateTransitions = function generateTransitions(duration) {\n var $$ = this.owner,\n axes = $$.axes;\n return {\n axisX: duration ? axes.x.transition().duration(duration) : axes.x,\n axisY: duration ? axes.y.transition().duration(duration) : axes.y,\n axisY2: duration ? axes.y2.transition().duration(duration) : axes.y2,\n axisSubX: duration ? axes.subx.transition().duration(duration) : axes.subx\n };\n };\n c3_axis_fn.redraw = function redraw(transitions, isHidden) {\n var $$ = this.owner;\n $$.axes.x.style(\"opacity\", isHidden ? 0 : 1);\n $$.axes.y.style(\"opacity\", isHidden ? 0 : 1);\n $$.axes.y2.style(\"opacity\", isHidden ? 0 : 1);\n $$.axes.subx.style(\"opacity\", isHidden ? 0 : 1);\n transitions.axisX.call($$.xAxis);\n transitions.axisY.call($$.yAxis);\n transitions.axisY2.call($$.y2Axis);\n transitions.axisSubX.call($$.subXAxis);\n };\n\n var c3 = { version: \"0.4.24\" };\n\n var c3_chart_fn;\n var c3_chart_internal_fn;\n\n function Component(owner, componentKey, fn) {\n this.owner = owner;\n c3.chart.internal[componentKey] = fn;\n }\n\n function Chart(config) {\n var $$ = this.internal = new ChartInternal(this);\n $$.loadConfig(config);\n\n $$.beforeInit(config);\n $$.init();\n $$.afterInit(config);\n\n // bind \"this\" to nested API\n (function bindThis(fn, target, argThis) {\n Object.keys(fn).forEach(function (key) {\n target[key] = fn[key].bind(argThis);\n if (Object.keys(fn[key]).length > 0) {\n bindThis(fn[key], target[key], argThis);\n }\n });\n })(c3_chart_fn, this, this);\n }\n\n function ChartInternal(api) {\n var $$ = this;\n $$.d3 = window.d3 ? window.d3 : typeof require !== 'undefined' ? require(\"d3\") : undefined;\n $$.api = api;\n $$.config = $$.getDefaultConfig();\n $$.data = {};\n $$.cache = {};\n $$.axes = {};\n }\n\n c3.generate = function (config) {\n return new Chart(config);\n };\n\n c3.chart = {\n fn: Chart.prototype,\n internal: {\n fn: ChartInternal.prototype\n }\n };\n c3_chart_fn = c3.chart.fn;\n c3_chart_internal_fn = c3.chart.internal.fn;\n\n c3_chart_internal_fn.beforeInit = function () {\n // can do something\n };\n c3_chart_internal_fn.afterInit = function () {\n // can do something\n };\n c3_chart_internal_fn.init = function () {\n var $$ = this,\n config = $$.config;\n\n $$.initParams();\n\n if (config.data_url) {\n $$.convertUrlToData(config.data_url, config.data_mimeType, config.data_headers, config.data_keys, $$.initWithData);\n } else if (config.data_json) {\n $$.initWithData($$.convertJsonToData(config.data_json, config.data_keys));\n } else if (config.data_rows) {\n $$.initWithData($$.convertRowsToData(config.data_rows));\n } else if (config.data_columns) {\n $$.initWithData($$.convertColumnsToData(config.data_columns));\n } else {\n throw Error('url or json or rows or columns is required.');\n }\n };\n\n c3_chart_internal_fn.initParams = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config;\n\n // MEMO: clipId needs to be unique because it conflicts when multiple charts exist\n $$.clipId = \"c3-\" + +new Date() + '-clip', $$.clipIdForXAxis = $$.clipId + '-xaxis', $$.clipIdForYAxis = $$.clipId + '-yaxis', $$.clipIdForGrid = $$.clipId + '-grid', $$.clipIdForSubchart = $$.clipId + '-subchart', $$.clipPath = $$.getClipPath($$.clipId), $$.clipPathForXAxis = $$.getClipPath($$.clipIdForXAxis), $$.clipPathForYAxis = $$.getClipPath($$.clipIdForYAxis);\n $$.clipPathForGrid = $$.getClipPath($$.clipIdForGrid), $$.clipPathForSubchart = $$.getClipPath($$.clipIdForSubchart), $$.dragStart = null;\n $$.dragging = false;\n $$.flowing = false;\n $$.cancelClick = false;\n $$.mouseover = false;\n $$.transiting = false;\n\n $$.color = $$.generateColor();\n $$.levelColor = $$.generateLevelColor();\n\n $$.dataTimeFormat = config.data_xLocaltime ? d3.time.format : d3.time.format.utc;\n $$.axisTimeFormat = config.axis_x_localtime ? d3.time.format : d3.time.format.utc;\n $$.defaultAxisTimeFormat = $$.axisTimeFormat.multi([[\".%L\", function (d) {\n return d.getMilliseconds();\n }], [\":%S\", function (d) {\n return d.getSeconds();\n }], [\"%I:%M\", function (d) {\n return d.getMinutes();\n }], [\"%I %p\", function (d) {\n return d.getHours();\n }], [\"%-m/%-d\", function (d) {\n return d.getDay() && d.getDate() !== 1;\n }], [\"%-m/%-d\", function (d) {\n return d.getDate() !== 1;\n }], [\"%-m/%-d\", function (d) {\n return d.getMonth();\n }], [\"%Y/%-m/%-d\", function () {\n return true;\n }]]);\n\n $$.hiddenTargetIds = [];\n $$.hiddenLegendIds = [];\n $$.focusedTargetIds = [];\n $$.defocusedTargetIds = [];\n\n $$.xOrient = config.axis_rotated ? config.axis_x_inner ? \"right\" : \"left\" : config.axis_x_inner ? \"top\" : \"bottom\";\n $$.yOrient = config.axis_rotated ? config.axis_y_inner ? \"top\" : \"bottom\" : config.axis_y_inner ? \"right\" : \"left\";\n $$.y2Orient = config.axis_rotated ? config.axis_y2_inner ? \"bottom\" : \"top\" : config.axis_y2_inner ? \"left\" : \"right\";\n $$.subXOrient = config.axis_rotated ? \"left\" : \"bottom\";\n\n $$.isLegendRight = config.legend_position === 'right';\n $$.isLegendInset = config.legend_position === 'inset';\n $$.isLegendTop = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'top-right';\n $$.isLegendLeft = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'bottom-left';\n $$.legendStep = 0;\n $$.legendItemWidth = 0;\n $$.legendItemHeight = 0;\n\n $$.currentMaxTickWidths = {\n x: 0,\n y: 0,\n y2: 0\n };\n\n $$.rotated_padding_left = 30;\n $$.rotated_padding_right = config.axis_rotated && !config.axis_x_show ? 0 : 30;\n $$.rotated_padding_top = 5;\n\n $$.withoutFadeIn = {};\n\n $$.intervalForObserveInserted = undefined;\n\n $$.axes.subx = d3.selectAll([]); // needs when excluding subchart.js\n };\n\n c3_chart_internal_fn.initChartElements = function () {\n if (this.initBar) {\n this.initBar();\n }\n if (this.initLine) {\n this.initLine();\n }\n if (this.initArc) {\n this.initArc();\n }\n if (this.initGauge) {\n this.initGauge();\n }\n if (this.initText) {\n this.initText();\n }\n };\n\n c3_chart_internal_fn.initWithData = function (data) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config;\n var defs,\n main,\n binding = true;\n\n $$.axis = new Axis($$);\n\n if ($$.initPie) {\n $$.initPie();\n }\n if ($$.initBrush) {\n $$.initBrush();\n }\n if ($$.initZoom) {\n $$.initZoom();\n }\n\n if (!config.bindto) {\n $$.selectChart = d3.selectAll([]);\n } else if (typeof config.bindto.node === 'function') {\n $$.selectChart = config.bindto;\n } else {\n $$.selectChart = d3.select(config.bindto);\n }\n if ($$.selectChart.empty()) {\n $$.selectChart = d3.select(document.createElement('div')).style('opacity', 0);\n $$.observeInserted($$.selectChart);\n binding = false;\n }\n $$.selectChart.html(\"\").classed(\"c3\", true);\n\n // Init data as targets\n $$.data.xs = {};\n $$.data.targets = $$.convertDataToTargets(data);\n\n if (config.data_filter) {\n $$.data.targets = $$.data.targets.filter(config.data_filter);\n }\n\n // Set targets to hide if needed\n if (config.data_hide) {\n $$.addHiddenTargetIds(config.data_hide === true ? $$.mapToIds($$.data.targets) : config.data_hide);\n }\n if (config.legend_hide) {\n $$.addHiddenLegendIds(config.legend_hide === true ? $$.mapToIds($$.data.targets) : config.legend_hide);\n }\n\n // Init sizes and scales\n $$.updateSizes();\n $$.updateScales();\n\n // Set domains for each scale\n $$.x.domain(d3.extent($$.getXDomain($$.data.targets)));\n $$.y.domain($$.getYDomain($$.data.targets, 'y'));\n $$.y2.domain($$.getYDomain($$.data.targets, 'y2'));\n $$.subX.domain($$.x.domain());\n $$.subY.domain($$.y.domain());\n $$.subY2.domain($$.y2.domain());\n\n // Save original x domain for zoom update\n $$.orgXDomain = $$.x.domain();\n\n // Set initialized scales to brush and zoom\n if ($$.brush) {\n $$.brush.scale($$.subX);\n }\n if (config.zoom_enabled) {\n $$.zoom.scale($$.x);\n }\n\n /*-- Basic Elements --*/\n\n // Define svgs\n $$.svg = $$.selectChart.append(\"svg\").style(\"overflow\", \"hidden\").on('mouseenter', function () {\n return config.onmouseover.call($$);\n }).on('mouseleave', function () {\n return config.onmouseout.call($$);\n });\n\n if ($$.config.svg_classname) {\n $$.svg.attr('class', $$.config.svg_classname);\n }\n\n // Define defs\n defs = $$.svg.append(\"defs\");\n $$.clipChart = $$.appendClip(defs, $$.clipId);\n $$.clipXAxis = $$.appendClip(defs, $$.clipIdForXAxis);\n $$.clipYAxis = $$.appendClip(defs, $$.clipIdForYAxis);\n $$.clipGrid = $$.appendClip(defs, $$.clipIdForGrid);\n $$.clipSubchart = $$.appendClip(defs, $$.clipIdForSubchart);\n $$.updateSvgSize();\n\n // Define regions\n main = $$.main = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('main'));\n\n if ($$.initSubchart) {\n $$.initSubchart();\n }\n if ($$.initTooltip) {\n $$.initTooltip();\n }\n if ($$.initLegend) {\n $$.initLegend();\n }\n if ($$.initTitle) {\n $$.initTitle();\n }\n\n /*-- Main Region --*/\n\n // text when empty\n main.append(\"text\").attr(\"class\", CLASS.text + ' ' + CLASS.empty).attr(\"text-anchor\", \"middle\") // horizontal centering of text at x position in all browsers.\n .attr(\"dominant-baseline\", \"middle\"); // vertical centering of text at y position in all browsers, except IE.\n\n // Regions\n $$.initRegion();\n\n // Grids\n $$.initGrid();\n\n // Define g for chart area\n main.append('g').attr(\"clip-path\", $$.clipPath).attr('class', CLASS.chart);\n\n // Grid lines\n if (config.grid_lines_front) {\n $$.initGridLines();\n }\n\n // Cover whole with rects for events\n $$.initEventRect();\n\n // Define g for chart\n $$.initChartElements();\n\n // if zoom privileged, insert rect to forefront\n // TODO: is this needed?\n main.insert('rect', config.zoom_privileged ? null : 'g.' + CLASS.regions).attr('class', CLASS.zoomRect).attr('width', $$.width).attr('height', $$.height).style('opacity', 0).on(\"dblclick.zoom\", null);\n\n // Set default extent if defined\n if (config.axis_x_extent) {\n $$.brush.extent($$.getDefaultExtent());\n }\n\n // Add Axis\n $$.axis.init();\n\n // Set targets\n $$.updateTargets($$.data.targets);\n\n // Draw with targets\n if (binding) {\n $$.updateDimension();\n $$.config.oninit.call($$);\n $$.redraw({\n withTransition: false,\n withTransform: true,\n withUpdateXDomain: true,\n withUpdateOrgXDomain: true,\n withTransitionForAxis: false\n });\n }\n\n // Bind resize event\n $$.bindResize();\n\n // export element of the chart\n $$.api.element = $$.selectChart.node();\n };\n\n c3_chart_internal_fn.smoothLines = function (el, type) {\n var $$ = this;\n if (type === 'grid') {\n el.each(function () {\n var g = $$.d3.select(this),\n x1 = g.attr('x1'),\n x2 = g.attr('x2'),\n y1 = g.attr('y1'),\n y2 = g.attr('y2');\n g.attr({\n 'x1': Math.ceil(x1),\n 'x2': Math.ceil(x2),\n 'y1': Math.ceil(y1),\n 'y2': Math.ceil(y2)\n });\n });\n }\n };\n\n c3_chart_internal_fn.updateSizes = function () {\n var $$ = this,\n config = $$.config;\n var legendHeight = $$.legend ? $$.getLegendHeight() : 0,\n legendWidth = $$.legend ? $$.getLegendWidth() : 0,\n legendHeightForBottom = $$.isLegendRight || $$.isLegendInset ? 0 : legendHeight,\n hasArc = $$.hasArcType(),\n xAxisHeight = config.axis_rotated || hasArc ? 0 : $$.getHorizontalAxisHeight('x'),\n subchartHeight = config.subchart_show && !hasArc ? config.subchart_size_height + xAxisHeight : 0;\n\n $$.currentWidth = $$.getCurrentWidth();\n $$.currentHeight = $$.getCurrentHeight();\n\n // for main\n $$.margin = config.axis_rotated ? {\n top: $$.getHorizontalAxisHeight('y2') + $$.getCurrentPaddingTop(),\n right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n bottom: $$.getHorizontalAxisHeight('y') + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n left: subchartHeight + (hasArc ? 0 : $$.getCurrentPaddingLeft())\n } : {\n top: 4 + $$.getCurrentPaddingTop(), // for top tick text\n right: hasArc ? 0 : $$.getCurrentPaddingRight(),\n bottom: xAxisHeight + subchartHeight + legendHeightForBottom + $$.getCurrentPaddingBottom(),\n left: hasArc ? 0 : $$.getCurrentPaddingLeft()\n };\n\n // for subchart\n $$.margin2 = config.axis_rotated ? {\n top: $$.margin.top,\n right: NaN,\n bottom: 20 + legendHeightForBottom,\n left: $$.rotated_padding_left\n } : {\n top: $$.currentHeight - subchartHeight - legendHeightForBottom,\n right: NaN,\n bottom: xAxisHeight + legendHeightForBottom,\n left: $$.margin.left\n };\n\n // for legend\n $$.margin3 = {\n top: 0,\n right: NaN,\n bottom: 0,\n left: 0\n };\n if ($$.updateSizeForLegend) {\n $$.updateSizeForLegend(legendHeight, legendWidth);\n }\n\n $$.width = $$.currentWidth - $$.margin.left - $$.margin.right;\n $$.height = $$.currentHeight - $$.margin.top - $$.margin.bottom;\n if ($$.width < 0) {\n $$.width = 0;\n }\n if ($$.height < 0) {\n $$.height = 0;\n }\n\n $$.width2 = config.axis_rotated ? $$.margin.left - $$.rotated_padding_left - $$.rotated_padding_right : $$.width;\n $$.height2 = config.axis_rotated ? $$.height : $$.currentHeight - $$.margin2.top - $$.margin2.bottom;\n if ($$.width2 < 0) {\n $$.width2 = 0;\n }\n if ($$.height2 < 0) {\n $$.height2 = 0;\n }\n\n // for arc\n $$.arcWidth = $$.width - ($$.isLegendRight ? legendWidth + 10 : 0);\n $$.arcHeight = $$.height - ($$.isLegendRight ? 0 : 10);\n if ($$.hasType('gauge') && !config.gauge_fullCircle) {\n $$.arcHeight += $$.height - $$.getGaugeLabelHeight();\n }\n if ($$.updateRadius) {\n $$.updateRadius();\n }\n\n if ($$.isLegendRight && hasArc) {\n $$.margin3.left = $$.arcWidth / 2 + $$.radiusExpanded * 1.1;\n }\n };\n\n c3_chart_internal_fn.updateTargets = function (targets) {\n var $$ = this;\n\n /*-- Main --*/\n\n //-- Text --//\n $$.updateTargetsForText(targets);\n\n //-- Bar --//\n $$.updateTargetsForBar(targets);\n\n //-- Line --//\n $$.updateTargetsForLine(targets);\n\n //-- Arc --//\n if ($$.hasArcType() && $$.updateTargetsForArc) {\n $$.updateTargetsForArc(targets);\n }\n\n /*-- Sub --*/\n\n if ($$.updateTargetsForSubchart) {\n $$.updateTargetsForSubchart(targets);\n }\n\n // Fade-in each chart\n $$.showTargets();\n };\n c3_chart_internal_fn.showTargets = function () {\n var $$ = this;\n $$.svg.selectAll('.' + CLASS.target).filter(function (d) {\n return $$.isTargetToShow(d.id);\n }).transition().duration($$.config.transition_duration).style(\"opacity\", 1);\n };\n\n c3_chart_internal_fn.redraw = function (options, transitions) {\n var $$ = this,\n main = $$.main,\n d3 = $$.d3,\n config = $$.config;\n var areaIndices = $$.getShapeIndices($$.isAreaType),\n barIndices = $$.getShapeIndices($$.isBarType),\n lineIndices = $$.getShapeIndices($$.isLineType);\n var withY, withSubchart, withTransition, withTransitionForExit, withTransitionForAxis, withTransform, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain, withLegend, withEventRect, withDimension, withUpdateXAxis;\n var hideAxis = $$.hasArcType();\n var drawArea, drawBar, drawLine, xForText, yForText;\n var duration, durationForExit, durationForAxis;\n var waitForDraw, flow;\n var targetsToShow = $$.filterTargetsToShow($$.data.targets),\n tickValues,\n i,\n intervalForCulling,\n xDomainForZoom;\n var xv = $$.xv.bind($$),\n cx,\n cy;\n\n options = options || {};\n withY = getOption(options, \"withY\", true);\n withSubchart = getOption(options, \"withSubchart\", true);\n withTransition = getOption(options, \"withTransition\", true);\n withTransform = getOption(options, \"withTransform\", false);\n withUpdateXDomain = getOption(options, \"withUpdateXDomain\", false);\n withUpdateOrgXDomain = getOption(options, \"withUpdateOrgXDomain\", false);\n withTrimXDomain = getOption(options, \"withTrimXDomain\", true);\n withUpdateXAxis = getOption(options, \"withUpdateXAxis\", withUpdateXDomain);\n withLegend = getOption(options, \"withLegend\", false);\n withEventRect = getOption(options, \"withEventRect\", true);\n withDimension = getOption(options, \"withDimension\", true);\n withTransitionForExit = getOption(options, \"withTransitionForExit\", withTransition);\n withTransitionForAxis = getOption(options, \"withTransitionForAxis\", withTransition);\n\n duration = withTransition ? config.transition_duration : 0;\n durationForExit = withTransitionForExit ? duration : 0;\n durationForAxis = withTransitionForAxis ? duration : 0;\n\n transitions = transitions || $$.axis.generateTransitions(durationForAxis);\n\n // update legend and transform each g\n if (withLegend && config.legend_show) {\n $$.updateLegend($$.mapToIds($$.data.targets), options, transitions);\n } else if (withDimension) {\n // need to update dimension (e.g. axis.y.tick.values) because y tick values should change\n // no need to update axis in it because they will be updated in redraw()\n $$.updateDimension(true);\n }\n\n // MEMO: needed for grids calculation\n if ($$.isCategorized() && targetsToShow.length === 0) {\n $$.x.domain([0, $$.axes.x.selectAll('.tick').size()]);\n }\n\n if (targetsToShow.length) {\n $$.updateXDomain(targetsToShow, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain);\n if (!config.axis_x_tick_values) {\n tickValues = $$.axis.updateXAxisTickValues(targetsToShow);\n }\n } else {\n $$.xAxis.tickValues([]);\n $$.subXAxis.tickValues([]);\n }\n\n if (config.zoom_rescale && !options.flow) {\n xDomainForZoom = $$.x.orgDomain();\n }\n\n $$.y.domain($$.getYDomain(targetsToShow, 'y', xDomainForZoom));\n $$.y2.domain($$.getYDomain(targetsToShow, 'y2', xDomainForZoom));\n\n if (!config.axis_y_tick_values && config.axis_y_tick_count) {\n $$.yAxis.tickValues($$.axis.generateTickValues($$.y.domain(), config.axis_y_tick_count));\n }\n if (!config.axis_y2_tick_values && config.axis_y2_tick_count) {\n $$.y2Axis.tickValues($$.axis.generateTickValues($$.y2.domain(), config.axis_y2_tick_count));\n }\n\n // axes\n $$.axis.redraw(transitions, hideAxis);\n\n // Update axis label\n $$.axis.updateLabels(withTransition);\n\n // show/hide if manual culling needed\n if ((withUpdateXDomain || withUpdateXAxis) && targetsToShow.length) {\n if (config.axis_x_tick_culling && tickValues) {\n for (i = 1; i < tickValues.length; i++) {\n if (tickValues.length / i < config.axis_x_tick_culling_max) {\n intervalForCulling = i;\n break;\n }\n }\n $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').each(function (e) {\n var index = tickValues.indexOf(e);\n if (index >= 0) {\n d3.select(this).style('display', index % intervalForCulling ? 'none' : 'block');\n }\n });\n } else {\n $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').style('display', 'block');\n }\n }\n\n // setup drawer - MEMO: these must be called after axis updated\n drawArea = $$.generateDrawArea ? $$.generateDrawArea(areaIndices, false) : undefined;\n drawBar = $$.generateDrawBar ? $$.generateDrawBar(barIndices) : undefined;\n drawLine = $$.generateDrawLine ? $$.generateDrawLine(lineIndices, false) : undefined;\n xForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, true);\n yForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, false);\n\n // Update sub domain\n if (withY) {\n $$.subY.domain($$.getYDomain(targetsToShow, 'y'));\n $$.subY2.domain($$.getYDomain(targetsToShow, 'y2'));\n }\n\n // xgrid focus\n $$.updateXgridFocus();\n\n // Data empty label positioning and text.\n main.select(\"text.\" + CLASS.text + '.' + CLASS.empty).attr(\"x\", $$.width / 2).attr(\"y\", $$.height / 2).text(config.data_empty_label_text).transition().style('opacity', targetsToShow.length ? 0 : 1);\n\n // grid\n $$.updateGrid(duration);\n\n // rect for regions\n $$.updateRegion(duration);\n\n // bars\n $$.updateBar(durationForExit);\n\n // lines, areas and cricles\n $$.updateLine(durationForExit);\n $$.updateArea(durationForExit);\n $$.updateCircle();\n\n // text\n if ($$.hasDataLabel()) {\n $$.updateText(durationForExit);\n }\n\n // title\n if ($$.redrawTitle) {\n $$.redrawTitle();\n }\n\n // arc\n if ($$.redrawArc) {\n $$.redrawArc(duration, durationForExit, withTransform);\n }\n\n // subchart\n if ($$.redrawSubchart) {\n $$.redrawSubchart(withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices);\n }\n\n // circles for select\n main.selectAll('.' + CLASS.selectedCircles).filter($$.isBarType.bind($$)).selectAll('circle').remove();\n\n // event rects will redrawn when flow called\n if (config.interaction_enabled && !options.flow && withEventRect) {\n $$.redrawEventRect();\n if ($$.updateZoom) {\n $$.updateZoom();\n }\n }\n\n // update circleY based on updated parameters\n $$.updateCircleY();\n\n // generate circle x/y functions depending on updated params\n cx = ($$.config.axis_rotated ? $$.circleY : $$.circleX).bind($$);\n cy = ($$.config.axis_rotated ? $$.circleX : $$.circleY).bind($$);\n\n if (options.flow) {\n flow = $$.generateFlow({\n targets: targetsToShow,\n flow: options.flow,\n duration: options.flow.duration,\n drawBar: drawBar,\n drawLine: drawLine,\n drawArea: drawArea,\n cx: cx,\n cy: cy,\n xv: xv,\n xForText: xForText,\n yForText: yForText\n });\n }\n\n if ((duration || flow) && $$.isTabVisible()) {\n // Only use transition if tab visible. See #938.\n // transition should be derived from one transition\n d3.transition().duration(duration).each(function () {\n var transitionsToWait = [];\n\n // redraw and gather transitions\n [$$.redrawBar(drawBar, true), $$.redrawLine(drawLine, true), $$.redrawArea(drawArea, true), $$.redrawCircle(cx, cy, true), $$.redrawText(xForText, yForText, options.flow, true), $$.redrawRegion(true), $$.redrawGrid(true)].forEach(function (transitions) {\n transitions.forEach(function (transition) {\n transitionsToWait.push(transition);\n });\n });\n\n // Wait for end of transitions to call flow and onrendered callback\n waitForDraw = $$.generateWait();\n transitionsToWait.forEach(function (t) {\n waitForDraw.add(t);\n });\n }).call(waitForDraw, function () {\n if (flow) {\n flow();\n }\n if (config.onrendered) {\n config.onrendered.call($$);\n }\n });\n } else {\n $$.redrawBar(drawBar);\n $$.redrawLine(drawLine);\n $$.redrawArea(drawArea);\n $$.redrawCircle(cx, cy);\n $$.redrawText(xForText, yForText, options.flow);\n $$.redrawRegion();\n $$.redrawGrid();\n if (config.onrendered) {\n config.onrendered.call($$);\n }\n }\n\n // update fadein condition\n $$.mapToIds($$.data.targets).forEach(function (id) {\n $$.withoutFadeIn[id] = true;\n });\n };\n\n c3_chart_internal_fn.updateAndRedraw = function (options) {\n var $$ = this,\n config = $$.config,\n transitions;\n options = options || {};\n // same with redraw\n options.withTransition = getOption(options, \"withTransition\", true);\n options.withTransform = getOption(options, \"withTransform\", false);\n options.withLegend = getOption(options, \"withLegend\", false);\n // NOT same with redraw\n options.withUpdateXDomain = true;\n options.withUpdateOrgXDomain = true;\n options.withTransitionForExit = false;\n options.withTransitionForTransform = getOption(options, \"withTransitionForTransform\", options.withTransition);\n // MEMO: this needs to be called before updateLegend and it means this ALWAYS needs to be called)\n $$.updateSizes();\n // MEMO: called in updateLegend in redraw if withLegend\n if (!(options.withLegend && config.legend_show)) {\n transitions = $$.axis.generateTransitions(options.withTransitionForAxis ? config.transition_duration : 0);\n // Update scales\n $$.updateScales();\n $$.updateSvgSize();\n // Update g positions\n $$.transformAll(options.withTransitionForTransform, transitions);\n }\n // Draw with new sizes & scales\n $$.redraw(options, transitions);\n };\n c3_chart_internal_fn.redrawWithoutRescale = function () {\n this.redraw({\n withY: false,\n withSubchart: false,\n withEventRect: false,\n withTransitionForAxis: false\n });\n };\n\n c3_chart_internal_fn.isTimeSeries = function () {\n return this.config.axis_x_type === 'timeseries';\n };\n c3_chart_internal_fn.isCategorized = function () {\n return this.config.axis_x_type.indexOf('categor') >= 0;\n };\n c3_chart_internal_fn.isCustomX = function () {\n var $$ = this,\n config = $$.config;\n return !$$.isTimeSeries() && (config.data_x || notEmpty(config.data_xs));\n };\n\n c3_chart_internal_fn.isTimeSeriesY = function () {\n return this.config.axis_y_type === 'timeseries';\n };\n\n c3_chart_internal_fn.getTranslate = function (target) {\n var $$ = this,\n config = $$.config,\n x,\n y;\n if (target === 'main') {\n x = asHalfPixel($$.margin.left);\n y = asHalfPixel($$.margin.top);\n } else if (target === 'context') {\n x = asHalfPixel($$.margin2.left);\n y = asHalfPixel($$.margin2.top);\n } else if (target === 'legend') {\n x = $$.margin3.left;\n y = $$.margin3.top;\n } else if (target === 'x') {\n x = 0;\n y = config.axis_rotated ? 0 : $$.height;\n } else if (target === 'y') {\n x = 0;\n y = config.axis_rotated ? $$.height : 0;\n } else if (target === 'y2') {\n x = config.axis_rotated ? 0 : $$.width;\n y = config.axis_rotated ? 1 : 0;\n } else if (target === 'subx') {\n x = 0;\n y = config.axis_rotated ? 0 : $$.height2;\n } else if (target === 'arc') {\n x = $$.arcWidth / 2;\n y = $$.arcHeight / 2 - ($$.hasType('gauge') ? 6 : 0); // to prevent wrong display of min and max label\n }\n return \"translate(\" + x + \",\" + y + \")\";\n };\n c3_chart_internal_fn.initialOpacity = function (d) {\n return d.value !== null && this.withoutFadeIn[d.id] ? 1 : 0;\n };\n c3_chart_internal_fn.initialOpacityForCircle = function (d) {\n return d.value !== null && this.withoutFadeIn[d.id] ? this.opacityForCircle(d) : 0;\n };\n c3_chart_internal_fn.opacityForCircle = function (d) {\n var isPointShouldBeShown = isFunction(this.config.point_show) ? this.config.point_show(d) : this.config.point_show;\n var opacity = isPointShouldBeShown ? 1 : 0;\n return isValue(d.value) ? this.isScatterType(d) ? 0.5 : opacity : 0;\n };\n c3_chart_internal_fn.opacityForText = function () {\n return this.hasDataLabel() ? 1 : 0;\n };\n c3_chart_internal_fn.xx = function (d) {\n return d ? this.x(d.x) : null;\n };\n c3_chart_internal_fn.xv = function (d) {\n var $$ = this,\n value = d.value;\n if ($$.isTimeSeries()) {\n value = $$.parseDate(d.value);\n } else if ($$.isCategorized() && typeof d.value === 'string') {\n value = $$.config.axis_x_categories.indexOf(d.value);\n }\n return Math.ceil($$.x(value));\n };\n c3_chart_internal_fn.yv = function (d) {\n var $$ = this,\n yScale = d.axis && d.axis === 'y2' ? $$.y2 : $$.y;\n return Math.ceil(yScale(d.value));\n };\n c3_chart_internal_fn.subxx = function (d) {\n return d ? this.subX(d.x) : null;\n };\n\n c3_chart_internal_fn.transformMain = function (withTransition, transitions) {\n var $$ = this,\n xAxis,\n yAxis,\n y2Axis;\n if (transitions && transitions.axisX) {\n xAxis = transitions.axisX;\n } else {\n xAxis = $$.main.select('.' + CLASS.axisX);\n if (withTransition) {\n xAxis = xAxis.transition();\n }\n }\n if (transitions && transitions.axisY) {\n yAxis = transitions.axisY;\n } else {\n yAxis = $$.main.select('.' + CLASS.axisY);\n if (withTransition) {\n yAxis = yAxis.transition();\n }\n }\n if (transitions && transitions.axisY2) {\n y2Axis = transitions.axisY2;\n } else {\n y2Axis = $$.main.select('.' + CLASS.axisY2);\n if (withTransition) {\n y2Axis = y2Axis.transition();\n }\n }\n (withTransition ? $$.main.transition() : $$.main).attr(\"transform\", $$.getTranslate('main'));\n xAxis.attr(\"transform\", $$.getTranslate('x'));\n yAxis.attr(\"transform\", $$.getTranslate('y'));\n y2Axis.attr(\"transform\", $$.getTranslate('y2'));\n $$.main.select('.' + CLASS.chartArcs).attr(\"transform\", $$.getTranslate('arc'));\n };\n c3_chart_internal_fn.transformAll = function (withTransition, transitions) {\n var $$ = this;\n $$.transformMain(withTransition, transitions);\n if ($$.config.subchart_show) {\n $$.transformContext(withTransition, transitions);\n }\n if ($$.legend) {\n $$.transformLegend(withTransition);\n }\n };\n\n c3_chart_internal_fn.updateSvgSize = function () {\n var $$ = this,\n brush = $$.svg.select(\".c3-brush .background\");\n $$.svg.attr('width', $$.currentWidth).attr('height', $$.currentHeight);\n $$.svg.selectAll(['#' + $$.clipId, '#' + $$.clipIdForGrid]).select('rect').attr('width', $$.width).attr('height', $$.height);\n $$.svg.select('#' + $$.clipIdForXAxis).select('rect').attr('x', $$.getXAxisClipX.bind($$)).attr('y', $$.getXAxisClipY.bind($$)).attr('width', $$.getXAxisClipWidth.bind($$)).attr('height', $$.getXAxisClipHeight.bind($$));\n $$.svg.select('#' + $$.clipIdForYAxis).select('rect').attr('x', $$.getYAxisClipX.bind($$)).attr('y', $$.getYAxisClipY.bind($$)).attr('width', $$.getYAxisClipWidth.bind($$)).attr('height', $$.getYAxisClipHeight.bind($$));\n $$.svg.select('#' + $$.clipIdForSubchart).select('rect').attr('width', $$.width).attr('height', brush.size() ? brush.attr('height') : 0);\n $$.svg.select('.' + CLASS.zoomRect).attr('width', $$.width).attr('height', $$.height);\n // MEMO: parent div's height will be bigger than svg when <!DOCTYPE html>\n $$.selectChart.style('max-height', $$.currentHeight + \"px\");\n };\n\n c3_chart_internal_fn.updateDimension = function (withoutAxis) {\n var $$ = this;\n if (!withoutAxis) {\n if ($$.config.axis_rotated) {\n $$.axes.x.call($$.xAxis);\n $$.axes.subx.call($$.subXAxis);\n } else {\n $$.axes.y.call($$.yAxis);\n $$.axes.y2.call($$.y2Axis);\n }\n }\n $$.updateSizes();\n $$.updateScales();\n $$.updateSvgSize();\n $$.transformAll(false);\n };\n\n c3_chart_internal_fn.observeInserted = function (selection) {\n var $$ = this,\n observer;\n if (typeof MutationObserver === 'undefined') {\n window.console.error(\"MutationObserver not defined.\");\n return;\n }\n observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n if (mutation.type === 'childList' && mutation.previousSibling) {\n observer.disconnect();\n // need to wait for completion of load because size calculation requires the actual sizes determined after that completion\n $$.intervalForObserveInserted = window.setInterval(function () {\n // parentNode will NOT be null when completed\n if (selection.node().parentNode) {\n window.clearInterval($$.intervalForObserveInserted);\n $$.updateDimension();\n if ($$.brush) {\n $$.brush.update();\n }\n $$.config.oninit.call($$);\n $$.redraw({\n withTransform: true,\n withUpdateXDomain: true,\n withUpdateOrgXDomain: true,\n withTransition: false,\n withTransitionForTransform: false,\n withLegend: true\n });\n selection.transition().style('opacity', 1);\n }\n }, 10);\n }\n });\n });\n observer.observe(selection.node(), { attributes: true, childList: true, characterData: true });\n };\n\n c3_chart_internal_fn.bindResize = function () {\n var $$ = this,\n config = $$.config;\n\n $$.resizeFunction = $$.generateResize(); // need to call .remove\n\n $$.resizeFunction.add(function () {\n config.onresize.call($$);\n });\n if (config.resize_auto) {\n $$.resizeFunction.add(function () {\n if ($$.resizeTimeout !== undefined) {\n window.clearTimeout($$.resizeTimeout);\n }\n $$.resizeTimeout = window.setTimeout(function () {\n delete $$.resizeTimeout;\n $$.api.flush();\n }, 100);\n });\n }\n $$.resizeFunction.add(function () {\n config.onresized.call($$);\n });\n\n $$.resizeIfElementDisplayed = function () {\n // if element not displayed skip it\n if ($$.api == null || !$$.api.element.offsetParent) {\n return;\n }\n\n $$.resizeFunction();\n };\n\n if (window.attachEvent) {\n window.attachEvent('onresize', $$.resizeIfElementDisplayed);\n } else if (window.addEventListener) {\n window.addEventListener('resize', $$.resizeIfElementDisplayed, false);\n } else {\n // fallback to this, if this is a very old browser\n var wrapper = window.onresize;\n if (!wrapper) {\n // create a wrapper that will call all charts\n wrapper = $$.generateResize();\n } else if (!wrapper.add || !wrapper.remove) {\n // there is already a handler registered, make sure we call it too\n wrapper = $$.generateResize();\n wrapper.add(window.onresize);\n }\n // add this graph to the wrapper, we will be removed if the user calls destroy\n wrapper.add($$.resizeFunction);\n window.onresize = function () {\n // if element not displayed skip it\n if (!$$.api.element.offsetParent) {\n return;\n }\n\n wrapper();\n };\n }\n };\n\n c3_chart_internal_fn.generateResize = function () {\n var resizeFunctions = [];\n function callResizeFunctions() {\n resizeFunctions.forEach(function (f) {\n f();\n });\n }\n callResizeFunctions.add = function (f) {\n resizeFunctions.push(f);\n };\n callResizeFunctions.remove = function (f) {\n for (var i = 0; i < resizeFunctions.length; i++) {\n if (resizeFunctions[i] === f) {\n resizeFunctions.splice(i, 1);\n break;\n }\n }\n };\n return callResizeFunctions;\n };\n\n c3_chart_internal_fn.endall = function (transition, callback) {\n var n = 0;\n transition.each(function () {\n ++n;\n }).each(\"end\", function () {\n if (! --n) {\n callback.apply(this, arguments);\n }\n });\n };\n c3_chart_internal_fn.generateWait = function () {\n var transitionsToWait = [],\n f = function f(transition, callback) {\n var timer = setInterval(function () {\n var done = 0;\n transitionsToWait.forEach(function (t) {\n if (t.empty()) {\n done += 1;\n return;\n }\n try {\n t.transition();\n } catch (e) {\n done += 1;\n }\n });\n if (done === transitionsToWait.length) {\n clearInterval(timer);\n if (callback) {\n callback();\n }\n }\n }, 10);\n };\n f.add = function (transition) {\n transitionsToWait.push(transition);\n };\n return f;\n };\n\n c3_chart_internal_fn.parseDate = function (date) {\n var $$ = this,\n parsedDate;\n if (date instanceof Date) {\n parsedDate = date;\n } else if (typeof date === 'string') {\n parsedDate = $$.dataTimeFormat($$.config.data_xFormat).parse(date);\n } else if ((typeof date === 'undefined' ? 'undefined' : _typeof(date)) === 'object') {\n parsedDate = new Date(+date);\n } else if (typeof date === 'number' && !isNaN(date)) {\n parsedDate = new Date(+date);\n }\n if (!parsedDate || isNaN(+parsedDate)) {\n window.console.error(\"Failed to parse x '\" + date + \"' to Date object\");\n }\n return parsedDate;\n };\n\n c3_chart_internal_fn.isTabVisible = function () {\n var hidden;\n if (typeof document.hidden !== \"undefined\") {\n // Opera 12.10 and Firefox 18 and later support\n hidden = \"hidden\";\n } else if (typeof document.mozHidden !== \"undefined\") {\n hidden = \"mozHidden\";\n } else if (typeof document.msHidden !== \"undefined\") {\n hidden = \"msHidden\";\n } else if (typeof document.webkitHidden !== \"undefined\") {\n hidden = \"webkitHidden\";\n }\n\n return document[hidden] ? false : true;\n };\n\n c3_chart_internal_fn.isValue = isValue;\n c3_chart_internal_fn.isFunction = isFunction;\n c3_chart_internal_fn.isString = isString;\n c3_chart_internal_fn.isUndefined = isUndefined;\n c3_chart_internal_fn.isDefined = isDefined;\n c3_chart_internal_fn.ceil10 = ceil10;\n c3_chart_internal_fn.asHalfPixel = asHalfPixel;\n c3_chart_internal_fn.diffDomain = diffDomain;\n c3_chart_internal_fn.isEmpty = isEmpty;\n c3_chart_internal_fn.notEmpty = notEmpty;\n c3_chart_internal_fn.notEmpty = notEmpty;\n c3_chart_internal_fn.getOption = getOption;\n c3_chart_internal_fn.hasValue = hasValue;\n c3_chart_internal_fn.sanitise = sanitise;\n c3_chart_internal_fn.getPathBox = getPathBox;\n c3_chart_internal_fn.CLASS = CLASS;\n\n /* jshint ignore:start */\n\n // PhantomJS doesn't have support for Function.prototype.bind, which has caused confusion. Use\n // this polyfill to avoid the confusion.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Polyfill\n\n if (!Function.prototype.bind) {\n Function.prototype.bind = function (oThis) {\n if (typeof this !== 'function') {\n // closest thing possible to the ECMAScript 5\n // internal IsCallable function\n throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n }\n\n var aArgs = Array.prototype.slice.call(arguments, 1),\n fToBind = this,\n fNOP = function fNOP() {},\n fBound = function fBound() {\n return fToBind.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));\n };\n\n fNOP.prototype = this.prototype;\n fBound.prototype = new fNOP();\n\n return fBound;\n };\n }\n\n // SVGPathSeg API polyfill\n // https://github.com/progers/pathseg\n //\n // This is a drop-in replacement for the SVGPathSeg and SVGPathSegList APIs that were removed from\n // SVG2 (https://lists.w3.org/Archives/Public/www-svg/2015Jun/0044.html), including the latest spec\n // changes which were implemented in Firefox 43 and Chrome 46.\n\n (function () {\n\n if (!(\"SVGPathSeg\" in window)) {\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSeg\n window.SVGPathSeg = function (type, typeAsLetter, owningPathSegList) {\n this.pathSegType = type;\n this.pathSegTypeAsLetter = typeAsLetter;\n this._owningPathSegList = owningPathSegList;\n };\n\n window.SVGPathSeg.prototype.classname = \"SVGPathSeg\";\n\n window.SVGPathSeg.PATHSEG_UNKNOWN = 0;\n window.SVGPathSeg.PATHSEG_CLOSEPATH = 1;\n window.SVGPathSeg.PATHSEG_MOVETO_ABS = 2;\n window.SVGPathSeg.PATHSEG_MOVETO_REL = 3;\n window.SVGPathSeg.PATHSEG_LINETO_ABS = 4;\n window.SVGPathSeg.PATHSEG_LINETO_REL = 5;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS = 6;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL = 7;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS = 8;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL = 9;\n window.SVGPathSeg.PATHSEG_ARC_ABS = 10;\n window.SVGPathSeg.PATHSEG_ARC_REL = 11;\n window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS = 12;\n window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL = 13;\n window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS = 14;\n window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL = 15;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16;\n window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;\n window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19;\n\n // Notify owning PathSegList on any changes so they can be synchronized back to the path element.\n window.SVGPathSeg.prototype._segmentChanged = function () {\n if (this._owningPathSegList) this._owningPathSegList.segmentChanged(this);\n };\n\n window.SVGPathSegClosePath = function (owningPathSegList) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CLOSEPATH, \"z\", owningPathSegList);\n };\n window.SVGPathSegClosePath.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegClosePath.prototype.toString = function () {\n return \"[object SVGPathSegClosePath]\";\n };\n window.SVGPathSegClosePath.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter;\n };\n window.SVGPathSegClosePath.prototype.clone = function () {\n return new window.SVGPathSegClosePath(undefined);\n };\n\n window.SVGPathSegMovetoAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_ABS, \"M\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n window.SVGPathSegMovetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegMovetoAbs.prototype.toString = function () {\n return \"[object SVGPathSegMovetoAbs]\";\n };\n window.SVGPathSegMovetoAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegMovetoAbs.prototype.clone = function () {\n return new window.SVGPathSegMovetoAbs(undefined, this._x, this._y);\n };\n Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegMovetoRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_REL, \"m\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n window.SVGPathSegMovetoRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegMovetoRel.prototype.toString = function () {\n return \"[object SVGPathSegMovetoRel]\";\n };\n window.SVGPathSegMovetoRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegMovetoRel.prototype.clone = function () {\n return new window.SVGPathSegMovetoRel(undefined, this._x, this._y);\n };\n Object.defineProperty(window.SVGPathSegMovetoRel.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegMovetoRel.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegLinetoAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_ABS, \"L\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n window.SVGPathSegLinetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegLinetoAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoAbs]\";\n };\n window.SVGPathSegLinetoAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegLinetoAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoAbs(undefined, this._x, this._y);\n };\n Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegLinetoRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_REL, \"l\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n window.SVGPathSegLinetoRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegLinetoRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoRel]\";\n };\n window.SVGPathSegLinetoRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegLinetoRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoRel(undefined, this._x, this._y);\n };\n Object.defineProperty(window.SVGPathSegLinetoRel.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegLinetoRel.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegCurvetoCubicAbs = function (owningPathSegList, x, y, x1, y1, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS, \"C\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n this._x2 = x2;\n this._y2 = y2;\n };\n window.SVGPathSegCurvetoCubicAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoCubicAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicAbs]\";\n };\n window.SVGPathSegCurvetoCubicAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoCubicAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicAbs(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2);\n };\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x1\", { get: function get() {\n return this._x1;\n }, set: function set(x1) {\n this._x1 = x1;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y1\", { get: function get() {\n return this._y1;\n }, set: function set(y1) {\n this._y1 = y1;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"x2\", { get: function get() {\n return this._x2;\n }, set: function set(x2) {\n this._x2 = x2;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, \"y2\", { get: function get() {\n return this._y2;\n }, set: function set(y2) {\n this._y2 = y2;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegCurvetoCubicRel = function (owningPathSegList, x, y, x1, y1, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL, \"c\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n this._x2 = x2;\n this._y2 = y2;\n };\n window.SVGPathSegCurvetoCubicRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoCubicRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicRel]\";\n };\n window.SVGPathSegCurvetoCubicRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoCubicRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicRel(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2);\n };\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x1\", { get: function get() {\n return this._x1;\n }, set: function set(x1) {\n this._x1 = x1;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y1\", { get: function get() {\n return this._y1;\n }, set: function set(y1) {\n this._y1 = y1;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"x2\", { get: function get() {\n return this._x2;\n }, set: function set(x2) {\n this._x2 = x2;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, \"y2\", { get: function get() {\n return this._y2;\n }, set: function set(y2) {\n this._y2 = y2;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegCurvetoQuadraticAbs = function (owningPathSegList, x, y, x1, y1) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS, \"Q\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n };\n window.SVGPathSegCurvetoQuadraticAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoQuadraticAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticAbs]\";\n };\n window.SVGPathSegCurvetoQuadraticAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoQuadraticAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticAbs(undefined, this._x, this._y, this._x1, this._y1);\n };\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"x1\", { get: function get() {\n return this._x1;\n }, set: function set(x1) {\n this._x1 = x1;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, \"y1\", { get: function get() {\n return this._y1;\n }, set: function set(y1) {\n this._y1 = y1;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegCurvetoQuadraticRel = function (owningPathSegList, x, y, x1, y1) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL, \"q\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x1 = x1;\n this._y1 = y1;\n };\n window.SVGPathSegCurvetoQuadraticRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoQuadraticRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticRel]\";\n };\n window.SVGPathSegCurvetoQuadraticRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x1 + \" \" + this._y1 + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoQuadraticRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticRel(undefined, this._x, this._y, this._x1, this._y1);\n };\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"x1\", { get: function get() {\n return this._x1;\n }, set: function set(x1) {\n this._x1 = x1;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, \"y1\", { get: function get() {\n return this._y1;\n }, set: function set(y1) {\n this._y1 = y1;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegArcAbs = function (owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_ABS, \"A\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._r1 = r1;\n this._r2 = r2;\n this._angle = angle;\n this._largeArcFlag = largeArcFlag;\n this._sweepFlag = sweepFlag;\n };\n window.SVGPathSegArcAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegArcAbs.prototype.toString = function () {\n return \"[object SVGPathSegArcAbs]\";\n };\n window.SVGPathSegArcAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._r1 + \" \" + this._r2 + \" \" + this._angle + \" \" + (this._largeArcFlag ? \"1\" : \"0\") + \" \" + (this._sweepFlag ? \"1\" : \"0\") + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegArcAbs.prototype.clone = function () {\n return new window.SVGPathSegArcAbs(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag);\n };\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"r1\", { get: function get() {\n return this._r1;\n }, set: function set(r1) {\n this._r1 = r1;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"r2\", { get: function get() {\n return this._r2;\n }, set: function set(r2) {\n this._r2 = r2;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"angle\", { get: function get() {\n return this._angle;\n }, set: function set(angle) {\n this._angle = angle;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"largeArcFlag\", { get: function get() {\n return this._largeArcFlag;\n }, set: function set(largeArcFlag) {\n this._largeArcFlag = largeArcFlag;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcAbs.prototype, \"sweepFlag\", { get: function get() {\n return this._sweepFlag;\n }, set: function set(sweepFlag) {\n this._sweepFlag = sweepFlag;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegArcRel = function (owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_REL, \"a\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._r1 = r1;\n this._r2 = r2;\n this._angle = angle;\n this._largeArcFlag = largeArcFlag;\n this._sweepFlag = sweepFlag;\n };\n window.SVGPathSegArcRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegArcRel.prototype.toString = function () {\n return \"[object SVGPathSegArcRel]\";\n };\n window.SVGPathSegArcRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._r1 + \" \" + this._r2 + \" \" + this._angle + \" \" + (this._largeArcFlag ? \"1\" : \"0\") + \" \" + (this._sweepFlag ? \"1\" : \"0\") + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegArcRel.prototype.clone = function () {\n return new window.SVGPathSegArcRel(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag);\n };\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"r1\", { get: function get() {\n return this._r1;\n }, set: function set(r1) {\n this._r1 = r1;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"r2\", { get: function get() {\n return this._r2;\n }, set: function set(r2) {\n this._r2 = r2;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"angle\", { get: function get() {\n return this._angle;\n }, set: function set(angle) {\n this._angle = angle;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"largeArcFlag\", { get: function get() {\n return this._largeArcFlag;\n }, set: function set(largeArcFlag) {\n this._largeArcFlag = largeArcFlag;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegArcRel.prototype, \"sweepFlag\", { get: function get() {\n return this._sweepFlag;\n }, set: function set(sweepFlag) {\n this._sweepFlag = sweepFlag;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegLinetoHorizontalAbs = function (owningPathSegList, x) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS, \"H\", owningPathSegList);\n this._x = x;\n };\n window.SVGPathSegLinetoHorizontalAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegLinetoHorizontalAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoHorizontalAbs]\";\n };\n window.SVGPathSegLinetoHorizontalAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x;\n };\n window.SVGPathSegLinetoHorizontalAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoHorizontalAbs(undefined, this._x);\n };\n Object.defineProperty(window.SVGPathSegLinetoHorizontalAbs.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegLinetoHorizontalRel = function (owningPathSegList, x) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL, \"h\", owningPathSegList);\n this._x = x;\n };\n window.SVGPathSegLinetoHorizontalRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegLinetoHorizontalRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoHorizontalRel]\";\n };\n window.SVGPathSegLinetoHorizontalRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x;\n };\n window.SVGPathSegLinetoHorizontalRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoHorizontalRel(undefined, this._x);\n };\n Object.defineProperty(window.SVGPathSegLinetoHorizontalRel.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegLinetoVerticalAbs = function (owningPathSegList, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS, \"V\", owningPathSegList);\n this._y = y;\n };\n window.SVGPathSegLinetoVerticalAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegLinetoVerticalAbs.prototype.toString = function () {\n return \"[object SVGPathSegLinetoVerticalAbs]\";\n };\n window.SVGPathSegLinetoVerticalAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._y;\n };\n window.SVGPathSegLinetoVerticalAbs.prototype.clone = function () {\n return new window.SVGPathSegLinetoVerticalAbs(undefined, this._y);\n };\n Object.defineProperty(window.SVGPathSegLinetoVerticalAbs.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegLinetoVerticalRel = function (owningPathSegList, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL, \"v\", owningPathSegList);\n this._y = y;\n };\n window.SVGPathSegLinetoVerticalRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegLinetoVerticalRel.prototype.toString = function () {\n return \"[object SVGPathSegLinetoVerticalRel]\";\n };\n window.SVGPathSegLinetoVerticalRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._y;\n };\n window.SVGPathSegLinetoVerticalRel.prototype.clone = function () {\n return new window.SVGPathSegLinetoVerticalRel(undefined, this._y);\n };\n Object.defineProperty(window.SVGPathSegLinetoVerticalRel.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegCurvetoCubicSmoothAbs = function (owningPathSegList, x, y, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS, \"S\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x2 = x2;\n this._y2 = y2;\n };\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicSmoothAbs]\";\n };\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoCubicSmoothAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, this._x, this._y, this._x2, this._y2);\n };\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"x2\", { get: function get() {\n return this._x2;\n }, set: function set(x2) {\n this._x2 = x2;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, \"y2\", { get: function get() {\n return this._y2;\n }, set: function set(y2) {\n this._y2 = y2;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegCurvetoCubicSmoothRel = function (owningPathSegList, x, y, x2, y2) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL, \"s\", owningPathSegList);\n this._x = x;\n this._y = y;\n this._x2 = x2;\n this._y2 = y2;\n };\n window.SVGPathSegCurvetoCubicSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoCubicSmoothRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoCubicSmoothRel]\";\n };\n window.SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x2 + \" \" + this._y2 + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoCubicSmoothRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, this._x, this._y, this._x2, this._y2);\n };\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"x2\", { get: function get() {\n return this._x2;\n }, set: function set(x2) {\n this._x2 = x2;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, \"y2\", { get: function get() {\n return this._y2;\n }, set: function set(y2) {\n this._y2 = y2;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegCurvetoQuadraticSmoothAbs = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS, \"T\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticSmoothAbs]\";\n };\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, this._x, this._y);\n };\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n\n window.SVGPathSegCurvetoQuadraticSmoothRel = function (owningPathSegList, x, y) {\n window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, \"t\", owningPathSegList);\n this._x = x;\n this._y = y;\n };\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString = function () {\n return \"[object SVGPathSegCurvetoQuadraticSmoothRel]\";\n };\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString = function () {\n return this.pathSegTypeAsLetter + \" \" + this._x + \" \" + this._y;\n };\n window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone = function () {\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, this._x, this._y);\n };\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"x\", { get: function get() {\n return this._x;\n }, set: function set(x) {\n this._x = x;this._segmentChanged();\n }, enumerable: true });\n Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, \"y\", { get: function get() {\n return this._y;\n }, set: function set(y) {\n this._y = y;this._segmentChanged();\n }, enumerable: true });\n\n // Add createSVGPathSeg* functions to window.SVGPathElement.\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-Interfacewindow.SVGPathElement.\n window.SVGPathElement.prototype.createSVGPathSegClosePath = function () {\n return new window.SVGPathSegClosePath(undefined);\n };\n window.SVGPathElement.prototype.createSVGPathSegMovetoAbs = function (x, y) {\n return new window.SVGPathSegMovetoAbs(undefined, x, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegMovetoRel = function (x, y) {\n return new window.SVGPathSegMovetoRel(undefined, x, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegLinetoAbs = function (x, y) {\n return new window.SVGPathSegLinetoAbs(undefined, x, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegLinetoRel = function (x, y) {\n return new window.SVGPathSegLinetoRel(undefined, x, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs = function (x, y, x1, y1, x2, y2) {\n return new window.SVGPathSegCurvetoCubicAbs(undefined, x, y, x1, y1, x2, y2);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel = function (x, y, x1, y1, x2, y2) {\n return new window.SVGPathSegCurvetoCubicRel(undefined, x, y, x1, y1, x2, y2);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs = function (x, y, x1, y1) {\n return new window.SVGPathSegCurvetoQuadraticAbs(undefined, x, y, x1, y1);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel = function (x, y, x1, y1) {\n return new window.SVGPathSegCurvetoQuadraticRel(undefined, x, y, x1, y1);\n };\n window.SVGPathElement.prototype.createSVGPathSegArcAbs = function (x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n return new window.SVGPathSegArcAbs(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag);\n };\n window.SVGPathElement.prototype.createSVGPathSegArcRel = function (x, y, r1, r2, angle, largeArcFlag, sweepFlag) {\n return new window.SVGPathSegArcRel(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag);\n };\n window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs = function (x) {\n return new window.SVGPathSegLinetoHorizontalAbs(undefined, x);\n };\n window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel = function (x) {\n return new window.SVGPathSegLinetoHorizontalRel(undefined, x);\n };\n window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs = function (y) {\n return new window.SVGPathSegLinetoVerticalAbs(undefined, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel = function (y) {\n return new window.SVGPathSegLinetoVerticalRel(undefined, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs = function (x, y, x2, y2) {\n return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, x, y, x2, y2);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel = function (x, y, x2, y2) {\n return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, x, y, x2, y2);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs = function (x, y) {\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, x, y);\n };\n window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel = function (x, y) {\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, x, y);\n };\n\n if (!(\"getPathSegAtLength\" in window.SVGPathElement.prototype)) {\n // Add getPathSegAtLength to SVGPathElement.\n // Spec: https://www.w3.org/TR/SVG11/single-page.html#paths-__svg__SVGPathElement__getPathSegAtLength\n // This polyfill requires SVGPathElement.getTotalLength to implement the distance-along-a-path algorithm.\n window.SVGPathElement.prototype.getPathSegAtLength = function (distance) {\n if (distance === undefined || !isFinite(distance)) throw \"Invalid arguments.\";\n\n var measurementElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n measurementElement.setAttribute(\"d\", this.getAttribute(\"d\"));\n var lastPathSegment = measurementElement.pathSegList.numberOfItems - 1;\n\n // If the path is empty, return 0.\n if (lastPathSegment <= 0) return 0;\n\n do {\n measurementElement.pathSegList.removeItem(lastPathSegment);\n if (distance > measurementElement.getTotalLength()) break;\n lastPathSegment--;\n } while (lastPathSegment > 0);\n return lastPathSegment;\n };\n }\n }\n\n if (!(\"SVGPathSegList\" in window)) {\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSegList\n window.SVGPathSegList = function (pathElement) {\n this._pathElement = pathElement;\n this._list = this._parsePath(this._pathElement.getAttribute(\"d\"));\n\n // Use a MutationObserver to catch changes to the path's \"d\" attribute.\n this._mutationObserverConfig = { \"attributes\": true, \"attributeFilter\": [\"d\"] };\n this._pathElementMutationObserver = new MutationObserver(this._updateListFromPathMutations.bind(this));\n this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n };\n\n window.SVGPathSegList.prototype.classname = \"SVGPathSegList\";\n\n Object.defineProperty(window.SVGPathSegList.prototype, \"numberOfItems\", {\n get: function get() {\n this._checkPathSynchronizedToList();\n return this._list.length;\n },\n enumerable: true\n });\n\n // Add the pathSegList accessors to window.SVGPathElement.\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGAnimatedPathData\n Object.defineProperty(window.SVGPathElement.prototype, \"pathSegList\", {\n get: function get() {\n if (!this._pathSegList) this._pathSegList = new window.SVGPathSegList(this);\n return this._pathSegList;\n },\n enumerable: true\n });\n // FIXME: The following are not implemented and simply return window.SVGPathElement.pathSegList.\n Object.defineProperty(window.SVGPathElement.prototype, \"normalizedPathSegList\", { get: function get() {\n return this.pathSegList;\n }, enumerable: true });\n Object.defineProperty(window.SVGPathElement.prototype, \"animatedPathSegList\", { get: function get() {\n return this.pathSegList;\n }, enumerable: true });\n Object.defineProperty(window.SVGPathElement.prototype, \"animatedNormalizedPathSegList\", { get: function get() {\n return this.pathSegList;\n }, enumerable: true });\n\n // Process any pending mutations to the path element and update the list as needed.\n // This should be the first call of all public functions and is needed because\n // MutationObservers are not synchronous so we can have pending asynchronous mutations.\n window.SVGPathSegList.prototype._checkPathSynchronizedToList = function () {\n this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords());\n };\n\n window.SVGPathSegList.prototype._updateListFromPathMutations = function (mutationRecords) {\n if (!this._pathElement) return;\n var hasPathMutations = false;\n mutationRecords.forEach(function (record) {\n if (record.attributeName == \"d\") hasPathMutations = true;\n });\n if (hasPathMutations) this._list = this._parsePath(this._pathElement.getAttribute(\"d\"));\n };\n\n // Serialize the list and update the path's 'd' attribute.\n window.SVGPathSegList.prototype._writeListToPath = function () {\n this._pathElementMutationObserver.disconnect();\n this._pathElement.setAttribute(\"d\", window.SVGPathSegList._pathSegArrayAsString(this._list));\n this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);\n };\n\n // When a path segment changes the list needs to be synchronized back to the path element.\n window.SVGPathSegList.prototype.segmentChanged = function (pathSeg) {\n this._writeListToPath();\n };\n\n window.SVGPathSegList.prototype.clear = function () {\n this._checkPathSynchronizedToList();\n\n this._list.forEach(function (pathSeg) {\n pathSeg._owningPathSegList = null;\n });\n this._list = [];\n this._writeListToPath();\n };\n\n window.SVGPathSegList.prototype.initialize = function (newItem) {\n this._checkPathSynchronizedToList();\n\n this._list = [newItem];\n newItem._owningPathSegList = this;\n this._writeListToPath();\n return newItem;\n };\n\n window.SVGPathSegList.prototype._checkValidIndex = function (index) {\n if (isNaN(index) || index < 0 || index >= this.numberOfItems) throw \"INDEX_SIZE_ERR\";\n };\n\n window.SVGPathSegList.prototype.getItem = function (index) {\n this._checkPathSynchronizedToList();\n\n this._checkValidIndex(index);\n return this._list[index];\n };\n\n window.SVGPathSegList.prototype.insertItemBefore = function (newItem, index) {\n this._checkPathSynchronizedToList();\n\n // Spec: If the index is greater than or equal to numberOfItems, then the new item is appended to the end of the list.\n if (index > this.numberOfItems) index = this.numberOfItems;\n if (newItem._owningPathSegList) {\n // SVG2 spec says to make a copy.\n newItem = newItem.clone();\n }\n this._list.splice(index, 0, newItem);\n newItem._owningPathSegList = this;\n this._writeListToPath();\n return newItem;\n };\n\n window.SVGPathSegList.prototype.replaceItem = function (newItem, index) {\n this._checkPathSynchronizedToList();\n\n if (newItem._owningPathSegList) {\n // SVG2 spec says to make a copy.\n newItem = newItem.clone();\n }\n this._checkValidIndex(index);\n this._list[index] = newItem;\n newItem._owningPathSegList = this;\n this._writeListToPath();\n return newItem;\n };\n\n window.SVGPathSegList.prototype.removeItem = function (index) {\n this._checkPathSynchronizedToList();\n\n this._checkValidIndex(index);\n var item = this._list[index];\n this._list.splice(index, 1);\n this._writeListToPath();\n return item;\n };\n\n window.SVGPathSegList.prototype.appendItem = function (newItem) {\n this._checkPathSynchronizedToList();\n\n if (newItem._owningPathSegList) {\n // SVG2 spec says to make a copy.\n newItem = newItem.clone();\n }\n this._list.push(newItem);\n newItem._owningPathSegList = this;\n // TODO: Optimize this to just append to the existing attribute.\n this._writeListToPath();\n return newItem;\n };\n\n window.SVGPathSegList._pathSegArrayAsString = function (pathSegArray) {\n var string = \"\";\n var first = true;\n pathSegArray.forEach(function (pathSeg) {\n if (first) {\n first = false;\n string += pathSeg._asPathString();\n } else {\n string += \" \" + pathSeg._asPathString();\n }\n });\n return string;\n };\n\n // This closely follows SVGPathParser::parsePath from Source/core/svg/SVGPathParser.cpp.\n window.SVGPathSegList.prototype._parsePath = function (string) {\n if (!string || string.length == 0) return [];\n\n var owningPathSegList = this;\n\n var Builder = function Builder() {\n this.pathSegList = [];\n };\n\n Builder.prototype.appendSegment = function (pathSeg) {\n this.pathSegList.push(pathSeg);\n };\n\n var Source = function Source(string) {\n this._string = string;\n this._currentIndex = 0;\n this._endIndex = this._string.length;\n this._previousCommand = window.SVGPathSeg.PATHSEG_UNKNOWN;\n\n this._skipOptionalSpaces();\n };\n\n Source.prototype._isCurrentSpace = function () {\n var character = this._string[this._currentIndex];\n return character <= \" \" && (character == \" \" || character == \"\\n\" || character == \"\\t\" || character == \"\\r\" || character == \"\\f\");\n };\n\n Source.prototype._skipOptionalSpaces = function () {\n while (this._currentIndex < this._endIndex && this._isCurrentSpace()) {\n this._currentIndex++;\n }return this._currentIndex < this._endIndex;\n };\n\n Source.prototype._skipOptionalSpacesOrDelimiter = function () {\n if (this._currentIndex < this._endIndex && !this._isCurrentSpace() && this._string.charAt(this._currentIndex) != \",\") return false;\n if (this._skipOptionalSpaces()) {\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \",\") {\n this._currentIndex++;\n this._skipOptionalSpaces();\n }\n }\n return this._currentIndex < this._endIndex;\n };\n\n Source.prototype.hasMoreData = function () {\n return this._currentIndex < this._endIndex;\n };\n\n Source.prototype.peekSegmentType = function () {\n var lookahead = this._string[this._currentIndex];\n return this._pathSegTypeFromChar(lookahead);\n };\n\n Source.prototype._pathSegTypeFromChar = function (lookahead) {\n switch (lookahead) {\n case \"Z\":\n case \"z\":\n return window.SVGPathSeg.PATHSEG_CLOSEPATH;\n case \"M\":\n return window.SVGPathSeg.PATHSEG_MOVETO_ABS;\n case \"m\":\n return window.SVGPathSeg.PATHSEG_MOVETO_REL;\n case \"L\":\n return window.SVGPathSeg.PATHSEG_LINETO_ABS;\n case \"l\":\n return window.SVGPathSeg.PATHSEG_LINETO_REL;\n case \"C\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;\n case \"c\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;\n case \"Q\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;\n case \"q\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;\n case \"A\":\n return window.SVGPathSeg.PATHSEG_ARC_ABS;\n case \"a\":\n return window.SVGPathSeg.PATHSEG_ARC_REL;\n case \"H\":\n return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;\n case \"h\":\n return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;\n case \"V\":\n return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;\n case \"v\":\n return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;\n case \"S\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;\n case \"s\":\n return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;\n case \"T\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;\n case \"t\":\n return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;\n default:\n return window.SVGPathSeg.PATHSEG_UNKNOWN;\n }\n };\n\n Source.prototype._nextCommandHelper = function (lookahead, previousCommand) {\n // Check for remaining coordinates in the current command.\n if ((lookahead == \"+\" || lookahead == \"-\" || lookahead == \".\" || lookahead >= \"0\" && lookahead <= \"9\") && previousCommand != window.SVGPathSeg.PATHSEG_CLOSEPATH) {\n if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_ABS) return window.SVGPathSeg.PATHSEG_LINETO_ABS;\n if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_REL) return window.SVGPathSeg.PATHSEG_LINETO_REL;\n return previousCommand;\n }\n return window.SVGPathSeg.PATHSEG_UNKNOWN;\n };\n\n Source.prototype.initialCommandIsMoveTo = function () {\n // If the path is empty it is still valid, so return true.\n if (!this.hasMoreData()) return true;\n var command = this.peekSegmentType();\n // Path must start with moveTo.\n return command == window.SVGPathSeg.PATHSEG_MOVETO_ABS || command == window.SVGPathSeg.PATHSEG_MOVETO_REL;\n };\n\n // Parse a number from an SVG path. This very closely follows genericParseNumber(...) from Source/core/svg/SVGParserUtilities.cpp.\n // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-PathDataBNF\n Source.prototype._parseNumber = function () {\n var exponent = 0;\n var integer = 0;\n var frac = 1;\n var decimal = 0;\n var sign = 1;\n var expsign = 1;\n\n var startIndex = this._currentIndex;\n\n this._skipOptionalSpaces();\n\n // Read the sign.\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"+\") this._currentIndex++;else if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \"-\") {\n this._currentIndex++;\n sign = -1;\n }\n\n if (this._currentIndex == this._endIndex || (this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") && this._string.charAt(this._currentIndex) != \".\")\n // The first character of a number must be one of [0-9+-.].\n return undefined;\n\n // Read the integer part, build right-to-left.\n var startIntPartIndex = this._currentIndex;\n while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n this._currentIndex++;\n } // Advance to first non-digit.\n\n if (this._currentIndex != startIntPartIndex) {\n var scanIntPartIndex = this._currentIndex - 1;\n var multiplier = 1;\n while (scanIntPartIndex >= startIntPartIndex) {\n integer += multiplier * (this._string.charAt(scanIntPartIndex--) - \"0\");\n multiplier *= 10;\n }\n }\n\n // Read the decimals.\n if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == \".\") {\n this._currentIndex++;\n\n // There must be a least one digit following the .\n if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") return undefined;\n while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n frac *= 10;\n decimal += (this._string.charAt(this._currentIndex) - \"0\") / frac;\n this._currentIndex += 1;\n }\n }\n\n // Read the exponent part.\n if (this._currentIndex != startIndex && this._currentIndex + 1 < this._endIndex && (this._string.charAt(this._currentIndex) == \"e\" || this._string.charAt(this._currentIndex) == \"E\") && this._string.charAt(this._currentIndex + 1) != \"x\" && this._string.charAt(this._currentIndex + 1) != \"m\") {\n this._currentIndex++;\n\n // Read the sign of the exponent.\n if (this._string.charAt(this._currentIndex) == \"+\") {\n this._currentIndex++;\n } else if (this._string.charAt(this._currentIndex) == \"-\") {\n this._currentIndex++;\n expsign = -1;\n }\n\n // There must be an exponent.\n if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < \"0\" || this._string.charAt(this._currentIndex) > \"9\") return undefined;\n\n while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= \"0\" && this._string.charAt(this._currentIndex) <= \"9\") {\n exponent *= 10;\n exponent += this._string.charAt(this._currentIndex) - \"0\";\n this._currentIndex++;\n }\n }\n\n var number = integer + decimal;\n number *= sign;\n\n if (exponent) number *= Math.pow(10, expsign * exponent);\n\n if (startIndex == this._currentIndex) return undefined;\n\n this._skipOptionalSpacesOrDelimiter();\n\n return number;\n };\n\n Source.prototype._parseArcFlag = function () {\n if (this._currentIndex >= this._endIndex) return undefined;\n var flag = false;\n var flagChar = this._string.charAt(this._currentIndex++);\n if (flagChar == \"0\") flag = false;else if (flagChar == \"1\") flag = true;else return undefined;\n\n this._skipOptionalSpacesOrDelimiter();\n return flag;\n };\n\n Source.prototype.parseSegment = function () {\n var lookahead = this._string[this._currentIndex];\n var command = this._pathSegTypeFromChar(lookahead);\n if (command == window.SVGPathSeg.PATHSEG_UNKNOWN) {\n // Possibly an implicit command. Not allowed if this is the first command.\n if (this._previousCommand == window.SVGPathSeg.PATHSEG_UNKNOWN) return null;\n command = this._nextCommandHelper(lookahead, this._previousCommand);\n if (command == window.SVGPathSeg.PATHSEG_UNKNOWN) return null;\n } else {\n this._currentIndex++;\n }\n\n this._previousCommand = command;\n\n switch (command) {\n case window.SVGPathSeg.PATHSEG_MOVETO_REL:\n return new window.SVGPathSegMovetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n case window.SVGPathSeg.PATHSEG_MOVETO_ABS:\n return new window.SVGPathSegMovetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n case window.SVGPathSeg.PATHSEG_LINETO_REL:\n return new window.SVGPathSegLinetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n case window.SVGPathSeg.PATHSEG_LINETO_ABS:\n return new window.SVGPathSegLinetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:\n return new window.SVGPathSegLinetoHorizontalRel(owningPathSegList, this._parseNumber());\n case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:\n return new window.SVGPathSegLinetoHorizontalAbs(owningPathSegList, this._parseNumber());\n case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:\n return new window.SVGPathSegLinetoVerticalRel(owningPathSegList, this._parseNumber());\n case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:\n return new window.SVGPathSegLinetoVerticalAbs(owningPathSegList, this._parseNumber());\n case window.SVGPathSeg.PATHSEG_CLOSEPATH:\n this._skipOptionalSpaces();\n return new window.SVGPathSegClosePath(owningPathSegList);\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:\n var points = { x1: this._parseNumber(), y1: this._parseNumber(), x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber() };\n return new window.SVGPathSegCurvetoCubicRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:\n var points = { x1: this._parseNumber(), y1: this._parseNumber(), x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber() };\n return new window.SVGPathSegCurvetoCubicAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:\n var points = { x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber() };\n return new window.SVGPathSegCurvetoCubicSmoothRel(owningPathSegList, points.x, points.y, points.x2, points.y2);\n case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:\n var points = { x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber() };\n return new window.SVGPathSegCurvetoCubicSmoothAbs(owningPathSegList, points.x, points.y, points.x2, points.y2);\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:\n var points = { x1: this._parseNumber(), y1: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber() };\n return new window.SVGPathSegCurvetoQuadraticRel(owningPathSegList, points.x, points.y, points.x1, points.y1);\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:\n var points = { x1: this._parseNumber(), y1: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber() };\n return new window.SVGPathSegCurvetoQuadraticAbs(owningPathSegList, points.x, points.y, points.x1, points.y1);\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:\n return new window.SVGPathSegCurvetoQuadraticSmoothRel(owningPathSegList, this._parseNumber(), this._parseNumber());\n case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:\n return new window.SVGPathSegCurvetoQuadraticSmoothAbs(owningPathSegList, this._parseNumber(), this._parseNumber());\n case window.SVGPathSeg.PATHSEG_ARC_REL:\n var points = { x1: this._parseNumber(), y1: this._parseNumber(), arcAngle: this._parseNumber(), arcLarge: this._parseArcFlag(), arcSweep: this._parseArcFlag(), x: this._parseNumber(), y: this._parseNumber() };\n return new window.SVGPathSegArcRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n case window.SVGPathSeg.PATHSEG_ARC_ABS:\n var points = { x1: this._parseNumber(), y1: this._parseNumber(), arcAngle: this._parseNumber(), arcLarge: this._parseArcFlag(), arcSweep: this._parseArcFlag(), x: this._parseNumber(), y: this._parseNumber() };\n return new window.SVGPathSegArcAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);\n default:\n throw \"Unknown path seg type.\";\n }\n };\n\n var builder = new Builder();\n var source = new Source(string);\n\n if (!source.initialCommandIsMoveTo()) return [];\n while (source.hasMoreData()) {\n var pathSeg = source.parseSegment();\n if (!pathSeg) return [];\n builder.appendSegment(pathSeg);\n }\n\n return builder.pathSegList;\n };\n }\n })();\n\n // String.padEnd polyfill for IE11\n //\n // https://github.com/uxitten/polyfill/blob/master/string.polyfill.js\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padEnd\n if (!String.prototype.padEnd) {\n String.prototype.padEnd = function padEnd(targetLength, padString) {\n targetLength = targetLength >> 0; //floor if number or convert non-number to 0;\n padString = String(typeof padString !== 'undefined' ? padString : ' ');\n if (this.length > targetLength) {\n return String(this);\n } else {\n targetLength = targetLength - this.length;\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\n }\n return String(this) + padString.slice(0, targetLength);\n }\n };\n }\n\n /* jshint ignore:end */\n\n c3_chart_fn.axis = function () {};\n c3_chart_fn.axis.labels = function (labels) {\n var $$ = this.internal;\n if (arguments.length) {\n Object.keys(labels).forEach(function (axisId) {\n $$.axis.setLabelText(axisId, labels[axisId]);\n });\n $$.axis.updateLabels();\n }\n // TODO: return some values?\n };\n c3_chart_fn.axis.max = function (max) {\n var $$ = this.internal,\n config = $$.config;\n if (arguments.length) {\n if ((typeof max === 'undefined' ? 'undefined' : _typeof(max)) === 'object') {\n if (isValue(max.x)) {\n config.axis_x_max = max.x;\n }\n if (isValue(max.y)) {\n config.axis_y_max = max.y;\n }\n if (isValue(max.y2)) {\n config.axis_y2_max = max.y2;\n }\n } else {\n config.axis_y_max = config.axis_y2_max = max;\n }\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true });\n } else {\n return {\n x: config.axis_x_max,\n y: config.axis_y_max,\n y2: config.axis_y2_max\n };\n }\n };\n c3_chart_fn.axis.min = function (min) {\n var $$ = this.internal,\n config = $$.config;\n if (arguments.length) {\n if ((typeof min === 'undefined' ? 'undefined' : _typeof(min)) === 'object') {\n if (isValue(min.x)) {\n config.axis_x_min = min.x;\n }\n if (isValue(min.y)) {\n config.axis_y_min = min.y;\n }\n if (isValue(min.y2)) {\n config.axis_y2_min = min.y2;\n }\n } else {\n config.axis_y_min = config.axis_y2_min = min;\n }\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true });\n } else {\n return {\n x: config.axis_x_min,\n y: config.axis_y_min,\n y2: config.axis_y2_min\n };\n }\n };\n c3_chart_fn.axis.range = function (range) {\n if (arguments.length) {\n if (isDefined(range.max)) {\n this.axis.max(range.max);\n }\n if (isDefined(range.min)) {\n this.axis.min(range.min);\n }\n } else {\n return {\n max: this.axis.max(),\n min: this.axis.min()\n };\n }\n };\n\n c3_chart_fn.category = function (i, category) {\n var $$ = this.internal,\n config = $$.config;\n if (arguments.length > 1) {\n config.axis_x_categories[i] = category;\n $$.redraw();\n }\n return config.axis_x_categories[i];\n };\n c3_chart_fn.categories = function (categories) {\n var $$ = this.internal,\n config = $$.config;\n if (!arguments.length) {\n return config.axis_x_categories;\n }\n config.axis_x_categories = categories;\n $$.redraw();\n return config.axis_x_categories;\n };\n\n c3_chart_fn.resize = function (size) {\n var $$ = this.internal,\n config = $$.config;\n config.size_width = size ? size.width : null;\n config.size_height = size ? size.height : null;\n this.flush();\n };\n\n c3_chart_fn.flush = function () {\n var $$ = this.internal;\n $$.updateAndRedraw({ withLegend: true, withTransition: false, withTransitionForTransform: false });\n };\n\n c3_chart_fn.destroy = function () {\n var $$ = this.internal;\n\n window.clearInterval($$.intervalForObserveInserted);\n\n if ($$.resizeTimeout !== undefined) {\n window.clearTimeout($$.resizeTimeout);\n }\n\n if (window.detachEvent) {\n window.detachEvent('onresize', $$.resizeIfElementDisplayed);\n } else if (window.removeEventListener) {\n window.removeEventListener('resize', $$.resizeIfElementDisplayed);\n } else {\n var wrapper = window.onresize;\n // check if no one else removed our wrapper and remove our resizeFunction from it\n if (wrapper && wrapper.add && wrapper.remove) {\n wrapper.remove($$.resizeFunction);\n }\n }\n\n // remove the inner resize functions\n $$.resizeFunction.remove();\n\n $$.selectChart.classed('c3', false).html(\"\");\n\n // MEMO: this is needed because the reference of some elements will not be released, then memory leak will happen.\n Object.keys($$).forEach(function (key) {\n $$[key] = null;\n });\n\n return null;\n };\n\n // TODO: fix\n c3_chart_fn.color = function (id) {\n var $$ = this.internal;\n return $$.color(id); // more patterns\n };\n\n c3_chart_fn.data = function (targetIds) {\n var targets = this.internal.data.targets;\n return typeof targetIds === 'undefined' ? targets : targets.filter(function (t) {\n return [].concat(targetIds).indexOf(t.id) >= 0;\n });\n };\n c3_chart_fn.data.shown = function (targetIds) {\n return this.internal.filterTargetsToShow(this.data(targetIds));\n };\n c3_chart_fn.data.values = function (targetId) {\n var targets,\n values = null;\n if (targetId) {\n targets = this.data(targetId);\n values = targets[0] ? targets[0].values.map(function (d) {\n return d.value;\n }) : null;\n }\n return values;\n };\n c3_chart_fn.data.names = function (names) {\n this.internal.clearLegendItemTextBoxCache();\n return this.internal.updateDataAttributes('names', names);\n };\n c3_chart_fn.data.colors = function (colors) {\n return this.internal.updateDataAttributes('colors', colors);\n };\n c3_chart_fn.data.axes = function (axes) {\n return this.internal.updateDataAttributes('axes', axes);\n };\n\n c3_chart_fn.flow = function (args) {\n var $$ = this.internal,\n targets,\n data,\n notfoundIds = [],\n orgDataCount = $$.getMaxDataCount(),\n dataCount,\n domain,\n baseTarget,\n baseValue,\n length = 0,\n tail = 0,\n diff,\n to;\n\n if (args.json) {\n data = $$.convertJsonToData(args.json, args.keys);\n } else if (args.rows) {\n data = $$.convertRowsToData(args.rows);\n } else if (args.columns) {\n data = $$.convertColumnsToData(args.columns);\n } else {\n return;\n }\n targets = $$.convertDataToTargets(data, true);\n\n // Update/Add data\n $$.data.targets.forEach(function (t) {\n var found = false,\n i,\n j;\n for (i = 0; i < targets.length; i++) {\n if (t.id === targets[i].id) {\n found = true;\n\n if (t.values[t.values.length - 1]) {\n tail = t.values[t.values.length - 1].index + 1;\n }\n length = targets[i].values.length;\n\n for (j = 0; j < length; j++) {\n targets[i].values[j].index = tail + j;\n if (!$$.isTimeSeries()) {\n targets[i].values[j].x = tail + j;\n }\n }\n t.values = t.values.concat(targets[i].values);\n\n targets.splice(i, 1);\n break;\n }\n }\n if (!found) {\n notfoundIds.push(t.id);\n }\n });\n\n // Append null for not found targets\n $$.data.targets.forEach(function (t) {\n var i, j;\n for (i = 0; i < notfoundIds.length; i++) {\n if (t.id === notfoundIds[i]) {\n tail = t.values[t.values.length - 1].index + 1;\n for (j = 0; j < length; j++) {\n t.values.push({\n id: t.id,\n index: tail + j,\n x: $$.isTimeSeries() ? $$.getOtherTargetX(tail + j) : tail + j,\n value: null\n });\n }\n }\n }\n });\n\n // Generate null values for new target\n if ($$.data.targets.length) {\n targets.forEach(function (t) {\n var i,\n missing = [];\n for (i = $$.data.targets[0].values[0].index; i < tail; i++) {\n missing.push({\n id: t.id,\n index: i,\n x: $$.isTimeSeries() ? $$.getOtherTargetX(i) : i,\n value: null\n });\n }\n t.values.forEach(function (v) {\n v.index += tail;\n if (!$$.isTimeSeries()) {\n v.x += tail;\n }\n });\n t.values = missing.concat(t.values);\n });\n }\n $$.data.targets = $$.data.targets.concat(targets); // add remained\n\n // check data count because behavior needs to change when it's only one\n dataCount = $$.getMaxDataCount();\n baseTarget = $$.data.targets[0];\n baseValue = baseTarget.values[0];\n\n // Update length to flow if needed\n if (isDefined(args.to)) {\n length = 0;\n to = $$.isTimeSeries() ? $$.parseDate(args.to) : args.to;\n baseTarget.values.forEach(function (v) {\n if (v.x < to) {\n length++;\n }\n });\n } else if (isDefined(args.length)) {\n length = args.length;\n }\n\n // If only one data, update the domain to flow from left edge of the chart\n if (!orgDataCount) {\n if ($$.isTimeSeries()) {\n if (baseTarget.values.length > 1) {\n diff = baseTarget.values[baseTarget.values.length - 1].x - baseValue.x;\n } else {\n diff = baseValue.x - $$.getXDomain($$.data.targets)[0];\n }\n } else {\n diff = 1;\n }\n domain = [baseValue.x - diff, baseValue.x];\n $$.updateXDomain(null, true, true, false, domain);\n } else if (orgDataCount === 1) {\n if ($$.isTimeSeries()) {\n diff = (baseTarget.values[baseTarget.values.length - 1].x - baseValue.x) / 2;\n domain = [new Date(+baseValue.x - diff), new Date(+baseValue.x + diff)];\n $$.updateXDomain(null, true, true, false, domain);\n }\n }\n\n // Set targets\n $$.updateTargets($$.data.targets);\n\n // Redraw with new targets\n $$.redraw({\n flow: {\n index: baseValue.index,\n length: length,\n duration: isValue(args.duration) ? args.duration : $$.config.transition_duration,\n done: args.done,\n orgDataCount: orgDataCount\n },\n withLegend: true,\n withTransition: orgDataCount > 1,\n withTrimXDomain: false,\n withUpdateXAxis: true\n });\n };\n\n c3_chart_internal_fn.generateFlow = function (args) {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3;\n\n return function () {\n var targets = args.targets,\n flow = args.flow,\n drawBar = args.drawBar,\n drawLine = args.drawLine,\n drawArea = args.drawArea,\n cx = args.cx,\n cy = args.cy,\n xv = args.xv,\n xForText = args.xForText,\n yForText = args.yForText,\n duration = args.duration;\n\n var translateX,\n scaleX = 1,\n transform,\n flowIndex = flow.index,\n flowLength = flow.length,\n flowStart = $$.getValueOnIndex($$.data.targets[0].values, flowIndex),\n flowEnd = $$.getValueOnIndex($$.data.targets[0].values, flowIndex + flowLength),\n orgDomain = $$.x.domain(),\n domain,\n durationForFlow = flow.duration || duration,\n done = flow.done || function () {},\n wait = $$.generateWait();\n\n var xgrid = $$.xgrid || d3.selectAll([]),\n xgridLines = $$.xgridLines || d3.selectAll([]),\n mainRegion = $$.mainRegion || d3.selectAll([]),\n mainText = $$.mainText || d3.selectAll([]),\n mainBar = $$.mainBar || d3.selectAll([]),\n mainLine = $$.mainLine || d3.selectAll([]),\n mainArea = $$.mainArea || d3.selectAll([]),\n mainCircle = $$.mainCircle || d3.selectAll([]);\n\n // set flag\n $$.flowing = true;\n\n // remove head data after rendered\n $$.data.targets.forEach(function (d) {\n d.values.splice(0, flowLength);\n });\n\n // update x domain to generate axis elements for flow\n domain = $$.updateXDomain(targets, true, true);\n // update elements related to x scale\n if ($$.updateXGrid) {\n $$.updateXGrid(true);\n }\n\n // generate transform to flow\n if (!flow.orgDataCount) {\n // if empty\n if ($$.data.targets[0].values.length !== 1) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n if ($$.isTimeSeries()) {\n flowStart = $$.getValueOnIndex($$.data.targets[0].values, 0);\n flowEnd = $$.getValueOnIndex($$.data.targets[0].values, $$.data.targets[0].values.length - 1);\n translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);\n } else {\n translateX = diffDomain(domain) / 2;\n }\n }\n } else if (flow.orgDataCount === 1 || (flowStart && flowStart.x) === (flowEnd && flowEnd.x)) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n if ($$.isTimeSeries()) {\n translateX = $$.x(orgDomain[0]) - $$.x(domain[0]);\n } else {\n translateX = $$.x(flowStart.x) - $$.x(flowEnd.x);\n }\n }\n scaleX = diffDomain(orgDomain) / diffDomain(domain);\n transform = 'translate(' + translateX + ',0) scale(' + scaleX + ',1)';\n\n $$.hideXGridFocus();\n\n d3.transition().ease('linear').duration(durationForFlow).each(function () {\n wait.add($$.axes.x.transition().call($$.xAxis));\n wait.add(mainBar.transition().attr('transform', transform));\n wait.add(mainLine.transition().attr('transform', transform));\n wait.add(mainArea.transition().attr('transform', transform));\n wait.add(mainCircle.transition().attr('transform', transform));\n wait.add(mainText.transition().attr('transform', transform));\n wait.add(mainRegion.filter($$.isRegionOnX).transition().attr('transform', transform));\n wait.add(xgrid.transition().attr('transform', transform));\n wait.add(xgridLines.transition().attr('transform', transform));\n }).call(wait, function () {\n var i,\n shapes = [],\n texts = [],\n eventRects = [];\n\n // remove flowed elements\n if (flowLength) {\n for (i = 0; i < flowLength; i++) {\n shapes.push('.' + CLASS.shape + '-' + (flowIndex + i));\n texts.push('.' + CLASS.text + '-' + (flowIndex + i));\n eventRects.push('.' + CLASS.eventRect + '-' + (flowIndex + i));\n }\n $$.svg.selectAll('.' + CLASS.shapes).selectAll(shapes).remove();\n $$.svg.selectAll('.' + CLASS.texts).selectAll(texts).remove();\n $$.svg.selectAll('.' + CLASS.eventRects).selectAll(eventRects).remove();\n $$.svg.select('.' + CLASS.xgrid).remove();\n }\n\n // draw again for removing flowed elements and reverting attr\n xgrid.attr('transform', null).attr($$.xgridAttr);\n xgridLines.attr('transform', null);\n xgridLines.select('line').attr(\"x1\", config.axis_rotated ? 0 : xv).attr(\"x2\", config.axis_rotated ? $$.width : xv);\n xgridLines.select('text').attr(\"x\", config.axis_rotated ? $$.width : 0).attr(\"y\", xv);\n mainBar.attr('transform', null).attr(\"d\", drawBar);\n mainLine.attr('transform', null).attr(\"d\", drawLine);\n mainArea.attr('transform', null).attr(\"d\", drawArea);\n mainCircle.attr('transform', null).attr(\"cx\", cx).attr(\"cy\", cy);\n mainText.attr('transform', null).attr('x', xForText).attr('y', yForText).style('fill-opacity', $$.opacityForText.bind($$));\n mainRegion.attr('transform', null);\n mainRegion.select('rect').filter($$.isRegionOnX).attr(\"x\", $$.regionX.bind($$)).attr(\"width\", $$.regionWidth.bind($$));\n\n if (config.interaction_enabled) {\n $$.redrawEventRect();\n }\n\n // callback for end of flow\n done();\n\n $$.flowing = false;\n });\n };\n };\n\n c3_chart_fn.focus = function (targetIds) {\n var $$ = this.internal,\n candidates;\n\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))), this.revert();\n this.defocus();\n candidates.classed(CLASS.focused, true).classed(CLASS.defocused, false);\n if ($$.hasArcType()) {\n $$.expandArc(targetIds);\n }\n $$.toggleFocusLegend(targetIds, true);\n\n $$.focusedTargetIds = targetIds;\n $$.defocusedTargetIds = $$.defocusedTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n };\n\n c3_chart_fn.defocus = function (targetIds) {\n var $$ = this.internal,\n candidates;\n\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))), candidates.classed(CLASS.focused, false).classed(CLASS.defocused, true);\n if ($$.hasArcType()) {\n $$.unexpandArc(targetIds);\n }\n $$.toggleFocusLegend(targetIds, false);\n\n $$.focusedTargetIds = $$.focusedTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n $$.defocusedTargetIds = targetIds;\n };\n\n c3_chart_fn.revert = function (targetIds) {\n var $$ = this.internal,\n candidates;\n\n targetIds = $$.mapToTargetIds(targetIds);\n candidates = $$.svg.selectAll($$.selectorTargets(targetIds)); // should be for all targets\n\n candidates.classed(CLASS.focused, false).classed(CLASS.defocused, false);\n if ($$.hasArcType()) {\n $$.unexpandArc(targetIds);\n }\n if ($$.config.legend_show) {\n $$.showLegend(targetIds.filter($$.isLegendToShow.bind($$)));\n $$.legend.selectAll($$.selectorLegends(targetIds)).filter(function () {\n return $$.d3.select(this).classed(CLASS.legendItemFocused);\n }).classed(CLASS.legendItemFocused, false);\n }\n\n $$.focusedTargetIds = [];\n $$.defocusedTargetIds = [];\n };\n\n c3_chart_fn.xgrids = function (grids) {\n var $$ = this.internal,\n config = $$.config;\n if (!grids) {\n return config.grid_x_lines;\n }\n config.grid_x_lines = grids;\n $$.redrawWithoutRescale();\n return config.grid_x_lines;\n };\n c3_chart_fn.xgrids.add = function (grids) {\n var $$ = this.internal;\n return this.xgrids($$.config.grid_x_lines.concat(grids ? grids : []));\n };\n c3_chart_fn.xgrids.remove = function (params) {\n // TODO: multiple\n var $$ = this.internal;\n $$.removeGridLines(params, true);\n };\n\n c3_chart_fn.ygrids = function (grids) {\n var $$ = this.internal,\n config = $$.config;\n if (!grids) {\n return config.grid_y_lines;\n }\n config.grid_y_lines = grids;\n $$.redrawWithoutRescale();\n return config.grid_y_lines;\n };\n c3_chart_fn.ygrids.add = function (grids) {\n var $$ = this.internal;\n return this.ygrids($$.config.grid_y_lines.concat(grids ? grids : []));\n };\n c3_chart_fn.ygrids.remove = function (params) {\n // TODO: multiple\n var $$ = this.internal;\n $$.removeGridLines(params, false);\n };\n\n c3_chart_fn.groups = function (groups) {\n var $$ = this.internal,\n config = $$.config;\n if (isUndefined(groups)) {\n return config.data_groups;\n }\n config.data_groups = groups;\n $$.redraw();\n return config.data_groups;\n };\n\n c3_chart_fn.legend = function () {};\n c3_chart_fn.legend.show = function (targetIds) {\n var $$ = this.internal;\n $$.showLegend($$.mapToTargetIds(targetIds));\n $$.updateAndRedraw({ withLegend: true });\n };\n c3_chart_fn.legend.hide = function (targetIds) {\n var $$ = this.internal;\n $$.hideLegend($$.mapToTargetIds(targetIds));\n $$.updateAndRedraw({ withLegend: true });\n };\n\n c3_chart_fn.load = function (args) {\n var $$ = this.internal,\n config = $$.config;\n // update xs if specified\n if (args.xs) {\n $$.addXs(args.xs);\n }\n // update names if exists\n if ('names' in args) {\n c3_chart_fn.data.names.bind(this)(args.names);\n }\n // update classes if exists\n if ('classes' in args) {\n Object.keys(args.classes).forEach(function (id) {\n config.data_classes[id] = args.classes[id];\n });\n }\n // update categories if exists\n if ('categories' in args && $$.isCategorized()) {\n config.axis_x_categories = args.categories;\n }\n // update axes if exists\n if ('axes' in args) {\n Object.keys(args.axes).forEach(function (id) {\n config.data_axes[id] = args.axes[id];\n });\n }\n // update colors if exists\n if ('colors' in args) {\n Object.keys(args.colors).forEach(function (id) {\n config.data_colors[id] = args.colors[id];\n });\n }\n // use cache if exists\n if ('cacheIds' in args && $$.hasCaches(args.cacheIds)) {\n $$.load($$.getCaches(args.cacheIds), args.done);\n return;\n }\n // unload if needed\n if ('unload' in args) {\n // TODO: do not unload if target will load (included in url/rows/columns)\n $$.unload($$.mapToTargetIds(typeof args.unload === 'boolean' && args.unload ? null : args.unload), function () {\n $$.loadFromArgs(args);\n });\n } else {\n $$.loadFromArgs(args);\n }\n };\n\n c3_chart_fn.unload = function (args) {\n var $$ = this.internal;\n args = args || {};\n if (args instanceof Array) {\n args = { ids: args };\n } else if (typeof args === 'string') {\n args = { ids: [args] };\n }\n $$.unload($$.mapToTargetIds(args.ids), function () {\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true });\n if (args.done) {\n args.done();\n }\n });\n };\n\n c3_chart_fn.regions = function (regions) {\n var $$ = this.internal,\n config = $$.config;\n if (!regions) {\n return config.regions;\n }\n config.regions = regions;\n $$.redrawWithoutRescale();\n return config.regions;\n };\n c3_chart_fn.regions.add = function (regions) {\n var $$ = this.internal,\n config = $$.config;\n if (!regions) {\n return config.regions;\n }\n config.regions = config.regions.concat(regions);\n $$.redrawWithoutRescale();\n return config.regions;\n };\n c3_chart_fn.regions.remove = function (options) {\n var $$ = this.internal,\n config = $$.config,\n duration,\n classes,\n regions;\n\n options = options || {};\n duration = $$.getOption(options, \"duration\", config.transition_duration);\n classes = $$.getOption(options, \"classes\", [CLASS.region]);\n\n regions = $$.main.select('.' + CLASS.regions).selectAll(classes.map(function (c) {\n return '.' + c;\n }));\n (duration ? regions.transition().duration(duration) : regions).style('opacity', 0).remove();\n\n config.regions = config.regions.filter(function (region) {\n var found = false;\n if (!region['class']) {\n return true;\n }\n region['class'].split(' ').forEach(function (c) {\n if (classes.indexOf(c) >= 0) {\n found = true;\n }\n });\n return !found;\n });\n\n return config.regions;\n };\n\n c3_chart_fn.selected = function (targetId) {\n var $$ = this.internal,\n d3 = $$.d3;\n return d3.merge($$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(targetId)).selectAll('.' + CLASS.shape).filter(function () {\n return d3.select(this).classed(CLASS.SELECTED);\n }).map(function (d) {\n return d.map(function (d) {\n var data = d.__data__;return data.data ? data.data : data;\n });\n }));\n };\n c3_chart_fn.select = function (ids, indices, resetOther) {\n var $$ = this.internal,\n d3 = $$.d3,\n config = $$.config;\n if (!config.data_selection_enabled) {\n return;\n }\n $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this),\n id = d.data ? d.data.id : d.id,\n toggle = $$.getToggle(this, d).bind($$),\n isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n isTargetIndex = !indices || indices.indexOf(i) >= 0,\n isSelected = shape.classed(CLASS.SELECTED);\n // line/area selection not supported yet\n if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n return;\n }\n if (isTargetId && isTargetIndex) {\n if (config.data_selection_isselectable(d) && !isSelected) {\n toggle(true, shape.classed(CLASS.SELECTED, true), d, i);\n }\n } else if (isDefined(resetOther) && resetOther) {\n if (isSelected) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n }\n });\n };\n c3_chart_fn.unselect = function (ids, indices) {\n var $$ = this.internal,\n d3 = $$.d3,\n config = $$.config;\n if (!config.data_selection_enabled) {\n return;\n }\n $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this),\n id = d.data ? d.data.id : d.id,\n toggle = $$.getToggle(this, d).bind($$),\n isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0,\n isTargetIndex = !indices || indices.indexOf(i) >= 0,\n isSelected = shape.classed(CLASS.SELECTED);\n // line/area selection not supported yet\n if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) {\n return;\n }\n if (isTargetId && isTargetIndex) {\n if (config.data_selection_isselectable(d)) {\n if (isSelected) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n }\n }\n });\n };\n\n c3_chart_fn.show = function (targetIds, options) {\n var $$ = this.internal,\n targets;\n\n targetIds = $$.mapToTargetIds(targetIds);\n options = options || {};\n\n $$.removeHiddenTargetIds(targetIds);\n targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n\n targets.transition().style('opacity', 1, 'important').call($$.endall, function () {\n targets.style('opacity', null).style('opacity', 1);\n });\n\n if (options.withLegend) {\n $$.showLegend(targetIds);\n }\n\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true });\n };\n\n c3_chart_fn.hide = function (targetIds, options) {\n var $$ = this.internal,\n targets;\n\n targetIds = $$.mapToTargetIds(targetIds);\n options = options || {};\n\n $$.addHiddenTargetIds(targetIds);\n targets = $$.svg.selectAll($$.selectorTargets(targetIds));\n\n targets.transition().style('opacity', 0, 'important').call($$.endall, function () {\n targets.style('opacity', null).style('opacity', 0);\n });\n\n if (options.withLegend) {\n $$.hideLegend(targetIds);\n }\n\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true });\n };\n\n c3_chart_fn.toggle = function (targetIds, options) {\n var that = this,\n $$ = this.internal;\n $$.mapToTargetIds(targetIds).forEach(function (targetId) {\n $$.isTargetToShow(targetId) ? that.hide(targetId, options) : that.show(targetId, options);\n });\n };\n\n c3_chart_fn.tooltip = function () {};\n c3_chart_fn.tooltip.show = function (args) {\n var $$ = this.internal,\n index,\n mouse;\n\n // determine mouse position on the chart\n if (args.mouse) {\n mouse = args.mouse;\n }\n\n // determine focus data\n if (args.data) {\n if ($$.isMultipleX()) {\n // if multiple xs, target point will be determined by mouse\n mouse = [$$.x(args.data.x), $$.getYScale(args.data.id)(args.data.value)];\n index = null;\n } else {\n // TODO: when tooltip_grouped = false\n index = isValue(args.data.index) ? args.data.index : $$.getIndexByX(args.data.x);\n }\n } else if (typeof args.x !== 'undefined') {\n index = $$.getIndexByX(args.x);\n } else if (typeof args.index !== 'undefined') {\n index = args.index;\n }\n\n // emulate mouse events to show\n $$.dispatchEvent('mouseover', index, mouse);\n $$.dispatchEvent('mousemove', index, mouse);\n\n $$.config.tooltip_onshow.call($$, args.data);\n };\n c3_chart_fn.tooltip.hide = function () {\n // TODO: get target data by checking the state of focus\n this.internal.dispatchEvent('mouseout', 0);\n\n this.internal.config.tooltip_onhide.call(this);\n };\n\n c3_chart_fn.transform = function (type, targetIds) {\n var $$ = this.internal,\n options = ['pie', 'donut'].indexOf(type) >= 0 ? { withTransform: true } : null;\n $$.transformTo(targetIds, type, options);\n };\n\n c3_chart_internal_fn.transformTo = function (targetIds, type, optionsForRedraw) {\n var $$ = this,\n withTransitionForAxis = !$$.hasArcType(),\n options = optionsForRedraw || { withTransitionForAxis: withTransitionForAxis };\n options.withTransitionForTransform = false;\n $$.transiting = false;\n $$.setTargetType(targetIds, type);\n $$.updateTargets($$.data.targets); // this is needed when transforming to arc\n $$.updateAndRedraw(options);\n };\n\n c3_chart_fn.x = function (x) {\n var $$ = this.internal;\n if (arguments.length) {\n $$.updateTargetX($$.data.targets, x);\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true });\n }\n return $$.data.xs;\n };\n c3_chart_fn.xs = function (xs) {\n var $$ = this.internal;\n if (arguments.length) {\n $$.updateTargetXs($$.data.targets, xs);\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true });\n }\n return $$.data.xs;\n };\n\n c3_chart_fn.zoom = function (domain) {\n var $$ = this.internal;\n if (domain) {\n if ($$.isTimeSeries()) {\n domain = domain.map(function (x) {\n return $$.parseDate(x);\n });\n }\n $$.brush.extent(domain);\n $$.redraw({ withUpdateXDomain: true, withY: $$.config.zoom_rescale });\n $$.config.zoom_onzoom.call(this, $$.x.orgDomain());\n }\n return $$.brush.extent();\n };\n c3_chart_fn.zoom.enable = function (enabled) {\n var $$ = this.internal;\n $$.config.zoom_enabled = enabled;\n $$.updateAndRedraw();\n };\n c3_chart_fn.unzoom = function () {\n var $$ = this.internal;\n $$.brush.clear().update();\n $$.redraw({ withUpdateXDomain: true });\n };\n\n c3_chart_fn.zoom.max = function (max) {\n var $$ = this.internal,\n config = $$.config,\n d3 = $$.d3;\n if (max === 0 || max) {\n config.zoom_x_max = d3.max([$$.orgXDomain[1], max]);\n } else {\n return config.zoom_x_max;\n }\n };\n\n c3_chart_fn.zoom.min = function (min) {\n var $$ = this.internal,\n config = $$.config,\n d3 = $$.d3;\n if (min === 0 || min) {\n config.zoom_x_min = d3.min([$$.orgXDomain[0], min]);\n } else {\n return config.zoom_x_min;\n }\n };\n\n c3_chart_fn.zoom.range = function (range) {\n if (arguments.length) {\n if (isDefined(range.max)) {\n this.domain.max(range.max);\n }\n if (isDefined(range.min)) {\n this.domain.min(range.min);\n }\n } else {\n return {\n max: this.domain.max(),\n min: this.domain.min()\n };\n }\n };\n\n c3_chart_internal_fn.initPie = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.pie = d3.layout.pie().value(function (d) {\n return d.values.reduce(function (a, b) {\n return a + b.value;\n }, 0);\n });\n $$.pie.sort($$.getOrderFunction() || null);\n };\n\n c3_chart_internal_fn.updateRadius = function () {\n var $$ = this,\n config = $$.config,\n w = config.gauge_width || config.donut_width,\n gaugeArcWidth = $$.filterTargetsToShow($$.data.targets).length * $$.config.gauge_arcs_minWidth;\n $$.radiusExpanded = Math.min($$.arcWidth, $$.arcHeight) / 2 * ($$.hasType('gauge') ? 0.85 : 1);\n $$.radius = $$.radiusExpanded * 0.95;\n $$.innerRadiusRatio = w ? ($$.radius - w) / $$.radius : 0.6;\n $$.innerRadius = $$.hasType('donut') || $$.hasType('gauge') ? $$.radius * $$.innerRadiusRatio : 0;\n $$.gaugeArcWidth = w ? w : gaugeArcWidth <= $$.radius - $$.innerRadius ? $$.radius - $$.innerRadius : gaugeArcWidth <= $$.radius ? gaugeArcWidth : $$.radius;\n };\n\n c3_chart_internal_fn.updateArc = function () {\n var $$ = this;\n $$.svgArc = $$.getSvgArc();\n $$.svgArcExpanded = $$.getSvgArcExpanded();\n $$.svgArcExpandedSub = $$.getSvgArcExpanded(0.98);\n };\n\n c3_chart_internal_fn.updateAngle = function (d) {\n var $$ = this,\n config = $$.config,\n found = false,\n index = 0,\n gMin,\n gMax,\n gTic,\n gValue;\n\n if (!config) {\n return null;\n }\n\n $$.pie($$.filterTargetsToShow($$.data.targets)).forEach(function (t) {\n if (!found && t.data.id === d.data.id) {\n found = true;\n d = t;\n d.index = index;\n }\n index++;\n });\n if (isNaN(d.startAngle)) {\n d.startAngle = 0;\n }\n if (isNaN(d.endAngle)) {\n d.endAngle = d.startAngle;\n }\n if ($$.isGaugeType(d.data)) {\n gMin = config.gauge_min;\n gMax = config.gauge_max;\n gTic = Math.PI * (config.gauge_fullCircle ? 2 : 1) / (gMax - gMin);\n gValue = d.value < gMin ? 0 : d.value < gMax ? d.value - gMin : gMax - gMin;\n d.startAngle = config.gauge_startingAngle;\n d.endAngle = d.startAngle + gTic * gValue;\n }\n return found ? d : null;\n };\n\n c3_chart_internal_fn.getSvgArc = function () {\n var $$ = this,\n hasGaugeType = $$.hasType('gauge'),\n singleArcWidth = $$.gaugeArcWidth / $$.filterTargetsToShow($$.data.targets).length,\n arc = $$.d3.svg.arc().outerRadius(function (d) {\n return hasGaugeType ? $$.radius - singleArcWidth * d.index : $$.radius;\n }).innerRadius(function (d) {\n return hasGaugeType ? $$.radius - singleArcWidth * (d.index + 1) : $$.innerRadius;\n }),\n newArc = function newArc(d, withoutUpdate) {\n var updated;\n if (withoutUpdate) {\n return arc(d);\n } // for interpolate\n updated = $$.updateAngle(d);\n return updated ? arc(updated) : \"M 0 0\";\n };\n // TODO: extends all function\n newArc.centroid = arc.centroid;\n return newArc;\n };\n\n c3_chart_internal_fn.getSvgArcExpanded = function (rate) {\n rate = rate || 1;\n var $$ = this,\n hasGaugeType = $$.hasType('gauge'),\n singleArcWidth = $$.gaugeArcWidth / $$.filterTargetsToShow($$.data.targets).length,\n expandWidth = Math.min($$.radiusExpanded * rate - $$.radius, singleArcWidth * 0.8 - (1 - rate) * 100),\n arc = $$.d3.svg.arc().outerRadius(function (d) {\n return hasGaugeType ? $$.radius - singleArcWidth * d.index + expandWidth : $$.radiusExpanded * rate;\n }).innerRadius(function (d) {\n return hasGaugeType ? $$.radius - singleArcWidth * (d.index + 1) : $$.innerRadius;\n });\n return function (d) {\n var updated = $$.updateAngle(d);\n return updated ? arc(updated) : \"M 0 0\";\n };\n };\n\n c3_chart_internal_fn.getArc = function (d, withoutUpdate, force) {\n return force || this.isArcType(d.data) ? this.svgArc(d, withoutUpdate) : \"M 0 0\";\n };\n\n c3_chart_internal_fn.transformForArcLabel = function (d) {\n var $$ = this,\n config = $$.config,\n updated = $$.updateAngle(d),\n c,\n x,\n y,\n h,\n ratio,\n translate = \"\",\n hasGauge = $$.hasType('gauge');\n if (updated && !hasGauge) {\n c = this.svgArc.centroid(updated);\n x = isNaN(c[0]) ? 0 : c[0];\n y = isNaN(c[1]) ? 0 : c[1];\n h = Math.sqrt(x * x + y * y);\n if ($$.hasType('donut') && config.donut_label_ratio) {\n ratio = isFunction(config.donut_label_ratio) ? config.donut_label_ratio(d, $$.radius, h) : config.donut_label_ratio;\n } else if ($$.hasType('pie') && config.pie_label_ratio) {\n ratio = isFunction(config.pie_label_ratio) ? config.pie_label_ratio(d, $$.radius, h) : config.pie_label_ratio;\n } else {\n ratio = $$.radius && h ? (36 / $$.radius > 0.375 ? 1.175 - 36 / $$.radius : 0.8) * $$.radius / h : 0;\n }\n translate = \"translate(\" + x * ratio + ',' + y * ratio + \")\";\n } else if (updated && hasGauge && $$.filterTargetsToShow($$.data.targets).length > 1) {\n var y1 = Math.sin(updated.endAngle - Math.PI / 2);\n x = Math.cos(updated.endAngle - Math.PI / 2) * ($$.radiusExpanded + 25);\n y = y1 * ($$.radiusExpanded + 15 - Math.abs(y1 * 10)) + 3;\n translate = \"translate(\" + x + ',' + y + \")\";\n }\n return translate;\n };\n\n c3_chart_internal_fn.getArcRatio = function (d) {\n var $$ = this,\n config = $$.config,\n whole = Math.PI * ($$.hasType('gauge') && !config.gauge_fullCircle ? 1 : 2);\n return d ? (d.endAngle - d.startAngle) / whole : null;\n };\n\n c3_chart_internal_fn.convertToArcData = function (d) {\n return this.addName({\n id: d.data.id,\n value: d.value,\n ratio: this.getArcRatio(d),\n index: d.index\n });\n };\n\n c3_chart_internal_fn.textForArcLabel = function (d) {\n var $$ = this,\n updated,\n value,\n ratio,\n id,\n format;\n if (!$$.shouldShowArcLabel()) {\n return \"\";\n }\n updated = $$.updateAngle(d);\n value = updated ? updated.value : null;\n ratio = $$.getArcRatio(updated);\n id = d.data.id;\n if (!$$.hasType('gauge') && !$$.meetsArcLabelThreshold(ratio)) {\n return \"\";\n }\n format = $$.getArcLabelFormat();\n return format ? format(value, ratio, id) : $$.defaultArcValueFormat(value, ratio);\n };\n\n c3_chart_internal_fn.textForGaugeMinMax = function (value, isMax) {\n var $$ = this,\n format = $$.getGaugeLabelExtents();\n\n return format ? format(value, isMax) : value;\n };\n\n c3_chart_internal_fn.expandArc = function (targetIds) {\n var $$ = this,\n interval;\n\n // MEMO: avoid to cancel transition\n if ($$.transiting) {\n interval = window.setInterval(function () {\n if (!$$.transiting) {\n window.clearInterval(interval);\n if ($$.legend.selectAll('.c3-legend-item-focused').size() > 0) {\n $$.expandArc(targetIds);\n }\n }\n }, 10);\n return;\n }\n\n targetIds = $$.mapToTargetIds(targetIds);\n\n $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).each(function (d) {\n if (!$$.shouldExpand(d.data.id)) {\n return;\n }\n $$.d3.select(this).selectAll('path').transition().duration($$.expandDuration(d.data.id)).attr(\"d\", $$.svgArcExpanded).transition().duration($$.expandDuration(d.data.id) * 2).attr(\"d\", $$.svgArcExpandedSub).each(function (d) {\n if ($$.isDonutType(d.data)) ;\n });\n });\n };\n\n c3_chart_internal_fn.unexpandArc = function (targetIds) {\n var $$ = this;\n\n if ($$.transiting) {\n return;\n }\n\n targetIds = $$.mapToTargetIds(targetIds);\n\n $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).selectAll('path').transition().duration(function (d) {\n return $$.expandDuration(d.data.id);\n }).attr(\"d\", $$.svgArc);\n $$.svg.selectAll('.' + CLASS.arc);\n };\n\n c3_chart_internal_fn.expandDuration = function (id) {\n var $$ = this,\n config = $$.config;\n\n if ($$.isDonutType(id)) {\n return config.donut_expand_duration;\n } else if ($$.isGaugeType(id)) {\n return config.gauge_expand_duration;\n } else if ($$.isPieType(id)) {\n return config.pie_expand_duration;\n } else {\n return 50;\n }\n };\n\n c3_chart_internal_fn.shouldExpand = function (id) {\n var $$ = this,\n config = $$.config;\n return $$.isDonutType(id) && config.donut_expand || $$.isGaugeType(id) && config.gauge_expand || $$.isPieType(id) && config.pie_expand;\n };\n\n c3_chart_internal_fn.shouldShowArcLabel = function () {\n var $$ = this,\n config = $$.config,\n shouldShow = true;\n if ($$.hasType('donut')) {\n shouldShow = config.donut_label_show;\n } else if ($$.hasType('pie')) {\n shouldShow = config.pie_label_show;\n }\n // when gauge, always true\n return shouldShow;\n };\n\n c3_chart_internal_fn.meetsArcLabelThreshold = function (ratio) {\n var $$ = this,\n config = $$.config,\n threshold = $$.hasType('donut') ? config.donut_label_threshold : config.pie_label_threshold;\n return ratio >= threshold;\n };\n\n c3_chart_internal_fn.getArcLabelFormat = function () {\n var $$ = this,\n config = $$.config,\n format = config.pie_label_format;\n if ($$.hasType('gauge')) {\n format = config.gauge_label_format;\n } else if ($$.hasType('donut')) {\n format = config.donut_label_format;\n }\n return format;\n };\n\n c3_chart_internal_fn.getGaugeLabelExtents = function () {\n var $$ = this,\n config = $$.config;\n return config.gauge_label_extents;\n };\n\n c3_chart_internal_fn.getArcTitle = function () {\n var $$ = this;\n return $$.hasType('donut') ? $$.config.donut_title : \"\";\n };\n\n c3_chart_internal_fn.updateTargetsForArc = function (targets) {\n var $$ = this,\n main = $$.main,\n mainPieUpdate,\n mainPieEnter,\n classChartArc = $$.classChartArc.bind($$),\n classArcs = $$.classArcs.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainPieUpdate = main.select('.' + CLASS.chartArcs).selectAll('.' + CLASS.chartArc).data($$.pie(targets)).attr(\"class\", function (d) {\n return classChartArc(d) + classFocus(d.data);\n });\n mainPieEnter = mainPieUpdate.enter().append(\"g\").attr(\"class\", classChartArc);\n mainPieEnter.append('g').attr('class', classArcs);\n mainPieEnter.append(\"text\").attr(\"dy\", $$.hasType('gauge') ? \"-.1em\" : \".35em\").style(\"opacity\", 0).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n // MEMO: can not keep same color..., but not bad to update color in redraw\n //mainPieUpdate.exit().remove();\n };\n\n c3_chart_internal_fn.initArc = function () {\n var $$ = this;\n $$.arcs = $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartArcs).attr(\"transform\", $$.getTranslate('arc'));\n $$.arcs.append('text').attr('class', CLASS.chartArcsTitle).style(\"text-anchor\", \"middle\").text($$.getArcTitle());\n };\n\n c3_chart_internal_fn.redrawArc = function (duration, durationForExit, withTransform) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n main = $$.main,\n mainArc,\n backgroundArc,\n mainArcLabelLine,\n hasGaugeType = $$.hasType('gauge');\n mainArc = main.selectAll('.' + CLASS.arcs).selectAll('.' + CLASS.arc).data($$.arcData.bind($$));\n mainArc.enter().append('path').attr(\"class\", $$.classArc.bind($$)).style(\"fill\", function (d) {\n return $$.color(d.data);\n }).style(\"cursor\", function (d) {\n return config.interaction_enabled && config.data_selection_isselectable(d) ? \"pointer\" : null;\n }).each(function (d) {\n if ($$.isGaugeType(d.data)) {\n d.startAngle = d.endAngle = config.gauge_startingAngle;\n }\n this._current = d;\n });\n if (hasGaugeType) {\n mainArcLabelLine = main.selectAll('.' + CLASS.arcs).selectAll('.' + CLASS.arcLabelLine).data($$.arcData.bind($$));\n mainArcLabelLine.enter().append('rect').attr(\"class\", function (d) {\n return CLASS.arcLabelLine + ' ' + CLASS.target + ' ' + CLASS.target + '-' + d.data.id;\n });\n if ($$.filterTargetsToShow($$.data.targets).length === 1) {\n mainArcLabelLine.style(\"display\", \"none\");\n } else {\n mainArcLabelLine.style(\"fill\", function (d) {\n return config.color_pattern.length > 0 ? $$.levelColor(d.data.values[0].value) : $$.color(d.data);\n }).style(\"display\", config.gauge_labelLine_show ? \"\" : \"none\").each(function (d) {\n var lineLength = 0,\n lineThickness = 2,\n x = 0,\n y = 0,\n transform = \"\";\n if ($$.hiddenTargetIds.indexOf(d.data.id) < 0) {\n var updated = $$.updateAngle(d),\n innerLineLength = $$.gaugeArcWidth / $$.filterTargetsToShow($$.data.targets).length * (updated.index + 1),\n lineAngle = updated.endAngle - Math.PI / 2,\n arcInnerRadius = $$.radius - innerLineLength,\n linePositioningAngle = lineAngle - (arcInnerRadius === 0 ? 0 : 1 / arcInnerRadius);\n lineLength = $$.radiusExpanded - $$.radius + innerLineLength;\n x = Math.cos(linePositioningAngle) * arcInnerRadius;\n y = Math.sin(linePositioningAngle) * arcInnerRadius;\n transform = \"rotate(\" + lineAngle * 180 / Math.PI + \", \" + x + \", \" + y + \")\";\n }\n d3.select(this).attr({ x: x, y: y, width: lineLength, height: lineThickness, transform: transform }).style(\"stroke-dasharray\", \"0, \" + (lineLength + lineThickness) + \", 0\");\n });\n }\n }\n mainArc.attr(\"transform\", function (d) {\n return !$$.isGaugeType(d.data) && withTransform ? \"scale(0)\" : \"\";\n }).on('mouseover', config.interaction_enabled ? function (d) {\n var updated, arcData;\n if ($$.transiting) {\n // skip while transiting\n return;\n }\n updated = $$.updateAngle(d);\n if (updated) {\n arcData = $$.convertToArcData(updated);\n // transitions\n $$.expandArc(updated.data.id);\n $$.api.focus(updated.data.id);\n $$.toggleFocusLegend(updated.data.id, true);\n $$.config.data_onmouseover(arcData, this);\n }\n } : null).on('mousemove', config.interaction_enabled ? function (d) {\n var updated = $$.updateAngle(d),\n arcData,\n selectedData;\n if (updated) {\n arcData = $$.convertToArcData(updated), selectedData = [arcData];\n $$.showTooltip(selectedData, this);\n }\n } : null).on('mouseout', config.interaction_enabled ? function (d) {\n var updated, arcData;\n if ($$.transiting) {\n // skip while transiting\n return;\n }\n updated = $$.updateAngle(d);\n if (updated) {\n arcData = $$.convertToArcData(updated);\n // transitions\n $$.unexpandArc(updated.data.id);\n $$.api.revert();\n $$.revertLegend();\n $$.hideTooltip();\n $$.config.data_onmouseout(arcData, this);\n }\n } : null).on('click', config.interaction_enabled ? function (d, i) {\n var updated = $$.updateAngle(d),\n arcData;\n if (updated) {\n arcData = $$.convertToArcData(updated);\n if ($$.toggleShape) {\n $$.toggleShape(this, arcData, i);\n }\n $$.config.data_onclick.call($$.api, arcData, this);\n }\n } : null).each(function () {\n $$.transiting = true;\n }).transition().duration(duration).attrTween(\"d\", function (d) {\n var updated = $$.updateAngle(d),\n interpolate;\n if (!updated) {\n return function () {\n return \"M 0 0\";\n };\n }\n // if (this._current === d) {\n // this._current = {\n // startAngle: Math.PI*2,\n // endAngle: Math.PI*2,\n // };\n // }\n if (isNaN(this._current.startAngle)) {\n this._current.startAngle = 0;\n }\n if (isNaN(this._current.endAngle)) {\n this._current.endAngle = this._current.startAngle;\n }\n interpolate = d3.interpolate(this._current, updated);\n this._current = interpolate(0);\n return function (t) {\n var interpolated = interpolate(t);\n interpolated.data = d.data; // data.id will be updated by interporator\n return $$.getArc(interpolated, true);\n };\n }).attr(\"transform\", withTransform ? \"scale(1)\" : \"\").style(\"fill\", function (d) {\n return $$.levelColor ? $$.levelColor(d.data.values[0].value) : $$.color(d.data.id);\n }) // Where gauge reading color would receive customization.\n .call($$.endall, function () {\n $$.transiting = false;\n });\n mainArc.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n main.selectAll('.' + CLASS.chartArc).select('text').style(\"opacity\", 0).attr('class', function (d) {\n return $$.isGaugeType(d.data) ? CLASS.gaugeValue : '';\n }).text($$.textForArcLabel.bind($$)).attr(\"transform\", $$.transformForArcLabel.bind($$)).style('font-size', function (d) {\n return $$.isGaugeType(d.data) && $$.filterTargetsToShow($$.data.targets).length === 1 ? Math.round($$.radius / 5) + 'px' : '';\n }).transition().duration(duration).style(\"opacity\", function (d) {\n return $$.isTargetToShow(d.data.id) && $$.isArcType(d.data) ? 1 : 0;\n });\n main.select('.' + CLASS.chartArcsTitle).style(\"opacity\", $$.hasType('donut') || hasGaugeType ? 1 : 0);\n\n if (hasGaugeType) {\n var index = 0;\n backgroundArc = $$.arcs.select('g.' + CLASS.chartArcsBackground).selectAll('path.' + CLASS.chartArcsBackground).data($$.data.targets);\n backgroundArc.enter().append(\"path\");\n backgroundArc.attr(\"class\", function (d, i) {\n return CLASS.chartArcsBackground + ' ' + CLASS.chartArcsBackground + '-' + i;\n }).attr(\"d\", function (d1) {\n if ($$.hiddenTargetIds.indexOf(d1.id) >= 0) {\n return \"M 0 0\";\n }\n\n var d = {\n data: [{ value: config.gauge_max }],\n startAngle: config.gauge_startingAngle,\n endAngle: -1 * config.gauge_startingAngle * (config.gauge_fullCircle ? Math.PI : 1),\n index: index++\n };\n return $$.getArc(d, true, true);\n });\n backgroundArc.exit().remove();\n\n $$.arcs.select('.' + CLASS.chartArcsGaugeUnit).attr(\"dy\", \".75em\").text(config.gauge_label_show ? config.gauge_units : '');\n $$.arcs.select('.' + CLASS.chartArcsGaugeMin).attr(\"dx\", -1 * ($$.innerRadius + ($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2)) + \"px\").attr(\"dy\", \"1.2em\").text(config.gauge_label_show ? $$.textForGaugeMinMax(config.gauge_min, false) : '');\n $$.arcs.select('.' + CLASS.chartArcsGaugeMax).attr(\"dx\", $$.innerRadius + ($$.radius - $$.innerRadius) / (config.gauge_fullCircle ? 1 : 2) + \"px\").attr(\"dy\", \"1.2em\").text(config.gauge_label_show ? $$.textForGaugeMinMax(config.gauge_max, true) : '');\n }\n };\n c3_chart_internal_fn.initGauge = function () {\n var arcs = this.arcs;\n if (this.hasType('gauge')) {\n arcs.append('g').attr(\"class\", CLASS.chartArcsBackground);\n arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeUnit).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeMin).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n arcs.append(\"text\").attr(\"class\", CLASS.chartArcsGaugeMax).style(\"text-anchor\", \"middle\").style(\"pointer-events\", \"none\");\n }\n };\n c3_chart_internal_fn.getGaugeLabelHeight = function () {\n return this.config.gauge_label_show ? 20 : 0;\n };\n\n c3_chart_internal_fn.hasCaches = function (ids) {\n for (var i = 0; i < ids.length; i++) {\n if (!(ids[i] in this.cache)) {\n return false;\n }\n }\n return true;\n };\n c3_chart_internal_fn.addCache = function (id, target) {\n this.cache[id] = this.cloneTarget(target);\n };\n c3_chart_internal_fn.getCaches = function (ids) {\n var targets = [],\n i;\n for (i = 0; i < ids.length; i++) {\n if (ids[i] in this.cache) {\n targets.push(this.cloneTarget(this.cache[ids[i]]));\n }\n }\n return targets;\n };\n\n c3_chart_internal_fn.categoryName = function (i) {\n var config = this.config;\n return i < config.axis_x_categories.length ? config.axis_x_categories[i] : i;\n };\n\n c3_chart_internal_fn.generateClass = function (prefix, targetId) {\n return \" \" + prefix + \" \" + prefix + this.getTargetSelectorSuffix(targetId);\n };\n c3_chart_internal_fn.classText = function (d) {\n return this.generateClass(CLASS.text, d.index);\n };\n c3_chart_internal_fn.classTexts = function (d) {\n return this.generateClass(CLASS.texts, d.id);\n };\n c3_chart_internal_fn.classShape = function (d) {\n return this.generateClass(CLASS.shape, d.index);\n };\n c3_chart_internal_fn.classShapes = function (d) {\n return this.generateClass(CLASS.shapes, d.id);\n };\n c3_chart_internal_fn.classLine = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.line, d.id);\n };\n c3_chart_internal_fn.classLines = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.lines, d.id);\n };\n c3_chart_internal_fn.classCircle = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.circle, d.index);\n };\n c3_chart_internal_fn.classCircles = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.circles, d.id);\n };\n c3_chart_internal_fn.classBar = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.bar, d.index);\n };\n c3_chart_internal_fn.classBars = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.bars, d.id);\n };\n c3_chart_internal_fn.classArc = function (d) {\n return this.classShape(d.data) + this.generateClass(CLASS.arc, d.data.id);\n };\n c3_chart_internal_fn.classArcs = function (d) {\n return this.classShapes(d.data) + this.generateClass(CLASS.arcs, d.data.id);\n };\n c3_chart_internal_fn.classArea = function (d) {\n return this.classShape(d) + this.generateClass(CLASS.area, d.id);\n };\n c3_chart_internal_fn.classAreas = function (d) {\n return this.classShapes(d) + this.generateClass(CLASS.areas, d.id);\n };\n c3_chart_internal_fn.classRegion = function (d, i) {\n return this.generateClass(CLASS.region, i) + ' ' + ('class' in d ? d['class'] : '');\n };\n c3_chart_internal_fn.classEvent = function (d) {\n return this.generateClass(CLASS.eventRect, d.index);\n };\n c3_chart_internal_fn.classTarget = function (id) {\n var $$ = this;\n var additionalClassSuffix = $$.config.data_classes[id],\n additionalClass = '';\n if (additionalClassSuffix) {\n additionalClass = ' ' + CLASS.target + '-' + additionalClassSuffix;\n }\n return $$.generateClass(CLASS.target, id) + additionalClass;\n };\n c3_chart_internal_fn.classFocus = function (d) {\n return this.classFocused(d) + this.classDefocused(d);\n };\n c3_chart_internal_fn.classFocused = function (d) {\n return ' ' + (this.focusedTargetIds.indexOf(d.id) >= 0 ? CLASS.focused : '');\n };\n c3_chart_internal_fn.classDefocused = function (d) {\n return ' ' + (this.defocusedTargetIds.indexOf(d.id) >= 0 ? CLASS.defocused : '');\n };\n c3_chart_internal_fn.classChartText = function (d) {\n return CLASS.chartText + this.classTarget(d.id);\n };\n c3_chart_internal_fn.classChartLine = function (d) {\n return CLASS.chartLine + this.classTarget(d.id);\n };\n c3_chart_internal_fn.classChartBar = function (d) {\n return CLASS.chartBar + this.classTarget(d.id);\n };\n c3_chart_internal_fn.classChartArc = function (d) {\n return CLASS.chartArc + this.classTarget(d.data.id);\n };\n c3_chart_internal_fn.getTargetSelectorSuffix = function (targetId) {\n return targetId || targetId === 0 ? ('-' + targetId).replace(/[\\s?!@#$%^&*()_=+,.<>'\":;\\[\\]\\/|~`{}\\\\]/g, '-') : '';\n };\n c3_chart_internal_fn.selectorTarget = function (id, prefix) {\n return (prefix || '') + '.' + CLASS.target + this.getTargetSelectorSuffix(id);\n };\n c3_chart_internal_fn.selectorTargets = function (ids, prefix) {\n var $$ = this;\n ids = ids || [];\n return ids.length ? ids.map(function (id) {\n return $$.selectorTarget(id, prefix);\n }) : null;\n };\n c3_chart_internal_fn.selectorLegend = function (id) {\n return '.' + CLASS.legendItem + this.getTargetSelectorSuffix(id);\n };\n c3_chart_internal_fn.selectorLegends = function (ids) {\n var $$ = this;\n return ids && ids.length ? ids.map(function (id) {\n return $$.selectorLegend(id);\n }) : null;\n };\n\n c3_chart_internal_fn.getClipPath = function (id) {\n var isIE9 = window.navigator.appVersion.toLowerCase().indexOf(\"msie 9.\") >= 0;\n return \"url(\" + (isIE9 ? \"\" : document.URL.split('#')[0]) + \"#\" + id + \")\";\n };\n c3_chart_internal_fn.appendClip = function (parent, id) {\n return parent.append(\"clipPath\").attr(\"id\", id).append(\"rect\");\n };\n c3_chart_internal_fn.getAxisClipX = function (forHorizontal) {\n // axis line width + padding for left\n var left = Math.max(30, this.margin.left);\n return forHorizontal ? -(1 + left) : -(left - 1);\n };\n c3_chart_internal_fn.getAxisClipY = function (forHorizontal) {\n return forHorizontal ? -20 : -this.margin.top;\n };\n c3_chart_internal_fn.getXAxisClipX = function () {\n var $$ = this;\n return $$.getAxisClipX(!$$.config.axis_rotated);\n };\n c3_chart_internal_fn.getXAxisClipY = function () {\n var $$ = this;\n return $$.getAxisClipY(!$$.config.axis_rotated);\n };\n c3_chart_internal_fn.getYAxisClipX = function () {\n var $$ = this;\n return $$.config.axis_y_inner ? -1 : $$.getAxisClipX($$.config.axis_rotated);\n };\n c3_chart_internal_fn.getYAxisClipY = function () {\n var $$ = this;\n return $$.getAxisClipY($$.config.axis_rotated);\n };\n c3_chart_internal_fn.getAxisClipWidth = function (forHorizontal) {\n var $$ = this,\n left = Math.max(30, $$.margin.left),\n right = Math.max(30, $$.margin.right);\n // width + axis line width + padding for left/right\n return forHorizontal ? $$.width + 2 + left + right : $$.margin.left + 20;\n };\n c3_chart_internal_fn.getAxisClipHeight = function (forHorizontal) {\n // less than 20 is not enough to show the axis label 'outer' without legend\n return (forHorizontal ? this.margin.bottom : this.margin.top + this.height) + 20;\n };\n c3_chart_internal_fn.getXAxisClipWidth = function () {\n var $$ = this;\n return $$.getAxisClipWidth(!$$.config.axis_rotated);\n };\n c3_chart_internal_fn.getXAxisClipHeight = function () {\n var $$ = this;\n return $$.getAxisClipHeight(!$$.config.axis_rotated);\n };\n c3_chart_internal_fn.getYAxisClipWidth = function () {\n var $$ = this;\n return $$.getAxisClipWidth($$.config.axis_rotated) + ($$.config.axis_y_inner ? 20 : 0);\n };\n c3_chart_internal_fn.getYAxisClipHeight = function () {\n var $$ = this;\n return $$.getAxisClipHeight($$.config.axis_rotated);\n };\n\n c3_chart_internal_fn.generateColor = function () {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3,\n colors = config.data_colors,\n pattern = notEmpty(config.color_pattern) ? config.color_pattern : d3.scale.category10().range(),\n callback = config.data_color,\n ids = [];\n\n return function (d) {\n var id = d.id || d.data && d.data.id || d,\n color;\n\n // if callback function is provided\n if (colors[id] instanceof Function) {\n color = colors[id](d);\n }\n // if specified, choose that color\n else if (colors[id]) {\n color = colors[id];\n }\n // if not specified, choose from pattern\n else {\n if (ids.indexOf(id) < 0) {\n ids.push(id);\n }\n color = pattern[ids.indexOf(id) % pattern.length];\n colors[id] = color;\n }\n return callback instanceof Function ? callback(color, d) : color;\n };\n };\n c3_chart_internal_fn.generateLevelColor = function () {\n var $$ = this,\n config = $$.config,\n colors = config.color_pattern,\n threshold = config.color_threshold,\n asValue = threshold.unit === 'value',\n values = threshold.values && threshold.values.length ? threshold.values : [],\n max = threshold.max || 100;\n return notEmpty(config.color_threshold) ? function (value) {\n var i,\n v,\n color = colors[colors.length - 1];\n for (i = 0; i < values.length; i++) {\n v = asValue ? value : value * 100 / max;\n if (v < values[i]) {\n color = colors[i];\n break;\n }\n }\n return color;\n } : null;\n };\n\n c3_chart_internal_fn.getDefaultConfig = function () {\n var config = {\n bindto: '#chart',\n svg_classname: undefined,\n size_width: undefined,\n size_height: undefined,\n padding_left: undefined,\n padding_right: undefined,\n padding_top: undefined,\n padding_bottom: undefined,\n resize_auto: true,\n zoom_enabled: false,\n zoom_extent: undefined,\n zoom_privileged: false,\n zoom_rescale: false,\n zoom_onzoom: function zoom_onzoom() {},\n zoom_onzoomstart: function zoom_onzoomstart() {},\n zoom_onzoomend: function zoom_onzoomend() {},\n zoom_x_min: undefined,\n zoom_x_max: undefined,\n interaction_brighten: true,\n interaction_enabled: true,\n onmouseover: function onmouseover() {},\n onmouseout: function onmouseout() {},\n onresize: function onresize() {},\n onresized: function onresized() {},\n oninit: function oninit() {},\n onrendered: function onrendered() {},\n transition_duration: 350,\n data_x: undefined,\n data_xs: {},\n data_xFormat: '%Y-%m-%d',\n data_xLocaltime: true,\n data_xSort: true,\n data_idConverter: function data_idConverter(id) {\n return id;\n },\n data_names: {},\n data_classes: {},\n data_groups: [],\n data_axes: {},\n data_type: undefined,\n data_types: {},\n data_labels: {},\n data_order: 'desc',\n data_regions: {},\n data_color: undefined,\n data_colors: {},\n data_hide: false,\n data_filter: undefined,\n data_selection_enabled: false,\n data_selection_grouped: false,\n data_selection_isselectable: function data_selection_isselectable() {\n return true;\n },\n data_selection_multiple: true,\n data_selection_draggable: false,\n data_onclick: function data_onclick() {},\n data_onmouseover: function data_onmouseover() {},\n data_onmouseout: function data_onmouseout() {},\n data_onselected: function data_onselected() {},\n data_onunselected: function data_onunselected() {},\n data_url: undefined,\n data_headers: undefined,\n data_json: undefined,\n data_rows: undefined,\n data_columns: undefined,\n data_mimeType: undefined,\n data_keys: undefined,\n // configuration for no plot-able data supplied.\n data_empty_label_text: \"\",\n // subchart\n subchart_show: false,\n subchart_size_height: 60,\n subchart_axis_x_show: true,\n subchart_onbrush: function subchart_onbrush() {},\n // color\n color_pattern: [],\n color_threshold: {},\n // legend\n legend_show: true,\n legend_hide: false,\n legend_position: 'bottom',\n legend_inset_anchor: 'top-left',\n legend_inset_x: 10,\n legend_inset_y: 0,\n legend_inset_step: undefined,\n legend_item_onclick: undefined,\n legend_item_onmouseover: undefined,\n legend_item_onmouseout: undefined,\n legend_equally: false,\n legend_padding: 0,\n legend_item_tile_width: 10,\n legend_item_tile_height: 10,\n // axis\n axis_rotated: false,\n axis_x_show: true,\n axis_x_type: 'indexed',\n axis_x_localtime: true,\n axis_x_categories: [],\n axis_x_tick_centered: false,\n axis_x_tick_format: undefined,\n axis_x_tick_culling: {},\n axis_x_tick_culling_max: 10,\n axis_x_tick_count: undefined,\n axis_x_tick_fit: true,\n axis_x_tick_values: null,\n axis_x_tick_rotate: 0,\n axis_x_tick_outer: true,\n axis_x_tick_multiline: true,\n axis_x_tick_multilineMax: 0,\n axis_x_tick_width: null,\n axis_x_max: undefined,\n axis_x_min: undefined,\n axis_x_padding: {},\n axis_x_height: undefined,\n axis_x_extent: undefined,\n axis_x_label: {},\n axis_x_inner: undefined,\n axis_y_show: true,\n axis_y_type: undefined,\n axis_y_max: undefined,\n axis_y_min: undefined,\n axis_y_inverted: false,\n axis_y_center: undefined,\n axis_y_inner: undefined,\n axis_y_label: {},\n axis_y_tick_format: undefined,\n axis_y_tick_outer: true,\n axis_y_tick_values: null,\n axis_y_tick_rotate: 0,\n axis_y_tick_count: undefined,\n axis_y_tick_time_value: undefined,\n axis_y_tick_time_interval: undefined,\n axis_y_padding: {},\n axis_y_default: undefined,\n axis_y2_show: false,\n axis_y2_max: undefined,\n axis_y2_min: undefined,\n axis_y2_inverted: false,\n axis_y2_center: undefined,\n axis_y2_inner: undefined,\n axis_y2_label: {},\n axis_y2_tick_format: undefined,\n axis_y2_tick_outer: true,\n axis_y2_tick_values: null,\n axis_y2_tick_count: undefined,\n axis_y2_padding: {},\n axis_y2_default: undefined,\n // grid\n grid_x_show: false,\n grid_x_type: 'tick',\n grid_x_lines: [],\n grid_y_show: false,\n // not used\n // grid_y_type: 'tick',\n grid_y_lines: [],\n grid_y_ticks: 10,\n grid_focus_show: true,\n grid_lines_front: true,\n // point - point of each data\n point_show: true,\n point_r: 2.5,\n point_sensitivity: 10,\n point_focus_expand_enabled: true,\n point_focus_expand_r: undefined,\n point_select_r: undefined,\n // line\n line_connectNull: false,\n line_step_type: 'step',\n // bar\n bar_width: undefined,\n bar_width_ratio: 0.6,\n bar_width_max: undefined,\n bar_zerobased: true,\n bar_space: 0,\n // area\n area_zerobased: true,\n area_above: false,\n // pie\n pie_label_show: true,\n pie_label_format: undefined,\n pie_label_threshold: 0.05,\n pie_label_ratio: undefined,\n pie_expand: {},\n pie_expand_duration: 50,\n // gauge\n gauge_fullCircle: false,\n gauge_label_show: true,\n gauge_labelLine_show: true,\n gauge_label_format: undefined,\n gauge_min: 0,\n gauge_max: 100,\n gauge_startingAngle: -1 * Math.PI / 2,\n gauge_label_extents: undefined,\n gauge_units: undefined,\n gauge_width: undefined,\n gauge_arcs_minWidth: 5,\n gauge_expand: {},\n gauge_expand_duration: 50,\n // donut\n donut_label_show: true,\n donut_label_format: undefined,\n donut_label_threshold: 0.05,\n donut_label_ratio: undefined,\n donut_width: undefined,\n donut_title: \"\",\n donut_expand: {},\n donut_expand_duration: 50,\n // spline\n spline_interpolation_type: 'cardinal',\n // region - region to change style\n regions: [],\n // tooltip - show when mouseover on each data\n tooltip_show: true,\n tooltip_grouped: true,\n tooltip_order: undefined,\n tooltip_format_title: undefined,\n tooltip_format_name: undefined,\n tooltip_format_value: undefined,\n tooltip_position: undefined,\n tooltip_contents: function tooltip_contents(d, defaultTitleFormat, defaultValueFormat, color) {\n return this.getTooltipContent ? this.getTooltipContent(d, defaultTitleFormat, defaultValueFormat, color) : '';\n },\n tooltip_init_show: false,\n tooltip_init_x: 0,\n tooltip_init_position: { top: '0px', left: '50px' },\n tooltip_onshow: function tooltip_onshow() {},\n tooltip_onhide: function tooltip_onhide() {},\n // title\n title_text: undefined,\n title_padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n title_position: 'top-center'\n };\n\n Object.keys(this.additionalConfig).forEach(function (key) {\n config[key] = this.additionalConfig[key];\n }, this);\n\n return config;\n };\n c3_chart_internal_fn.additionalConfig = {};\n\n c3_chart_internal_fn.loadConfig = function (config) {\n var this_config = this.config,\n target,\n keys,\n read;\n function find() {\n var key = keys.shift();\n // console.log(\"key =>\", key, \", target =>\", target);\n if (key && target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && key in target) {\n target = target[key];\n return find();\n } else if (!key) {\n return target;\n } else {\n return undefined;\n }\n }\n Object.keys(this_config).forEach(function (key) {\n target = config;\n keys = key.split('_');\n read = find();\n // console.log(\"CONFIG : \", key, read);\n if (isDefined(read)) {\n this_config[key] = read;\n }\n });\n };\n\n c3_chart_internal_fn.convertUrlToData = function (url, mimeType, headers, keys, done) {\n var $$ = this,\n type = mimeType ? mimeType : 'csv';\n var req = $$.d3.xhr(url);\n if (headers) {\n Object.keys(headers).forEach(function (header) {\n req.header(header, headers[header]);\n });\n }\n req.get(function (error, data) {\n var d;\n var dataResponse = data.response || data.responseText; // Fixes IE9 XHR issue; see #1345\n if (!data) {\n throw new Error(error.responseURL + ' ' + error.status + ' (' + error.statusText + ')');\n }\n if (type === 'json') {\n d = $$.convertJsonToData(JSON.parse(dataResponse), keys);\n } else if (type === 'tsv') {\n d = $$.convertTsvToData(dataResponse);\n } else {\n d = $$.convertCsvToData(dataResponse);\n }\n done.call($$, d);\n });\n };\n c3_chart_internal_fn.convertXsvToData = function (xsv, parser) {\n var rows = parser.parseRows(xsv),\n d;\n if (rows.length === 1) {\n d = [{}];\n rows[0].forEach(function (id) {\n d[0][id] = null;\n });\n } else {\n d = parser.parse(xsv);\n }\n return d;\n };\n c3_chart_internal_fn.convertCsvToData = function (csv) {\n return this.convertXsvToData(csv, this.d3.csv);\n };\n c3_chart_internal_fn.convertTsvToData = function (tsv) {\n return this.convertXsvToData(tsv, this.d3.tsv);\n };\n c3_chart_internal_fn.convertJsonToData = function (json, keys) {\n var $$ = this,\n new_rows = [],\n targetKeys,\n data;\n if (keys) {\n // when keys specified, json would be an array that includes objects\n if (keys.x) {\n targetKeys = keys.value.concat(keys.x);\n $$.config.data_x = keys.x;\n } else {\n targetKeys = keys.value;\n }\n new_rows.push(targetKeys);\n json.forEach(function (o) {\n var new_row = [];\n targetKeys.forEach(function (key) {\n // convert undefined to null because undefined data will be removed in convertDataToTargets()\n var v = $$.findValueInJson(o, key);\n if (isUndefined(v)) {\n v = null;\n }\n new_row.push(v);\n });\n new_rows.push(new_row);\n });\n data = $$.convertRowsToData(new_rows);\n } else {\n Object.keys(json).forEach(function (key) {\n new_rows.push([key].concat(json[key]));\n });\n data = $$.convertColumnsToData(new_rows);\n }\n return data;\n };\n c3_chart_internal_fn.findValueInJson = function (object, path) {\n path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties (replace [] with .)\n path = path.replace(/^\\./, ''); // strip a leading dot\n var pathArray = path.split('.');\n for (var i = 0; i < pathArray.length; ++i) {\n var k = pathArray[i];\n if (k in object) {\n object = object[k];\n } else {\n return;\n }\n }\n return object;\n };\n\n /**\n * Converts the rows to normalized data.\n * @param {any[][]} rows The row data\n * @return {Object[]}\n */\n c3_chart_internal_fn.convertRowsToData = function (rows) {\n var newRows = [];\n var keys = rows[0];\n\n for (var i = 1; i < rows.length; i++) {\n var newRow = {};\n for (var j = 0; j < rows[i].length; j++) {\n if (isUndefined(rows[i][j])) {\n throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n }\n newRow[keys[j]] = rows[i][j];\n }\n newRows.push(newRow);\n }\n return newRows;\n };\n\n /**\n * Converts the columns to normalized data.\n * @param {any[][]} columns The column data\n * @return {Object[]}\n */\n c3_chart_internal_fn.convertColumnsToData = function (columns) {\n var newRows = [];\n\n for (var i = 0; i < columns.length; i++) {\n var key = columns[i][0];\n for (var j = 1; j < columns[i].length; j++) {\n if (isUndefined(newRows[j - 1])) {\n newRows[j - 1] = {};\n }\n if (isUndefined(columns[i][j])) {\n throw new Error(\"Source data is missing a component at (\" + i + \",\" + j + \")!\");\n }\n newRows[j - 1][key] = columns[i][j];\n }\n }\n\n return newRows;\n };\n\n c3_chart_internal_fn.convertDataToTargets = function (data, appendXs) {\n var $$ = this,\n config = $$.config,\n ids = $$.d3.keys(data[0]).filter($$.isNotX, $$),\n xs = $$.d3.keys(data[0]).filter($$.isX, $$),\n targets;\n\n // save x for update data by load when custom x and c3.x API\n ids.forEach(function (id) {\n var xKey = $$.getXKey(id);\n\n if ($$.isCustomX() || $$.isTimeSeries()) {\n // if included in input data\n if (xs.indexOf(xKey) >= 0) {\n $$.data.xs[id] = (appendXs && $$.data.xs[id] ? $$.data.xs[id] : []).concat(data.map(function (d) {\n return d[xKey];\n }).filter(isValue).map(function (rawX, i) {\n return $$.generateTargetX(rawX, id, i);\n }));\n }\n // if not included in input data, find from preloaded data of other id's x\n else if (config.data_x) {\n $$.data.xs[id] = $$.getOtherTargetXs();\n }\n // if not included in input data, find from preloaded data\n else if (notEmpty(config.data_xs)) {\n $$.data.xs[id] = $$.getXValuesOfXKey(xKey, $$.data.targets);\n }\n // MEMO: if no x included, use same x of current will be used\n } else {\n $$.data.xs[id] = data.map(function (d, i) {\n return i;\n });\n }\n });\n\n // check x is defined\n ids.forEach(function (id) {\n if (!$$.data.xs[id]) {\n throw new Error('x is not defined for id = \"' + id + '\".');\n }\n });\n\n // convert to target\n targets = ids.map(function (id, index) {\n var convertedId = config.data_idConverter(id);\n return {\n id: convertedId,\n id_org: id,\n values: data.map(function (d, i) {\n var xKey = $$.getXKey(id),\n rawX = d[xKey],\n value = d[id] !== null && !isNaN(d[id]) ? +d[id] : null,\n x;\n // use x as categories if custom x and categorized\n if ($$.isCustomX() && $$.isCategorized() && !isUndefined(rawX)) {\n if (index === 0 && i === 0) {\n config.axis_x_categories = [];\n }\n x = config.axis_x_categories.indexOf(rawX);\n if (x === -1) {\n x = config.axis_x_categories.length;\n config.axis_x_categories.push(rawX);\n }\n } else {\n x = $$.generateTargetX(rawX, id, i);\n }\n // mark as x = undefined if value is undefined and filter to remove after mapped\n if (isUndefined(d[id]) || $$.data.xs[id].length <= i) {\n x = undefined;\n }\n return { x: x, value: value, id: convertedId };\n }).filter(function (v) {\n return isDefined(v.x);\n })\n };\n });\n\n // finish targets\n targets.forEach(function (t) {\n var i;\n // sort values by its x\n if (config.data_xSort) {\n t.values = t.values.sort(function (v1, v2) {\n var x1 = v1.x || v1.x === 0 ? v1.x : Infinity,\n x2 = v2.x || v2.x === 0 ? v2.x : Infinity;\n return x1 - x2;\n });\n }\n // indexing each value\n i = 0;\n t.values.forEach(function (v) {\n v.index = i++;\n });\n // this needs to be sorted because its index and value.index is identical\n $$.data.xs[t.id].sort(function (v1, v2) {\n return v1 - v2;\n });\n });\n\n // cache information about values\n $$.hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n $$.hasPositiveValue = $$.hasPositiveValueInTargets(targets);\n\n // set target types\n if (config.data_type) {\n $$.setTargetType($$.mapToIds(targets).filter(function (id) {\n return !(id in config.data_types);\n }), config.data_type);\n }\n\n // cache as original id keyed\n targets.forEach(function (d) {\n $$.addCache(d.id_org, d);\n });\n\n return targets;\n };\n\n c3_chart_internal_fn.isX = function (key) {\n var $$ = this,\n config = $$.config;\n return config.data_x && key === config.data_x || notEmpty(config.data_xs) && hasValue(config.data_xs, key);\n };\n c3_chart_internal_fn.isNotX = function (key) {\n return !this.isX(key);\n };\n c3_chart_internal_fn.getXKey = function (id) {\n var $$ = this,\n config = $$.config;\n return config.data_x ? config.data_x : notEmpty(config.data_xs) ? config.data_xs[id] : null;\n };\n c3_chart_internal_fn.getXValuesOfXKey = function (key, targets) {\n var $$ = this,\n xValues,\n ids = targets && notEmpty(targets) ? $$.mapToIds(targets) : [];\n ids.forEach(function (id) {\n if ($$.getXKey(id) === key) {\n xValues = $$.data.xs[id];\n }\n });\n return xValues;\n };\n c3_chart_internal_fn.getIndexByX = function (x) {\n var $$ = this,\n data = $$.filterByX($$.data.targets, x);\n return data.length ? data[0].index : null;\n };\n c3_chart_internal_fn.getXValue = function (id, i) {\n var $$ = this;\n return id in $$.data.xs && $$.data.xs[id] && isValue($$.data.xs[id][i]) ? $$.data.xs[id][i] : i;\n };\n c3_chart_internal_fn.getOtherTargetXs = function () {\n var $$ = this,\n idsForX = Object.keys($$.data.xs);\n return idsForX.length ? $$.data.xs[idsForX[0]] : null;\n };\n c3_chart_internal_fn.getOtherTargetX = function (index) {\n var xs = this.getOtherTargetXs();\n return xs && index < xs.length ? xs[index] : null;\n };\n c3_chart_internal_fn.addXs = function (xs) {\n var $$ = this;\n Object.keys(xs).forEach(function (id) {\n $$.config.data_xs[id] = xs[id];\n });\n };\n c3_chart_internal_fn.hasMultipleX = function (xs) {\n return this.d3.set(Object.keys(xs).map(function (id) {\n return xs[id];\n })).size() > 1;\n };\n c3_chart_internal_fn.isMultipleX = function () {\n return notEmpty(this.config.data_xs) || !this.config.data_xSort || this.hasType('scatter');\n };\n c3_chart_internal_fn.addName = function (data) {\n var $$ = this,\n name;\n if (data) {\n name = $$.config.data_names[data.id];\n data.name = name !== undefined ? name : data.id;\n }\n return data;\n };\n c3_chart_internal_fn.getValueOnIndex = function (values, index) {\n var valueOnIndex = values.filter(function (v) {\n return v.index === index;\n });\n return valueOnIndex.length ? valueOnIndex[0] : null;\n };\n c3_chart_internal_fn.updateTargetX = function (targets, x) {\n var $$ = this;\n targets.forEach(function (t) {\n t.values.forEach(function (v, i) {\n v.x = $$.generateTargetX(x[i], t.id, i);\n });\n $$.data.xs[t.id] = x;\n });\n };\n c3_chart_internal_fn.updateTargetXs = function (targets, xs) {\n var $$ = this;\n targets.forEach(function (t) {\n if (xs[t.id]) {\n $$.updateTargetX([t], xs[t.id]);\n }\n });\n };\n c3_chart_internal_fn.generateTargetX = function (rawX, id, index) {\n var $$ = this,\n x;\n if ($$.isTimeSeries()) {\n x = rawX ? $$.parseDate(rawX) : $$.parseDate($$.getXValue(id, index));\n } else if ($$.isCustomX() && !$$.isCategorized()) {\n x = isValue(rawX) ? +rawX : $$.getXValue(id, index);\n } else {\n x = index;\n }\n return x;\n };\n c3_chart_internal_fn.cloneTarget = function (target) {\n return {\n id: target.id,\n id_org: target.id_org,\n values: target.values.map(function (d) {\n return { x: d.x, value: d.value, id: d.id };\n })\n };\n };\n c3_chart_internal_fn.updateXs = function () {\n var $$ = this;\n if ($$.data.targets.length) {\n $$.xs = [];\n $$.data.targets[0].values.forEach(function (v) {\n $$.xs[v.index] = v.x;\n });\n }\n };\n c3_chart_internal_fn.getPrevX = function (i) {\n var x = this.xs[i - 1];\n return typeof x !== 'undefined' ? x : null;\n };\n c3_chart_internal_fn.getNextX = function (i) {\n var x = this.xs[i + 1];\n return typeof x !== 'undefined' ? x : null;\n };\n c3_chart_internal_fn.getMaxDataCount = function () {\n var $$ = this;\n return $$.d3.max($$.data.targets, function (t) {\n return t.values.length;\n });\n };\n c3_chart_internal_fn.getMaxDataCountTarget = function (targets) {\n var length = targets.length,\n max = 0,\n maxTarget;\n if (length > 1) {\n targets.forEach(function (t) {\n if (t.values.length > max) {\n maxTarget = t;\n max = t.values.length;\n }\n });\n } else {\n maxTarget = length ? targets[0] : null;\n }\n return maxTarget;\n };\n c3_chart_internal_fn.getEdgeX = function (targets) {\n var $$ = this;\n return !targets.length ? [0, 0] : [$$.d3.min(targets, function (t) {\n return t.values[0].x;\n }), $$.d3.max(targets, function (t) {\n return t.values[t.values.length - 1].x;\n })];\n };\n c3_chart_internal_fn.mapToIds = function (targets) {\n return targets.map(function (d) {\n return d.id;\n });\n };\n c3_chart_internal_fn.mapToTargetIds = function (ids) {\n var $$ = this;\n return ids ? [].concat(ids) : $$.mapToIds($$.data.targets);\n };\n c3_chart_internal_fn.hasTarget = function (targets, id) {\n var ids = this.mapToIds(targets),\n i;\n for (i = 0; i < ids.length; i++) {\n if (ids[i] === id) {\n return true;\n }\n }\n return false;\n };\n c3_chart_internal_fn.isTargetToShow = function (targetId) {\n return this.hiddenTargetIds.indexOf(targetId) < 0;\n };\n c3_chart_internal_fn.isLegendToShow = function (targetId) {\n return this.hiddenLegendIds.indexOf(targetId) < 0;\n };\n c3_chart_internal_fn.filterTargetsToShow = function (targets) {\n var $$ = this;\n return targets.filter(function (t) {\n return $$.isTargetToShow(t.id);\n });\n };\n c3_chart_internal_fn.mapTargetsToUniqueXs = function (targets) {\n var $$ = this;\n var xs = $$.d3.set($$.d3.merge(targets.map(function (t) {\n return t.values.map(function (v) {\n return +v.x;\n });\n }))).values();\n xs = $$.isTimeSeries() ? xs.map(function (x) {\n return new Date(+x);\n }) : xs.map(function (x) {\n return +x;\n });\n return xs.sort(function (a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n });\n };\n c3_chart_internal_fn.addHiddenTargetIds = function (targetIds) {\n targetIds = targetIds instanceof Array ? targetIds : new Array(targetIds);\n for (var i = 0; i < targetIds.length; i++) {\n if (this.hiddenTargetIds.indexOf(targetIds[i]) < 0) {\n this.hiddenTargetIds = this.hiddenTargetIds.concat(targetIds[i]);\n }\n }\n };\n c3_chart_internal_fn.removeHiddenTargetIds = function (targetIds) {\n this.hiddenTargetIds = this.hiddenTargetIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n };\n c3_chart_internal_fn.addHiddenLegendIds = function (targetIds) {\n targetIds = targetIds instanceof Array ? targetIds : new Array(targetIds);\n for (var i = 0; i < targetIds.length; i++) {\n if (this.hiddenLegendIds.indexOf(targetIds[i]) < 0) {\n this.hiddenLegendIds = this.hiddenLegendIds.concat(targetIds[i]);\n }\n }\n };\n c3_chart_internal_fn.removeHiddenLegendIds = function (targetIds) {\n this.hiddenLegendIds = this.hiddenLegendIds.filter(function (id) {\n return targetIds.indexOf(id) < 0;\n });\n };\n c3_chart_internal_fn.getValuesAsIdKeyed = function (targets) {\n var ys = {};\n targets.forEach(function (t) {\n ys[t.id] = [];\n t.values.forEach(function (v) {\n ys[t.id].push(v.value);\n });\n });\n return ys;\n };\n c3_chart_internal_fn.checkValueInTargets = function (targets, checker) {\n var ids = Object.keys(targets),\n i,\n j,\n values;\n for (i = 0; i < ids.length; i++) {\n values = targets[ids[i]].values;\n for (j = 0; j < values.length; j++) {\n if (checker(values[j].value)) {\n return true;\n }\n }\n }\n return false;\n };\n c3_chart_internal_fn.hasNegativeValueInTargets = function (targets) {\n return this.checkValueInTargets(targets, function (v) {\n return v < 0;\n });\n };\n c3_chart_internal_fn.hasPositiveValueInTargets = function (targets) {\n return this.checkValueInTargets(targets, function (v) {\n return v > 0;\n });\n };\n c3_chart_internal_fn.isOrderDesc = function () {\n var config = this.config;\n return typeof config.data_order === 'string' && config.data_order.toLowerCase() === 'desc';\n };\n c3_chart_internal_fn.isOrderAsc = function () {\n var config = this.config;\n return typeof config.data_order === 'string' && config.data_order.toLowerCase() === 'asc';\n };\n c3_chart_internal_fn.getOrderFunction = function () {\n var $$ = this,\n config = $$.config,\n orderAsc = $$.isOrderAsc(),\n orderDesc = $$.isOrderDesc();\n if (orderAsc || orderDesc) {\n return function (t1, t2) {\n var reducer = function reducer(p, c) {\n return p + Math.abs(c.value);\n };\n var t1Sum = t1.values.reduce(reducer, 0),\n t2Sum = t2.values.reduce(reducer, 0);\n return orderDesc ? t2Sum - t1Sum : t1Sum - t2Sum;\n };\n } else if (isFunction(config.data_order)) {\n return config.data_order;\n } else if (isArray(config.data_order)) {\n var order = config.data_order;\n return function (t1, t2) {\n return order.indexOf(t1.id) - order.indexOf(t2.id);\n };\n }\n };\n c3_chart_internal_fn.orderTargets = function (targets) {\n var fct = this.getOrderFunction();\n if (fct) {\n targets.sort(fct);\n if (this.isOrderAsc() || this.isOrderDesc()) {\n targets.reverse();\n }\n }\n return targets;\n };\n c3_chart_internal_fn.filterByX = function (targets, x) {\n return this.d3.merge(targets.map(function (t) {\n return t.values;\n })).filter(function (v) {\n return v.x - x === 0;\n });\n };\n c3_chart_internal_fn.filterRemoveNull = function (data) {\n return data.filter(function (d) {\n return isValue(d.value);\n });\n };\n c3_chart_internal_fn.filterByXDomain = function (targets, xDomain) {\n return targets.map(function (t) {\n return {\n id: t.id,\n id_org: t.id_org,\n values: t.values.filter(function (v) {\n return xDomain[0] <= v.x && v.x <= xDomain[1];\n })\n };\n });\n };\n c3_chart_internal_fn.hasDataLabel = function () {\n var config = this.config;\n if (typeof config.data_labels === 'boolean' && config.data_labels) {\n return true;\n } else if (_typeof(config.data_labels) === 'object' && notEmpty(config.data_labels)) {\n return true;\n }\n return false;\n };\n c3_chart_internal_fn.getDataLabelLength = function (min, max, key) {\n var $$ = this,\n lengths = [0, 0],\n paddingCoef = 1.3;\n $$.selectChart.select('svg').selectAll('.dummy').data([min, max]).enter().append('text').text(function (d) {\n return $$.dataLabelFormat(d.id)(d);\n }).each(function (d, i) {\n lengths[i] = this.getBoundingClientRect()[key] * paddingCoef;\n }).remove();\n return lengths;\n };\n c3_chart_internal_fn.isNoneArc = function (d) {\n return this.hasTarget(this.data.targets, d.id);\n }, c3_chart_internal_fn.isArc = function (d) {\n return 'data' in d && this.hasTarget(this.data.targets, d.data.id);\n };\n c3_chart_internal_fn.findSameXOfValues = function (values, index) {\n var i,\n targetX = values[index].x,\n sames = [];\n for (i = index - 1; i >= 0; i--) {\n if (targetX !== values[i].x) {\n break;\n }\n sames.push(values[i]);\n }\n for (i = index; i < values.length; i++) {\n if (targetX !== values[i].x) {\n break;\n }\n sames.push(values[i]);\n }\n return sames;\n };\n\n c3_chart_internal_fn.findClosestFromTargets = function (targets, pos) {\n var $$ = this,\n candidates;\n\n // map to array of closest points of each target\n candidates = targets.map(function (target) {\n return $$.findClosest(target.values, pos);\n });\n\n // decide closest point and return\n return $$.findClosest(candidates, pos);\n };\n c3_chart_internal_fn.findClosest = function (values, pos) {\n var $$ = this,\n minDist = $$.config.point_sensitivity,\n closest;\n\n // find mouseovering bar\n values.filter(function (v) {\n return v && $$.isBarType(v.id);\n }).forEach(function (v) {\n var shape = $$.main.select('.' + CLASS.bars + $$.getTargetSelectorSuffix(v.id) + ' .' + CLASS.bar + '-' + v.index).node();\n if (!closest && $$.isWithinBar(shape)) {\n closest = v;\n }\n });\n\n // find closest point from non-bar\n values.filter(function (v) {\n return v && !$$.isBarType(v.id);\n }).forEach(function (v) {\n var d = $$.dist(v, pos);\n if (d < minDist) {\n minDist = d;\n closest = v;\n }\n });\n\n return closest;\n };\n c3_chart_internal_fn.dist = function (data, pos) {\n var $$ = this,\n config = $$.config,\n xIndex = config.axis_rotated ? 1 : 0,\n yIndex = config.axis_rotated ? 0 : 1,\n y = $$.circleY(data, data.index),\n x = $$.x(data.x);\n return Math.sqrt(Math.pow(x - pos[xIndex], 2) + Math.pow(y - pos[yIndex], 2));\n };\n c3_chart_internal_fn.convertValuesToStep = function (values) {\n var converted = [].concat(values),\n i;\n\n if (!this.isCategorized()) {\n return values;\n }\n\n for (i = values.length + 1; 0 < i; i--) {\n converted[i] = converted[i - 1];\n }\n\n converted[0] = {\n x: converted[0].x - 1,\n value: converted[0].value,\n id: converted[0].id\n };\n converted[values.length + 1] = {\n x: converted[values.length].x + 1,\n value: converted[values.length].value,\n id: converted[values.length].id\n };\n\n return converted;\n };\n c3_chart_internal_fn.updateDataAttributes = function (name, attrs) {\n var $$ = this,\n config = $$.config,\n current = config['data_' + name];\n if (typeof attrs === 'undefined') {\n return current;\n }\n Object.keys(attrs).forEach(function (id) {\n current[id] = attrs[id];\n });\n $$.redraw({ withLegend: true });\n return current;\n };\n\n c3_chart_internal_fn.load = function (targets, args) {\n var $$ = this;\n if (targets) {\n // filter loading targets if needed\n if (args.filter) {\n targets = targets.filter(args.filter);\n }\n // set type if args.types || args.type specified\n if (args.type || args.types) {\n targets.forEach(function (t) {\n var type = args.types && args.types[t.id] ? args.types[t.id] : args.type;\n $$.setTargetType(t.id, type);\n });\n }\n // Update/Add data\n $$.data.targets.forEach(function (d) {\n for (var i = 0; i < targets.length; i++) {\n if (d.id === targets[i].id) {\n d.values = targets[i].values;\n targets.splice(i, 1);\n break;\n }\n }\n });\n $$.data.targets = $$.data.targets.concat(targets); // add remained\n }\n\n // Set targets\n $$.updateTargets($$.data.targets);\n\n // Redraw with new targets\n $$.redraw({ withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true });\n\n if (args.done) {\n args.done();\n }\n };\n c3_chart_internal_fn.loadFromArgs = function (args) {\n var $$ = this;\n if (args.data) {\n $$.load($$.convertDataToTargets(args.data), args);\n } else if (args.url) {\n $$.convertUrlToData(args.url, args.mimeType, args.headers, args.keys, function (data) {\n $$.load($$.convertDataToTargets(data), args);\n });\n } else if (args.json) {\n $$.load($$.convertDataToTargets($$.convertJsonToData(args.json, args.keys)), args);\n } else if (args.rows) {\n $$.load($$.convertDataToTargets($$.convertRowsToData(args.rows)), args);\n } else if (args.columns) {\n $$.load($$.convertDataToTargets($$.convertColumnsToData(args.columns)), args);\n } else {\n $$.load(null, args);\n }\n };\n c3_chart_internal_fn.unload = function (targetIds, done) {\n var $$ = this;\n if (!done) {\n done = function done() {};\n }\n // filter existing target\n targetIds = targetIds.filter(function (id) {\n return $$.hasTarget($$.data.targets, id);\n });\n // If no target, call done and return\n if (!targetIds || targetIds.length === 0) {\n done();\n return;\n }\n $$.svg.selectAll(targetIds.map(function (id) {\n return $$.selectorTarget(id);\n })).transition().style('opacity', 0).remove().call($$.endall, done);\n targetIds.forEach(function (id) {\n // Reset fadein for future load\n $$.withoutFadeIn[id] = false;\n // Remove target's elements\n if ($$.legend) {\n $$.legend.selectAll('.' + CLASS.legendItem + $$.getTargetSelectorSuffix(id)).remove();\n }\n // Remove target\n $$.data.targets = $$.data.targets.filter(function (t) {\n return t.id !== id;\n });\n });\n };\n\n c3_chart_internal_fn.getYDomainMin = function (targets) {\n var $$ = this,\n config = $$.config,\n ids = $$.mapToIds(targets),\n ys = $$.getValuesAsIdKeyed(targets),\n j,\n k,\n baseId,\n idsInGroup,\n id,\n hasNegativeValue;\n if (config.data_groups.length > 0) {\n hasNegativeValue = $$.hasNegativeValueInTargets(targets);\n for (j = 0; j < config.data_groups.length; j++) {\n // Determine baseId\n idsInGroup = config.data_groups[j].filter(function (id) {\n return ids.indexOf(id) >= 0;\n });\n if (idsInGroup.length === 0) {\n continue;\n }\n baseId = idsInGroup[0];\n // Consider negative values\n if (hasNegativeValue && ys[baseId]) {\n ys[baseId].forEach(function (v, i) {\n ys[baseId][i] = v < 0 ? v : 0;\n });\n }\n // Compute min\n for (k = 1; k < idsInGroup.length; k++) {\n id = idsInGroup[k];\n if (!ys[id]) {\n continue;\n }\n ys[id].forEach(function (v, i) {\n if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasNegativeValue && +v > 0)) {\n ys[baseId][i] += +v;\n }\n });\n }\n }\n }\n return $$.d3.min(Object.keys(ys).map(function (key) {\n return $$.d3.min(ys[key]);\n }));\n };\n c3_chart_internal_fn.getYDomainMax = function (targets) {\n var $$ = this,\n config = $$.config,\n ids = $$.mapToIds(targets),\n ys = $$.getValuesAsIdKeyed(targets),\n j,\n k,\n baseId,\n idsInGroup,\n id,\n hasPositiveValue;\n if (config.data_groups.length > 0) {\n hasPositiveValue = $$.hasPositiveValueInTargets(targets);\n for (j = 0; j < config.data_groups.length; j++) {\n // Determine baseId\n idsInGroup = config.data_groups[j].filter(function (id) {\n return ids.indexOf(id) >= 0;\n });\n if (idsInGroup.length === 0) {\n continue;\n }\n baseId = idsInGroup[0];\n // Consider positive values\n if (hasPositiveValue && ys[baseId]) {\n ys[baseId].forEach(function (v, i) {\n ys[baseId][i] = v > 0 ? v : 0;\n });\n }\n // Compute max\n for (k = 1; k < idsInGroup.length; k++) {\n id = idsInGroup[k];\n if (!ys[id]) {\n continue;\n }\n ys[id].forEach(function (v, i) {\n if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasPositiveValue && +v < 0)) {\n ys[baseId][i] += +v;\n }\n });\n }\n }\n }\n return $$.d3.max(Object.keys(ys).map(function (key) {\n return $$.d3.max(ys[key]);\n }));\n };\n c3_chart_internal_fn.getYDomain = function (targets, axisId, xDomain) {\n var $$ = this,\n config = $$.config,\n targetsByAxisId = targets.filter(function (t) {\n return $$.axis.getId(t.id) === axisId;\n }),\n yTargets = xDomain ? $$.filterByXDomain(targetsByAxisId, xDomain) : targetsByAxisId,\n yMin = axisId === 'y2' ? config.axis_y2_min : config.axis_y_min,\n yMax = axisId === 'y2' ? config.axis_y2_max : config.axis_y_max,\n yDomainMin = $$.getYDomainMin(yTargets),\n yDomainMax = $$.getYDomainMax(yTargets),\n domain,\n domainLength,\n padding,\n padding_top,\n padding_bottom,\n center = axisId === 'y2' ? config.axis_y2_center : config.axis_y_center,\n yDomainAbs,\n lengths,\n diff,\n ratio,\n isAllPositive,\n isAllNegative,\n isZeroBased = $$.hasType('bar', yTargets) && config.bar_zerobased || $$.hasType('area', yTargets) && config.area_zerobased,\n isInverted = axisId === 'y2' ? config.axis_y2_inverted : config.axis_y_inverted,\n showHorizontalDataLabel = $$.hasDataLabel() && config.axis_rotated,\n showVerticalDataLabel = $$.hasDataLabel() && !config.axis_rotated;\n\n // MEMO: avoid inverting domain unexpectedly\n yDomainMin = isValue(yMin) ? yMin : isValue(yMax) ? yDomainMin < yMax ? yDomainMin : yMax - 10 : yDomainMin;\n yDomainMax = isValue(yMax) ? yMax : isValue(yMin) ? yMin < yDomainMax ? yDomainMax : yMin + 10 : yDomainMax;\n\n if (yTargets.length === 0) {\n // use current domain if target of axisId is none\n return axisId === 'y2' ? $$.y2.domain() : $$.y.domain();\n }\n if (isNaN(yDomainMin)) {\n // set minimum to zero when not number\n yDomainMin = 0;\n }\n if (isNaN(yDomainMax)) {\n // set maximum to have same value as yDomainMin\n yDomainMax = yDomainMin;\n }\n if (yDomainMin === yDomainMax) {\n yDomainMin < 0 ? yDomainMax = 0 : yDomainMin = 0;\n }\n isAllPositive = yDomainMin >= 0 && yDomainMax >= 0;\n isAllNegative = yDomainMin <= 0 && yDomainMax <= 0;\n\n // Cancel zerobased if axis_*_min / axis_*_max specified\n if (isValue(yMin) && isAllPositive || isValue(yMax) && isAllNegative) {\n isZeroBased = false;\n }\n\n // Bar/Area chart should be 0-based if all positive|negative\n if (isZeroBased) {\n if (isAllPositive) {\n yDomainMin = 0;\n }\n if (isAllNegative) {\n yDomainMax = 0;\n }\n }\n\n domainLength = Math.abs(yDomainMax - yDomainMin);\n padding = padding_top = padding_bottom = domainLength * 0.1;\n\n if (typeof center !== 'undefined') {\n yDomainAbs = Math.max(Math.abs(yDomainMin), Math.abs(yDomainMax));\n yDomainMax = center + yDomainAbs;\n yDomainMin = center - yDomainAbs;\n }\n // add padding for data label\n if (showHorizontalDataLabel) {\n lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'width');\n diff = diffDomain($$.y.range());\n ratio = [lengths[0] / diff, lengths[1] / diff];\n padding_top += domainLength * (ratio[1] / (1 - ratio[0] - ratio[1]));\n padding_bottom += domainLength * (ratio[0] / (1 - ratio[0] - ratio[1]));\n } else if (showVerticalDataLabel) {\n lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'height');\n padding_top += $$.axis.convertPixelsToAxisPadding(lengths[1], domainLength);\n padding_bottom += $$.axis.convertPixelsToAxisPadding(lengths[0], domainLength);\n }\n if (axisId === 'y' && notEmpty(config.axis_y_padding)) {\n padding_top = $$.axis.getPadding(config.axis_y_padding, 'top', padding_top, domainLength);\n padding_bottom = $$.axis.getPadding(config.axis_y_padding, 'bottom', padding_bottom, domainLength);\n }\n if (axisId === 'y2' && notEmpty(config.axis_y2_padding)) {\n padding_top = $$.axis.getPadding(config.axis_y2_padding, 'top', padding_top, domainLength);\n padding_bottom = $$.axis.getPadding(config.axis_y2_padding, 'bottom', padding_bottom, domainLength);\n }\n // Bar/Area chart should be 0-based if all positive|negative\n if (isZeroBased) {\n if (isAllPositive) {\n padding_bottom = yDomainMin;\n }\n if (isAllNegative) {\n padding_top = -yDomainMax;\n }\n }\n domain = [yDomainMin - padding_bottom, yDomainMax + padding_top];\n return isInverted ? domain.reverse() : domain;\n };\n c3_chart_internal_fn.getXDomainMin = function (targets) {\n var $$ = this,\n config = $$.config;\n return isDefined(config.axis_x_min) ? $$.isTimeSeries() ? this.parseDate(config.axis_x_min) : config.axis_x_min : $$.d3.min(targets, function (t) {\n return $$.d3.min(t.values, function (v) {\n return v.x;\n });\n });\n };\n c3_chart_internal_fn.getXDomainMax = function (targets) {\n var $$ = this,\n config = $$.config;\n return isDefined(config.axis_x_max) ? $$.isTimeSeries() ? this.parseDate(config.axis_x_max) : config.axis_x_max : $$.d3.max(targets, function (t) {\n return $$.d3.max(t.values, function (v) {\n return v.x;\n });\n });\n };\n c3_chart_internal_fn.getXDomainPadding = function (domain) {\n var $$ = this,\n config = $$.config,\n diff = domain[1] - domain[0],\n maxDataCount,\n padding,\n paddingLeft,\n paddingRight;\n if ($$.isCategorized()) {\n padding = 0;\n } else if ($$.hasType('bar')) {\n maxDataCount = $$.getMaxDataCount();\n padding = maxDataCount > 1 ? diff / (maxDataCount - 1) / 2 : 0.5;\n } else {\n padding = diff * 0.01;\n }\n if (_typeof(config.axis_x_padding) === 'object' && notEmpty(config.axis_x_padding)) {\n paddingLeft = isValue(config.axis_x_padding.left) ? config.axis_x_padding.left : padding;\n paddingRight = isValue(config.axis_x_padding.right) ? config.axis_x_padding.right : padding;\n } else if (typeof config.axis_x_padding === 'number') {\n paddingLeft = paddingRight = config.axis_x_padding;\n } else {\n paddingLeft = paddingRight = padding;\n }\n return { left: paddingLeft, right: paddingRight };\n };\n c3_chart_internal_fn.getXDomain = function (targets) {\n var $$ = this,\n xDomain = [$$.getXDomainMin(targets), $$.getXDomainMax(targets)],\n firstX = xDomain[0],\n lastX = xDomain[1],\n padding = $$.getXDomainPadding(xDomain),\n min = 0,\n max = 0;\n // show center of x domain if min and max are the same\n if (firstX - lastX === 0 && !$$.isCategorized()) {\n if ($$.isTimeSeries()) {\n firstX = new Date(firstX.getTime() * 0.5);\n lastX = new Date(lastX.getTime() * 1.5);\n } else {\n firstX = firstX === 0 ? 1 : firstX * 0.5;\n lastX = lastX === 0 ? -1 : lastX * 1.5;\n }\n }\n if (firstX || firstX === 0) {\n min = $$.isTimeSeries() ? new Date(firstX.getTime() - padding.left) : firstX - padding.left;\n }\n if (lastX || lastX === 0) {\n max = $$.isTimeSeries() ? new Date(lastX.getTime() + padding.right) : lastX + padding.right;\n }\n return [min, max];\n };\n c3_chart_internal_fn.updateXDomain = function (targets, withUpdateXDomain, withUpdateOrgXDomain, withTrim, domain) {\n var $$ = this,\n config = $$.config;\n\n if (withUpdateOrgXDomain) {\n $$.x.domain(domain ? domain : $$.d3.extent($$.getXDomain(targets)));\n $$.orgXDomain = $$.x.domain();\n if (config.zoom_enabled) {\n $$.zoom.scale($$.x).updateScaleExtent();\n }\n $$.subX.domain($$.x.domain());\n if ($$.brush) {\n $$.brush.scale($$.subX);\n }\n }\n if (withUpdateXDomain) {\n $$.x.domain(domain ? domain : !$$.brush || $$.brush.empty() ? $$.orgXDomain : $$.brush.extent());\n if (config.zoom_enabled) {\n $$.zoom.scale($$.x).updateScaleExtent();\n }\n }\n\n // Trim domain when too big by zoom mousemove event\n if (withTrim) {\n $$.x.domain($$.trimXDomain($$.x.orgDomain()));\n }\n\n return $$.x.domain();\n };\n c3_chart_internal_fn.trimXDomain = function (domain) {\n var zoomDomain = this.getZoomDomain(),\n min = zoomDomain[0],\n max = zoomDomain[1];\n if (domain[0] <= min) {\n domain[1] = +domain[1] + (min - domain[0]);\n domain[0] = min;\n }\n if (max <= domain[1]) {\n domain[0] = +domain[0] - (domain[1] - max);\n domain[1] = max;\n }\n return domain;\n };\n\n c3_chart_internal_fn.drag = function (mouse) {\n var $$ = this,\n config = $$.config,\n main = $$.main,\n d3 = $$.d3;\n var sx, sy, mx, my, minX, maxX, minY, maxY;\n\n if ($$.hasArcType()) {\n return;\n }\n if (!config.data_selection_enabled) {\n return;\n } // do nothing if not selectable\n if (config.zoom_enabled && !$$.zoom.altDomain) {\n return;\n } // skip if zoomable because of conflict drag dehavior\n if (!config.data_selection_multiple) {\n return;\n } // skip when single selection because drag is used for multiple selection\n\n sx = $$.dragStart[0];\n sy = $$.dragStart[1];\n mx = mouse[0];\n my = mouse[1];\n minX = Math.min(sx, mx);\n maxX = Math.max(sx, mx);\n minY = config.data_selection_grouped ? $$.margin.top : Math.min(sy, my);\n maxY = config.data_selection_grouped ? $$.height : Math.max(sy, my);\n\n main.select('.' + CLASS.dragarea).attr('x', minX).attr('y', minY).attr('width', maxX - minX).attr('height', maxY - minY);\n // TODO: binary search when multiple xs\n main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).filter(function (d) {\n return config.data_selection_isselectable(d);\n }).each(function (d, i) {\n var shape = d3.select(this),\n isSelected = shape.classed(CLASS.SELECTED),\n isIncluded = shape.classed(CLASS.INCLUDED),\n _x,\n _y,\n _w,\n _h,\n toggle,\n isWithin = false,\n box;\n if (shape.classed(CLASS.circle)) {\n _x = shape.attr(\"cx\") * 1;\n _y = shape.attr(\"cy\") * 1;\n toggle = $$.togglePoint;\n isWithin = minX < _x && _x < maxX && minY < _y && _y < maxY;\n } else if (shape.classed(CLASS.bar)) {\n box = getPathBox(this);\n _x = box.x;\n _y = box.y;\n _w = box.width;\n _h = box.height;\n toggle = $$.togglePath;\n isWithin = !(maxX < _x || _x + _w < minX) && !(maxY < _y || _y + _h < minY);\n } else {\n // line/area selection not supported yet\n return;\n }\n if (isWithin ^ isIncluded) {\n shape.classed(CLASS.INCLUDED, !isIncluded);\n // TODO: included/unincluded callback here\n shape.classed(CLASS.SELECTED, !isSelected);\n toggle.call($$, !isSelected, shape, d, i);\n }\n });\n };\n\n c3_chart_internal_fn.dragstart = function (mouse) {\n var $$ = this,\n config = $$.config;\n if ($$.hasArcType()) {\n return;\n }\n if (!config.data_selection_enabled) {\n return;\n } // do nothing if not selectable\n $$.dragStart = mouse;\n $$.main.select('.' + CLASS.chart).append('rect').attr('class', CLASS.dragarea).style('opacity', 0.1);\n $$.dragging = true;\n };\n\n c3_chart_internal_fn.dragend = function () {\n var $$ = this,\n config = $$.config;\n if ($$.hasArcType()) {\n return;\n }\n if (!config.data_selection_enabled) {\n return;\n } // do nothing if not selectable\n $$.main.select('.' + CLASS.dragarea).transition().duration(100).style('opacity', 0).remove();\n $$.main.selectAll('.' + CLASS.shape).classed(CLASS.INCLUDED, false);\n $$.dragging = false;\n };\n\n c3_chart_internal_fn.getYFormat = function (forArc) {\n var $$ = this,\n formatForY = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.yFormat,\n formatForY2 = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.y2Format;\n return function (v, ratio, id) {\n var format = $$.axis.getId(id) === 'y2' ? formatForY2 : formatForY;\n return format.call($$, v, ratio);\n };\n };\n c3_chart_internal_fn.yFormat = function (v) {\n var $$ = this,\n config = $$.config,\n format = config.axis_y_tick_format ? config.axis_y_tick_format : $$.defaultValueFormat;\n return format(v);\n };\n c3_chart_internal_fn.y2Format = function (v) {\n var $$ = this,\n config = $$.config,\n format = config.axis_y2_tick_format ? config.axis_y2_tick_format : $$.defaultValueFormat;\n return format(v);\n };\n c3_chart_internal_fn.defaultValueFormat = function (v) {\n return isValue(v) ? +v : \"\";\n };\n c3_chart_internal_fn.defaultArcValueFormat = function (v, ratio) {\n return (ratio * 100).toFixed(1) + '%';\n };\n c3_chart_internal_fn.dataLabelFormat = function (targetId) {\n var $$ = this,\n data_labels = $$.config.data_labels,\n format,\n defaultFormat = function defaultFormat(v) {\n return isValue(v) ? +v : \"\";\n };\n // find format according to axis id\n if (typeof data_labels.format === 'function') {\n format = data_labels.format;\n } else if (_typeof(data_labels.format) === 'object') {\n if (data_labels.format[targetId]) {\n format = data_labels.format[targetId] === true ? defaultFormat : data_labels.format[targetId];\n } else {\n format = function format() {\n return '';\n };\n }\n } else {\n format = defaultFormat;\n }\n return format;\n };\n\n c3_chart_internal_fn.initGrid = function () {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3;\n $$.grid = $$.main.append('g').attr(\"clip-path\", $$.clipPathForGrid).attr('class', CLASS.grid);\n if (config.grid_x_show) {\n $$.grid.append(\"g\").attr(\"class\", CLASS.xgrids);\n }\n if (config.grid_y_show) {\n $$.grid.append('g').attr('class', CLASS.ygrids);\n }\n if (config.grid_focus_show) {\n $$.grid.append('g').attr(\"class\", CLASS.xgridFocus).append('line').attr('class', CLASS.xgridFocus);\n }\n $$.xgrid = d3.selectAll([]);\n if (!config.grid_lines_front) {\n $$.initGridLines();\n }\n };\n c3_chart_internal_fn.initGridLines = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.gridLines = $$.main.append('g').attr(\"clip-path\", $$.clipPathForGrid).attr('class', CLASS.grid + ' ' + CLASS.gridLines);\n $$.gridLines.append('g').attr(\"class\", CLASS.xgridLines);\n $$.gridLines.append('g').attr('class', CLASS.ygridLines);\n $$.xgridLines = d3.selectAll([]);\n };\n c3_chart_internal_fn.updateXGrid = function (withoutUpdate) {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3,\n xgridData = $$.generateGridData(config.grid_x_type, $$.x),\n tickOffset = $$.isCategorized() ? $$.xAxis.tickOffset() : 0;\n\n $$.xgridAttr = config.axis_rotated ? {\n 'x1': 0,\n 'x2': $$.width,\n 'y1': function y1(d) {\n return $$.x(d) - tickOffset;\n },\n 'y2': function y2(d) {\n return $$.x(d) - tickOffset;\n }\n } : {\n 'x1': function x1(d) {\n return $$.x(d) + tickOffset;\n },\n 'x2': function x2(d) {\n return $$.x(d) + tickOffset;\n },\n 'y1': 0,\n 'y2': $$.height\n };\n\n $$.xgrid = $$.main.select('.' + CLASS.xgrids).selectAll('.' + CLASS.xgrid).data(xgridData);\n $$.xgrid.enter().append('line').attr(\"class\", CLASS.xgrid);\n if (!withoutUpdate) {\n $$.xgrid.attr($$.xgridAttr).style(\"opacity\", function () {\n return +d3.select(this).attr(config.axis_rotated ? 'y1' : 'x1') === (config.axis_rotated ? $$.height : 0) ? 0 : 1;\n });\n }\n $$.xgrid.exit().remove();\n };\n\n c3_chart_internal_fn.updateYGrid = function () {\n var $$ = this,\n config = $$.config,\n gridValues = $$.yAxis.tickValues() || $$.y.ticks(config.grid_y_ticks);\n $$.ygrid = $$.main.select('.' + CLASS.ygrids).selectAll('.' + CLASS.ygrid).data(gridValues);\n $$.ygrid.enter().append('line').attr('class', CLASS.ygrid);\n $$.ygrid.attr(\"x1\", config.axis_rotated ? $$.y : 0).attr(\"x2\", config.axis_rotated ? $$.y : $$.width).attr(\"y1\", config.axis_rotated ? 0 : $$.y).attr(\"y2\", config.axis_rotated ? $$.height : $$.y);\n $$.ygrid.exit().remove();\n $$.smoothLines($$.ygrid, 'grid');\n };\n\n c3_chart_internal_fn.gridTextAnchor = function (d) {\n return d.position ? d.position : \"end\";\n };\n c3_chart_internal_fn.gridTextDx = function (d) {\n return d.position === 'start' ? 4 : d.position === 'middle' ? 0 : -4;\n };\n c3_chart_internal_fn.xGridTextX = function (d) {\n return d.position === 'start' ? -this.height : d.position === 'middle' ? -this.height / 2 : 0;\n };\n c3_chart_internal_fn.yGridTextX = function (d) {\n return d.position === 'start' ? 0 : d.position === 'middle' ? this.width / 2 : this.width;\n };\n c3_chart_internal_fn.updateGrid = function (duration) {\n var $$ = this,\n main = $$.main,\n config = $$.config,\n xgridLine,\n ygridLine,\n yv;\n\n // hide if arc type\n $$.grid.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n\n main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n if (config.grid_x_show) {\n $$.updateXGrid();\n }\n $$.xgridLines = main.select('.' + CLASS.xgridLines).selectAll('.' + CLASS.xgridLine).data(config.grid_x_lines);\n // enter\n xgridLine = $$.xgridLines.enter().append('g').attr(\"class\", function (d) {\n return CLASS.xgridLine + (d['class'] ? ' ' + d['class'] : '');\n });\n xgridLine.append('line').style(\"opacity\", 0);\n xgridLine.append('text').attr(\"text-anchor\", $$.gridTextAnchor).attr(\"transform\", config.axis_rotated ? \"\" : \"rotate(-90)\").attr('dx', $$.gridTextDx).attr('dy', -5).style(\"opacity\", 0);\n // udpate\n // done in d3.transition() of the end of this function\n // exit\n $$.xgridLines.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n\n // Y-Grid\n if (config.grid_y_show) {\n $$.updateYGrid();\n }\n $$.ygridLines = main.select('.' + CLASS.ygridLines).selectAll('.' + CLASS.ygridLine).data(config.grid_y_lines);\n // enter\n ygridLine = $$.ygridLines.enter().append('g').attr(\"class\", function (d) {\n return CLASS.ygridLine + (d['class'] ? ' ' + d['class'] : '');\n });\n ygridLine.append('line').style(\"opacity\", 0);\n ygridLine.append('text').attr(\"text-anchor\", $$.gridTextAnchor).attr(\"transform\", config.axis_rotated ? \"rotate(-90)\" : \"\").attr('dx', $$.gridTextDx).attr('dy', -5).style(\"opacity\", 0);\n // update\n yv = $$.yv.bind($$);\n $$.ygridLines.select('line').transition().duration(duration).attr(\"x1\", config.axis_rotated ? yv : 0).attr(\"x2\", config.axis_rotated ? yv : $$.width).attr(\"y1\", config.axis_rotated ? 0 : yv).attr(\"y2\", config.axis_rotated ? $$.height : yv).style(\"opacity\", 1);\n $$.ygridLines.select('text').transition().duration(duration).attr(\"x\", config.axis_rotated ? $$.xGridTextX.bind($$) : $$.yGridTextX.bind($$)).attr(\"y\", yv).text(function (d) {\n return d.text;\n }).style(\"opacity\", 1);\n // exit\n $$.ygridLines.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n };\n c3_chart_internal_fn.redrawGrid = function (withTransition) {\n var $$ = this,\n config = $$.config,\n xv = $$.xv.bind($$),\n lines = $$.xgridLines.select('line'),\n texts = $$.xgridLines.select('text');\n return [(withTransition ? lines.transition() : lines).attr(\"x1\", config.axis_rotated ? 0 : xv).attr(\"x2\", config.axis_rotated ? $$.width : xv).attr(\"y1\", config.axis_rotated ? xv : 0).attr(\"y2\", config.axis_rotated ? xv : $$.height).style(\"opacity\", 1), (withTransition ? texts.transition() : texts).attr(\"x\", config.axis_rotated ? $$.yGridTextX.bind($$) : $$.xGridTextX.bind($$)).attr(\"y\", xv).text(function (d) {\n return d.text;\n }).style(\"opacity\", 1)];\n };\n c3_chart_internal_fn.showXGridFocus = function (selectedData) {\n var $$ = this,\n config = $$.config,\n dataToShow = selectedData.filter(function (d) {\n return d && isValue(d.value);\n }),\n focusEl = $$.main.selectAll('line.' + CLASS.xgridFocus),\n xx = $$.xx.bind($$);\n if (!config.tooltip_show) {\n return;\n }\n // Hide when scatter plot exists\n if ($$.hasType('scatter') || $$.hasArcType()) {\n return;\n }\n focusEl.style(\"visibility\", \"visible\").data([dataToShow[0]]).attr(config.axis_rotated ? 'y1' : 'x1', xx).attr(config.axis_rotated ? 'y2' : 'x2', xx);\n $$.smoothLines(focusEl, 'grid');\n };\n c3_chart_internal_fn.hideXGridFocus = function () {\n this.main.select('line.' + CLASS.xgridFocus).style(\"visibility\", \"hidden\");\n };\n c3_chart_internal_fn.updateXgridFocus = function () {\n var $$ = this,\n config = $$.config;\n $$.main.select('line.' + CLASS.xgridFocus).attr(\"x1\", config.axis_rotated ? 0 : -10).attr(\"x2\", config.axis_rotated ? $$.width : -10).attr(\"y1\", config.axis_rotated ? -10 : 0).attr(\"y2\", config.axis_rotated ? -10 : $$.height);\n };\n c3_chart_internal_fn.generateGridData = function (type, scale) {\n var $$ = this,\n gridData = [],\n xDomain,\n firstYear,\n lastYear,\n i,\n tickNum = $$.main.select(\".\" + CLASS.axisX).selectAll('.tick').size();\n if (type === 'year') {\n xDomain = $$.getXDomain();\n firstYear = xDomain[0].getFullYear();\n lastYear = xDomain[1].getFullYear();\n for (i = firstYear; i <= lastYear; i++) {\n gridData.push(new Date(i + '-01-01 00:00:00'));\n }\n } else {\n gridData = scale.ticks(10);\n if (gridData.length > tickNum) {\n // use only int\n gridData = gridData.filter(function (d) {\n return (\"\" + d).indexOf('.') < 0;\n });\n }\n }\n return gridData;\n };\n c3_chart_internal_fn.getGridFilterToRemove = function (params) {\n return params ? function (line) {\n var found = false;\n [].concat(params).forEach(function (param) {\n if ('value' in param && line.value === param.value || 'class' in param && line['class'] === param['class']) {\n found = true;\n }\n });\n return found;\n } : function () {\n return true;\n };\n };\n c3_chart_internal_fn.removeGridLines = function (params, forX) {\n var $$ = this,\n config = $$.config,\n toRemove = $$.getGridFilterToRemove(params),\n toShow = function toShow(line) {\n return !toRemove(line);\n },\n classLines = forX ? CLASS.xgridLines : CLASS.ygridLines,\n classLine = forX ? CLASS.xgridLine : CLASS.ygridLine;\n $$.main.select('.' + classLines).selectAll('.' + classLine).filter(toRemove).transition().duration(config.transition_duration).style('opacity', 0).remove();\n if (forX) {\n config.grid_x_lines = config.grid_x_lines.filter(toShow);\n } else {\n config.grid_y_lines = config.grid_y_lines.filter(toShow);\n }\n };\n\n c3_chart_internal_fn.initEventRect = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.eventRects).style('fill-opacity', 0);\n };\n c3_chart_internal_fn.redrawEventRect = function () {\n var $$ = this,\n config = $$.config,\n eventRectUpdate,\n maxDataCountTarget,\n isMultipleX = $$.isMultipleX();\n\n // rects for mouseover\n var eventRects = $$.main.select('.' + CLASS.eventRects).style('cursor', config.zoom_enabled ? config.axis_rotated ? 'ns-resize' : 'ew-resize' : null).classed(CLASS.eventRectsMultiple, isMultipleX).classed(CLASS.eventRectsSingle, !isMultipleX);\n\n // clear old rects\n eventRects.selectAll('.' + CLASS.eventRect).remove();\n\n // open as public variable\n $$.eventRect = eventRects.selectAll('.' + CLASS.eventRect);\n\n if (isMultipleX) {\n eventRectUpdate = $$.eventRect.data([0]);\n // enter : only one rect will be added\n $$.generateEventRectsForMultipleXs(eventRectUpdate.enter());\n // update\n $$.updateEventRect(eventRectUpdate);\n // exit : not needed because always only one rect exists\n } else {\n // Set data and update $$.eventRect\n maxDataCountTarget = $$.getMaxDataCountTarget($$.data.targets);\n eventRects.datum(maxDataCountTarget ? maxDataCountTarget.values : []);\n $$.eventRect = eventRects.selectAll('.' + CLASS.eventRect);\n eventRectUpdate = $$.eventRect.data(function (d) {\n return d;\n });\n // enter\n $$.generateEventRectsForSingleX(eventRectUpdate.enter());\n // update\n $$.updateEventRect(eventRectUpdate);\n // exit\n eventRectUpdate.exit().remove();\n }\n };\n c3_chart_internal_fn.updateEventRect = function (eventRectUpdate) {\n var $$ = this,\n config = $$.config,\n x,\n y,\n w,\n h,\n rectW,\n rectX;\n\n // set update selection if null\n eventRectUpdate = eventRectUpdate || $$.eventRect.data(function (d) {\n return d;\n });\n\n if ($$.isMultipleX()) {\n // TODO: rotated not supported yet\n x = 0;\n y = 0;\n w = $$.width;\n h = $$.height;\n } else {\n if (($$.isCustomX() || $$.isTimeSeries()) && !$$.isCategorized()) {\n\n // update index for x that is used by prevX and nextX\n $$.updateXs();\n\n rectW = function rectW(d) {\n var prevX = $$.getPrevX(d.index),\n nextX = $$.getNextX(d.index);\n\n // if there this is a single data point make the eventRect full width (or height)\n if (prevX === null && nextX === null) {\n return config.axis_rotated ? $$.height : $$.width;\n }\n\n if (prevX === null) {\n prevX = $$.x.domain()[0];\n }\n if (nextX === null) {\n nextX = $$.x.domain()[1];\n }\n\n return Math.max(0, ($$.x(nextX) - $$.x(prevX)) / 2);\n };\n rectX = function rectX(d) {\n var prevX = $$.getPrevX(d.index),\n nextX = $$.getNextX(d.index),\n thisX = $$.data.xs[d.id][d.index];\n\n // if there this is a single data point position the eventRect at 0\n if (prevX === null && nextX === null) {\n return 0;\n }\n\n if (prevX === null) {\n prevX = $$.x.domain()[0];\n }\n\n return ($$.x(thisX) + $$.x(prevX)) / 2;\n };\n } else {\n rectW = $$.getEventRectWidth();\n rectX = function rectX(d) {\n return $$.x(d.x) - rectW / 2;\n };\n }\n x = config.axis_rotated ? 0 : rectX;\n y = config.axis_rotated ? rectX : 0;\n w = config.axis_rotated ? $$.width : rectW;\n h = config.axis_rotated ? rectW : $$.height;\n }\n\n eventRectUpdate.attr('class', $$.classEvent.bind($$)).attr(\"x\", x).attr(\"y\", y).attr(\"width\", w).attr(\"height\", h);\n };\n c3_chart_internal_fn.generateEventRectsForSingleX = function (eventRectEnter) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config;\n eventRectEnter.append(\"rect\").attr(\"class\", $$.classEvent.bind($$)).style(\"cursor\", config.data_selection_enabled && config.data_selection_grouped ? \"pointer\" : null).on('mouseover', function (d) {\n var index = d.index;\n\n if ($$.dragging || $$.flowing) {\n return;\n } // do nothing while dragging/flowing\n if ($$.hasArcType()) {\n return;\n }\n\n // Expand shapes for selection\n if (config.point_focus_expand_enabled) {\n $$.expandCircles(index, null, true);\n }\n $$.expandBars(index, null, true);\n\n // Call event handler\n $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) {\n config.data_onmouseover.call($$.api, d);\n });\n }).on('mouseout', function (d) {\n var index = d.index;\n if (!$$.config) {\n return;\n } // chart is destroyed\n if ($$.hasArcType()) {\n return;\n }\n $$.hideXGridFocus();\n $$.hideTooltip();\n // Undo expanded shapes\n $$.unexpandCircles();\n $$.unexpandBars();\n // Call event handler\n $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) {\n config.data_onmouseout.call($$.api, d);\n });\n }).on('mousemove', function (d) {\n var selectedData,\n index = d.index,\n eventRect = $$.svg.select('.' + CLASS.eventRect + '-' + index);\n\n if ($$.dragging || $$.flowing) {\n return;\n } // do nothing while dragging/flowing\n if ($$.hasArcType()) {\n return;\n }\n\n if ($$.isStepType(d) && $$.config.line_step_type === 'step-after' && d3.mouse(this)[0] < $$.x($$.getXValue(d.id, index))) {\n index -= 1;\n }\n\n // Show tooltip\n selectedData = $$.filterTargetsToShow($$.data.targets).map(function (t) {\n return $$.addName($$.getValueOnIndex(t.values, index));\n });\n\n if (config.tooltip_grouped) {\n $$.showTooltip(selectedData, this);\n $$.showXGridFocus(selectedData);\n }\n\n if (config.tooltip_grouped && (!config.data_selection_enabled || config.data_selection_grouped)) {\n return;\n }\n\n $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function () {\n d3.select(this).classed(CLASS.EXPANDED, true);\n if (config.data_selection_enabled) {\n eventRect.style('cursor', config.data_selection_grouped ? 'pointer' : null);\n }\n if (!config.tooltip_grouped) {\n $$.hideXGridFocus();\n $$.hideTooltip();\n if (!config.data_selection_grouped) {\n $$.unexpandCircles(index);\n $$.unexpandBars(index);\n }\n }\n }).filter(function (d) {\n return $$.isWithinShape(this, d);\n }).each(function (d) {\n if (config.data_selection_enabled && (config.data_selection_grouped || config.data_selection_isselectable(d))) {\n eventRect.style('cursor', 'pointer');\n }\n if (!config.tooltip_grouped) {\n $$.showTooltip([d], this);\n $$.showXGridFocus([d]);\n if (config.point_focus_expand_enabled) {\n $$.expandCircles(index, d.id, true);\n }\n $$.expandBars(index, d.id, true);\n }\n });\n }).on('click', function (d) {\n var index = d.index;\n if ($$.hasArcType() || !$$.toggleShape) {\n return;\n }\n if ($$.cancelClick) {\n $$.cancelClick = false;\n return;\n }\n if ($$.isStepType(d) && config.line_step_type === 'step-after' && d3.mouse(this)[0] < $$.x($$.getXValue(d.id, index))) {\n index -= 1;\n }\n $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) {\n if (config.data_selection_grouped || $$.isWithinShape(this, d)) {\n $$.toggleShape(this, d, index);\n $$.config.data_onclick.call($$.api, d, this);\n }\n });\n }).call(config.data_selection_draggable && $$.drag ? d3.behavior.drag().origin(Object).on('drag', function () {\n $$.drag(d3.mouse(this));\n }).on('dragstart', function () {\n $$.dragstart(d3.mouse(this));\n }).on('dragend', function () {\n $$.dragend();\n }) : function () {});\n };\n\n c3_chart_internal_fn.generateEventRectsForMultipleXs = function (eventRectEnter) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config;\n\n function mouseout() {\n $$.svg.select('.' + CLASS.eventRect).style('cursor', null);\n $$.hideXGridFocus();\n $$.hideTooltip();\n $$.unexpandCircles();\n $$.unexpandBars();\n }\n\n eventRectEnter.append('rect').attr('x', 0).attr('y', 0).attr('width', $$.width).attr('height', $$.height).attr('class', CLASS.eventRect).on('mouseout', function () {\n if (!$$.config) {\n return;\n } // chart is destroyed\n if ($$.hasArcType()) {\n return;\n }\n mouseout();\n }).on('mousemove', function () {\n var targetsToShow = $$.filterTargetsToShow($$.data.targets);\n var mouse, closest, sameXData, selectedData;\n\n if ($$.dragging) {\n return;\n } // do nothing when dragging\n if ($$.hasArcType(targetsToShow)) {\n return;\n }\n\n mouse = d3.mouse(this);\n closest = $$.findClosestFromTargets(targetsToShow, mouse);\n\n if ($$.mouseover && (!closest || closest.id !== $$.mouseover.id)) {\n config.data_onmouseout.call($$.api, $$.mouseover);\n $$.mouseover = undefined;\n }\n\n if (!closest) {\n mouseout();\n return;\n }\n\n if ($$.isScatterType(closest) || !config.tooltip_grouped) {\n sameXData = [closest];\n } else {\n sameXData = $$.filterByX(targetsToShow, closest.x);\n }\n\n // show tooltip when cursor is close to some point\n selectedData = sameXData.map(function (d) {\n return $$.addName(d);\n });\n $$.showTooltip(selectedData, this);\n\n // expand points\n if (config.point_focus_expand_enabled) {\n $$.expandCircles(closest.index, closest.id, true);\n }\n $$.expandBars(closest.index, closest.id, true);\n\n // Show xgrid focus line\n $$.showXGridFocus(selectedData);\n\n // Show cursor as pointer if point is close to mouse position\n if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n $$.svg.select('.' + CLASS.eventRect).style('cursor', 'pointer');\n if (!$$.mouseover) {\n config.data_onmouseover.call($$.api, closest);\n $$.mouseover = closest;\n }\n }\n }).on('click', function () {\n var targetsToShow = $$.filterTargetsToShow($$.data.targets);\n var mouse, closest;\n if ($$.hasArcType(targetsToShow)) {\n return;\n }\n\n mouse = d3.mouse(this);\n closest = $$.findClosestFromTargets(targetsToShow, mouse);\n if (!closest) {\n return;\n }\n // select if selection enabled\n if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < config.point_sensitivity) {\n $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(closest.id)).selectAll('.' + CLASS.shape + '-' + closest.index).each(function () {\n if (config.data_selection_grouped || $$.isWithinShape(this, closest)) {\n $$.toggleShape(this, closest, closest.index);\n $$.config.data_onclick.call($$.api, closest, this);\n }\n });\n }\n }).call(config.data_selection_draggable && $$.drag ? d3.behavior.drag().origin(Object).on('drag', function () {\n $$.drag(d3.mouse(this));\n }).on('dragstart', function () {\n $$.dragstart(d3.mouse(this));\n }).on('dragend', function () {\n $$.dragend();\n }) : function () {});\n };\n c3_chart_internal_fn.dispatchEvent = function (type, index, mouse) {\n var $$ = this,\n selector = '.' + CLASS.eventRect + (!$$.isMultipleX() ? '-' + index : ''),\n eventRect = $$.main.select(selector).node(),\n box = eventRect.getBoundingClientRect(),\n x = box.left + (mouse ? mouse[0] : 0),\n y = box.top + (mouse ? mouse[1] : 0),\n event = document.createEvent(\"MouseEvents\");\n\n event.initMouseEvent(type, true, true, window, 0, x, y, x, y, false, false, false, false, 0, null);\n eventRect.dispatchEvent(event);\n };\n\n c3_chart_internal_fn.initLegend = function () {\n var $$ = this;\n $$.legendItemTextBox = {};\n $$.legendHasRendered = false;\n $$.legend = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('legend'));\n if (!$$.config.legend_show) {\n $$.legend.style('visibility', 'hidden');\n $$.hiddenLegendIds = $$.mapToIds($$.data.targets);\n return;\n }\n // MEMO: call here to update legend box and tranlate for all\n // MEMO: translate will be upated by this, so transform not needed in updateLegend()\n $$.updateLegendWithDefaults();\n };\n c3_chart_internal_fn.updateLegendWithDefaults = function () {\n var $$ = this;\n $$.updateLegend($$.mapToIds($$.data.targets), { withTransform: false, withTransitionForTransform: false, withTransition: false });\n };\n c3_chart_internal_fn.updateSizeForLegend = function (legendHeight, legendWidth) {\n var $$ = this,\n config = $$.config,\n insetLegendPosition = {\n top: $$.isLegendTop ? $$.getCurrentPaddingTop() + config.legend_inset_y + 5.5 : $$.currentHeight - legendHeight - $$.getCurrentPaddingBottom() - config.legend_inset_y,\n left: $$.isLegendLeft ? $$.getCurrentPaddingLeft() + config.legend_inset_x + 0.5 : $$.currentWidth - legendWidth - $$.getCurrentPaddingRight() - config.legend_inset_x + 0.5\n };\n\n $$.margin3 = {\n top: $$.isLegendRight ? 0 : $$.isLegendInset ? insetLegendPosition.top : $$.currentHeight - legendHeight,\n right: NaN,\n bottom: 0,\n left: $$.isLegendRight ? $$.currentWidth - legendWidth : $$.isLegendInset ? insetLegendPosition.left : 0\n };\n };\n c3_chart_internal_fn.transformLegend = function (withTransition) {\n var $$ = this;\n (withTransition ? $$.legend.transition() : $$.legend).attr(\"transform\", $$.getTranslate('legend'));\n };\n c3_chart_internal_fn.updateLegendStep = function (step) {\n this.legendStep = step;\n };\n c3_chart_internal_fn.updateLegendItemWidth = function (w) {\n this.legendItemWidth = w;\n };\n c3_chart_internal_fn.updateLegendItemHeight = function (h) {\n this.legendItemHeight = h;\n };\n c3_chart_internal_fn.getLegendWidth = function () {\n var $$ = this;\n return $$.config.legend_show ? $$.isLegendRight || $$.isLegendInset ? $$.legendItemWidth * ($$.legendStep + 1) : $$.currentWidth : 0;\n };\n c3_chart_internal_fn.getLegendHeight = function () {\n var $$ = this,\n h = 0;\n if ($$.config.legend_show) {\n if ($$.isLegendRight) {\n h = $$.currentHeight;\n } else {\n h = Math.max(20, $$.legendItemHeight) * ($$.legendStep + 1);\n }\n }\n return h;\n };\n c3_chart_internal_fn.opacityForLegend = function (legendItem) {\n return legendItem.classed(CLASS.legendItemHidden) ? null : 1;\n };\n c3_chart_internal_fn.opacityForUnfocusedLegend = function (legendItem) {\n return legendItem.classed(CLASS.legendItemHidden) ? null : 0.3;\n };\n c3_chart_internal_fn.toggleFocusLegend = function (targetIds, focus) {\n var $$ = this;\n targetIds = $$.mapToTargetIds(targetIds);\n $$.legend.selectAll('.' + CLASS.legendItem).filter(function (id) {\n return targetIds.indexOf(id) >= 0;\n }).classed(CLASS.legendItemFocused, focus).transition().duration(100).style('opacity', function () {\n var opacity = focus ? $$.opacityForLegend : $$.opacityForUnfocusedLegend;\n return opacity.call($$, $$.d3.select(this));\n });\n };\n c3_chart_internal_fn.revertLegend = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.legend.selectAll('.' + CLASS.legendItem).classed(CLASS.legendItemFocused, false).transition().duration(100).style('opacity', function () {\n return $$.opacityForLegend(d3.select(this));\n });\n };\n c3_chart_internal_fn.showLegend = function (targetIds) {\n var $$ = this,\n config = $$.config;\n if (!config.legend_show) {\n config.legend_show = true;\n $$.legend.style('visibility', 'visible');\n if (!$$.legendHasRendered) {\n $$.updateLegendWithDefaults();\n }\n }\n $$.removeHiddenLegendIds(targetIds);\n $$.legend.selectAll($$.selectorLegends(targetIds)).style('visibility', 'visible').transition().style('opacity', function () {\n return $$.opacityForLegend($$.d3.select(this));\n });\n };\n c3_chart_internal_fn.hideLegend = function (targetIds) {\n var $$ = this,\n config = $$.config;\n if (config.legend_show && isEmpty(targetIds)) {\n config.legend_show = false;\n $$.legend.style('visibility', 'hidden');\n }\n $$.addHiddenLegendIds(targetIds);\n $$.legend.selectAll($$.selectorLegends(targetIds)).style('opacity', 0).style('visibility', 'hidden');\n };\n c3_chart_internal_fn.clearLegendItemTextBoxCache = function () {\n this.legendItemTextBox = {};\n };\n c3_chart_internal_fn.updateLegend = function (targetIds, options, transitions) {\n var $$ = this,\n config = $$.config;\n var xForLegend, xForLegendText, xForLegendRect, yForLegend, yForLegendText, yForLegendRect, x1ForLegendTile, x2ForLegendTile, yForLegendTile;\n var paddingTop = 4,\n paddingRight = 10,\n maxWidth = 0,\n maxHeight = 0,\n posMin = 10,\n tileWidth = config.legend_item_tile_width + 5;\n var l,\n totalLength = 0,\n offsets = {},\n widths = {},\n heights = {},\n margins = [0],\n steps = {},\n step = 0;\n var withTransition, withTransitionForTransform;\n var texts, rects, tiles, background;\n\n // Skip elements when their name is set to null\n targetIds = targetIds.filter(function (id) {\n return !isDefined(config.data_names[id]) || config.data_names[id] !== null;\n });\n\n options = options || {};\n withTransition = getOption(options, \"withTransition\", true);\n withTransitionForTransform = getOption(options, \"withTransitionForTransform\", true);\n\n function getTextBox(textElement, id) {\n if (!$$.legendItemTextBox[id]) {\n $$.legendItemTextBox[id] = $$.getTextRect(textElement.textContent, CLASS.legendItem, textElement);\n }\n return $$.legendItemTextBox[id];\n }\n\n function updatePositions(textElement, id, index) {\n var reset = index === 0,\n isLast = index === targetIds.length - 1,\n box = getTextBox(textElement, id),\n itemWidth = box.width + tileWidth + (isLast && !($$.isLegendRight || $$.isLegendInset) ? 0 : paddingRight) + config.legend_padding,\n itemHeight = box.height + paddingTop,\n itemLength = $$.isLegendRight || $$.isLegendInset ? itemHeight : itemWidth,\n areaLength = $$.isLegendRight || $$.isLegendInset ? $$.getLegendHeight() : $$.getLegendWidth(),\n margin,\n maxLength;\n\n // MEMO: care about condifion of step, totalLength\n function updateValues(id, withoutStep) {\n if (!withoutStep) {\n margin = (areaLength - totalLength - itemLength) / 2;\n if (margin < posMin) {\n margin = (areaLength - itemLength) / 2;\n totalLength = 0;\n step++;\n }\n }\n steps[id] = step;\n margins[step] = $$.isLegendInset ? 10 : margin;\n offsets[id] = totalLength;\n totalLength += itemLength;\n }\n\n if (reset) {\n totalLength = 0;\n step = 0;\n maxWidth = 0;\n maxHeight = 0;\n }\n\n if (config.legend_show && !$$.isLegendToShow(id)) {\n widths[id] = heights[id] = steps[id] = offsets[id] = 0;\n return;\n }\n\n widths[id] = itemWidth;\n heights[id] = itemHeight;\n\n if (!maxWidth || itemWidth >= maxWidth) {\n maxWidth = itemWidth;\n }\n if (!maxHeight || itemHeight >= maxHeight) {\n maxHeight = itemHeight;\n }\n maxLength = $$.isLegendRight || $$.isLegendInset ? maxHeight : maxWidth;\n\n if (config.legend_equally) {\n Object.keys(widths).forEach(function (id) {\n widths[id] = maxWidth;\n });\n Object.keys(heights).forEach(function (id) {\n heights[id] = maxHeight;\n });\n margin = (areaLength - maxLength * targetIds.length) / 2;\n if (margin < posMin) {\n totalLength = 0;\n step = 0;\n targetIds.forEach(function (id) {\n updateValues(id);\n });\n } else {\n updateValues(id, true);\n }\n } else {\n updateValues(id);\n }\n }\n\n if ($$.isLegendInset) {\n step = config.legend_inset_step ? config.legend_inset_step : targetIds.length;\n $$.updateLegendStep(step);\n }\n\n if ($$.isLegendRight) {\n xForLegend = function xForLegend(id) {\n return maxWidth * steps[id];\n };\n yForLegend = function yForLegend(id) {\n return margins[steps[id]] + offsets[id];\n };\n } else if ($$.isLegendInset) {\n xForLegend = function xForLegend(id) {\n return maxWidth * steps[id] + 10;\n };\n yForLegend = function yForLegend(id) {\n return margins[steps[id]] + offsets[id];\n };\n } else {\n xForLegend = function xForLegend(id) {\n return margins[steps[id]] + offsets[id];\n };\n yForLegend = function yForLegend(id) {\n return maxHeight * steps[id];\n };\n }\n xForLegendText = function xForLegendText(id, i) {\n return xForLegend(id, i) + 4 + config.legend_item_tile_width;\n };\n yForLegendText = function yForLegendText(id, i) {\n return yForLegend(id, i) + 9;\n };\n xForLegendRect = function xForLegendRect(id, i) {\n return xForLegend(id, i);\n };\n yForLegendRect = function yForLegendRect(id, i) {\n return yForLegend(id, i) - 5;\n };\n x1ForLegendTile = function x1ForLegendTile(id, i) {\n return xForLegend(id, i) - 2;\n };\n x2ForLegendTile = function x2ForLegendTile(id, i) {\n return xForLegend(id, i) - 2 + config.legend_item_tile_width;\n };\n yForLegendTile = function yForLegendTile(id, i) {\n return yForLegend(id, i) + 4;\n };\n\n // Define g for legend area\n l = $$.legend.selectAll('.' + CLASS.legendItem).data(targetIds).enter().append('g').attr('class', function (id) {\n return $$.generateClass(CLASS.legendItem, id);\n }).style('visibility', function (id) {\n return $$.isLegendToShow(id) ? 'visible' : 'hidden';\n }).style('cursor', 'pointer').on('click', function (id) {\n if (config.legend_item_onclick) {\n config.legend_item_onclick.call($$, id);\n } else {\n if ($$.d3.event.altKey) {\n $$.api.hide();\n $$.api.show(id);\n } else {\n $$.api.toggle(id);\n $$.isTargetToShow(id) ? $$.api.focus(id) : $$.api.revert();\n }\n }\n }).on('mouseover', function (id) {\n if (config.legend_item_onmouseover) {\n config.legend_item_onmouseover.call($$, id);\n } else {\n $$.d3.select(this).classed(CLASS.legendItemFocused, true);\n if (!$$.transiting && $$.isTargetToShow(id)) {\n $$.api.focus(id);\n }\n }\n }).on('mouseout', function (id) {\n if (config.legend_item_onmouseout) {\n config.legend_item_onmouseout.call($$, id);\n } else {\n $$.d3.select(this).classed(CLASS.legendItemFocused, false);\n $$.api.revert();\n }\n });\n l.append('text').text(function (id) {\n return isDefined(config.data_names[id]) ? config.data_names[id] : id;\n }).each(function (id, i) {\n updatePositions(this, id, i);\n }).style(\"pointer-events\", \"none\").attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendText : -200).attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendText);\n l.append('rect').attr(\"class\", CLASS.legendItemEvent).style('fill-opacity', 0).attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendRect : -200).attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendRect);\n l.append('line').attr('class', CLASS.legendItemTile).style('stroke', $$.color).style(\"pointer-events\", \"none\").attr('x1', $$.isLegendRight || $$.isLegendInset ? x1ForLegendTile : -200).attr('y1', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile).attr('x2', $$.isLegendRight || $$.isLegendInset ? x2ForLegendTile : -200).attr('y2', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendTile).attr('stroke-width', config.legend_item_tile_height);\n\n // Set background for inset legend\n background = $$.legend.select('.' + CLASS.legendBackground + ' rect');\n if ($$.isLegendInset && maxWidth > 0 && background.size() === 0) {\n background = $$.legend.insert('g', '.' + CLASS.legendItem).attr(\"class\", CLASS.legendBackground).append('rect');\n }\n\n texts = $$.legend.selectAll('text').data(targetIds).text(function (id) {\n return isDefined(config.data_names[id]) ? config.data_names[id] : id;\n }) // MEMO: needed for update\n .each(function (id, i) {\n updatePositions(this, id, i);\n });\n (withTransition ? texts.transition() : texts).attr('x', xForLegendText).attr('y', yForLegendText);\n\n rects = $$.legend.selectAll('rect.' + CLASS.legendItemEvent).data(targetIds);\n (withTransition ? rects.transition() : rects).attr('width', function (id) {\n return widths[id];\n }).attr('height', function (id) {\n return heights[id];\n }).attr('x', xForLegendRect).attr('y', yForLegendRect);\n\n tiles = $$.legend.selectAll('line.' + CLASS.legendItemTile).data(targetIds);\n (withTransition ? tiles.transition() : tiles).style('stroke', $$.levelColor ? function (id) {\n return $$.levelColor($$.cache[id].values[0].value);\n } : $$.color).attr('x1', x1ForLegendTile).attr('y1', yForLegendTile).attr('x2', x2ForLegendTile).attr('y2', yForLegendTile);\n\n if (background) {\n (withTransition ? background.transition() : background).attr('height', $$.getLegendHeight() - 12).attr('width', maxWidth * (step + 1) + 10);\n }\n\n // toggle legend state\n $$.legend.selectAll('.' + CLASS.legendItem).classed(CLASS.legendItemHidden, function (id) {\n return !$$.isTargetToShow(id);\n });\n\n // Update all to reflect change of legend\n $$.updateLegendItemWidth(maxWidth);\n $$.updateLegendItemHeight(maxHeight);\n $$.updateLegendStep(step);\n // Update size and scale\n $$.updateSizes();\n $$.updateScales();\n $$.updateSvgSize();\n // Update g positions\n $$.transformAll(withTransitionForTransform, transitions);\n $$.legendHasRendered = true;\n };\n\n c3_chart_internal_fn.initRegion = function () {\n var $$ = this;\n $$.region = $$.main.append('g').attr(\"clip-path\", $$.clipPath).attr(\"class\", CLASS.regions);\n };\n c3_chart_internal_fn.updateRegion = function (duration) {\n var $$ = this,\n config = $$.config;\n\n // hide if arc type\n $$.region.style('visibility', $$.hasArcType() ? 'hidden' : 'visible');\n\n $$.mainRegion = $$.main.select('.' + CLASS.regions).selectAll('.' + CLASS.region).data(config.regions);\n $$.mainRegion.enter().append('g').append('rect').style(\"fill-opacity\", 0);\n $$.mainRegion.attr('class', $$.classRegion.bind($$));\n $$.mainRegion.exit().transition().duration(duration).style(\"opacity\", 0).remove();\n };\n c3_chart_internal_fn.redrawRegion = function (withTransition) {\n var $$ = this,\n regions = $$.mainRegion.selectAll('rect').each(function () {\n // data is binded to g and it's not transferred to rect (child node) automatically,\n // then data of each rect has to be updated manually.\n // TODO: there should be more efficient way to solve this?\n var parentData = $$.d3.select(this.parentNode).datum();\n $$.d3.select(this).datum(parentData);\n }),\n x = $$.regionX.bind($$),\n y = $$.regionY.bind($$),\n w = $$.regionWidth.bind($$),\n h = $$.regionHeight.bind($$);\n return [(withTransition ? regions.transition() : regions).attr(\"x\", x).attr(\"y\", y).attr(\"width\", w).attr(\"height\", h).style(\"fill-opacity\", function (d) {\n return isValue(d.opacity) ? d.opacity : 0.1;\n })];\n };\n c3_chart_internal_fn.regionX = function (d) {\n var $$ = this,\n config = $$.config,\n xPos,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n if (d.axis === 'y' || d.axis === 'y2') {\n xPos = config.axis_rotated ? 'start' in d ? yScale(d.start) : 0 : 0;\n } else {\n xPos = config.axis_rotated ? 0 : 'start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0;\n }\n return xPos;\n };\n c3_chart_internal_fn.regionY = function (d) {\n var $$ = this,\n config = $$.config,\n yPos,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n if (d.axis === 'y' || d.axis === 'y2') {\n yPos = config.axis_rotated ? 0 : 'end' in d ? yScale(d.end) : 0;\n } else {\n yPos = config.axis_rotated ? 'start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0 : 0;\n }\n return yPos;\n };\n c3_chart_internal_fn.regionWidth = function (d) {\n var $$ = this,\n config = $$.config,\n start = $$.regionX(d),\n end,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n if (d.axis === 'y' || d.axis === 'y2') {\n end = config.axis_rotated ? 'end' in d ? yScale(d.end) : $$.width : $$.width;\n } else {\n end = config.axis_rotated ? $$.width : 'end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.width;\n }\n return end < start ? 0 : end - start;\n };\n c3_chart_internal_fn.regionHeight = function (d) {\n var $$ = this,\n config = $$.config,\n start = this.regionY(d),\n end,\n yScale = d.axis === 'y' ? $$.y : $$.y2;\n if (d.axis === 'y' || d.axis === 'y2') {\n end = config.axis_rotated ? $$.height : 'start' in d ? yScale(d.start) : $$.height;\n } else {\n end = config.axis_rotated ? 'end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.height : $$.height;\n }\n return end < start ? 0 : end - start;\n };\n c3_chart_internal_fn.isRegionOnX = function (d) {\n return !d.axis || d.axis === 'x';\n };\n\n c3_chart_internal_fn.getScale = function (min, max, forTimeseries) {\n return (forTimeseries ? this.d3.time.scale() : this.d3.scale.linear()).range([min, max]);\n };\n c3_chart_internal_fn.getX = function (min, max, domain, offset) {\n var $$ = this,\n scale = $$.getScale(min, max, $$.isTimeSeries()),\n _scale = domain ? scale.domain(domain) : scale,\n key;\n // Define customized scale if categorized axis\n if ($$.isCategorized()) {\n offset = offset || function () {\n return 0;\n };\n scale = function scale(d, raw) {\n var v = _scale(d) + offset(d);\n return raw ? v : Math.ceil(v);\n };\n } else {\n scale = function scale(d, raw) {\n var v = _scale(d);\n return raw ? v : Math.ceil(v);\n };\n }\n // define functions\n for (key in _scale) {\n scale[key] = _scale[key];\n }\n scale.orgDomain = function () {\n return _scale.domain();\n };\n // define custom domain() for categorized axis\n if ($$.isCategorized()) {\n scale.domain = function (domain) {\n if (!arguments.length) {\n domain = this.orgDomain();\n return [domain[0], domain[1] + 1];\n }\n _scale.domain(domain);\n return scale;\n };\n }\n return scale;\n };\n c3_chart_internal_fn.getY = function (min, max, domain) {\n var scale = this.getScale(min, max, this.isTimeSeriesY());\n if (domain) {\n scale.domain(domain);\n }\n return scale;\n };\n c3_chart_internal_fn.getYScale = function (id) {\n return this.axis.getId(id) === 'y2' ? this.y2 : this.y;\n };\n c3_chart_internal_fn.getSubYScale = function (id) {\n return this.axis.getId(id) === 'y2' ? this.subY2 : this.subY;\n };\n c3_chart_internal_fn.updateScales = function () {\n var $$ = this,\n config = $$.config,\n forInit = !$$.x;\n // update edges\n $$.xMin = config.axis_rotated ? 1 : 0;\n $$.xMax = config.axis_rotated ? $$.height : $$.width;\n $$.yMin = config.axis_rotated ? 0 : $$.height;\n $$.yMax = config.axis_rotated ? $$.width : 1;\n $$.subXMin = $$.xMin;\n $$.subXMax = $$.xMax;\n $$.subYMin = config.axis_rotated ? 0 : $$.height2;\n $$.subYMax = config.axis_rotated ? $$.width2 : 1;\n // update scales\n $$.x = $$.getX($$.xMin, $$.xMax, forInit ? undefined : $$.x.orgDomain(), function () {\n return $$.xAxis.tickOffset();\n });\n $$.y = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y_default : $$.y.domain());\n $$.y2 = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y2_default : $$.y2.domain());\n $$.subX = $$.getX($$.xMin, $$.xMax, $$.orgXDomain, function (d) {\n return d % 1 ? 0 : $$.subXAxis.tickOffset();\n });\n $$.subY = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y_default : $$.subY.domain());\n $$.subY2 = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y2_default : $$.subY2.domain());\n // update axes\n $$.xAxisTickFormat = $$.axis.getXAxisTickFormat();\n $$.xAxisTickValues = $$.axis.getXAxisTickValues();\n $$.yAxisTickValues = $$.axis.getYAxisTickValues();\n $$.y2AxisTickValues = $$.axis.getY2AxisTickValues();\n\n $$.xAxis = $$.axis.getXAxis($$.x, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n $$.subXAxis = $$.axis.getXAxis($$.subX, $$.subXOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer);\n $$.yAxis = $$.axis.getYAxis($$.y, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, config.axis_y_tick_outer);\n $$.y2Axis = $$.axis.getYAxis($$.y2, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, config.axis_y2_tick_outer);\n\n // Set initialized scales to brush and zoom\n if (!forInit) {\n if ($$.brush) {\n $$.brush.scale($$.subX);\n }\n if (config.zoom_enabled) {\n $$.zoom.scale($$.x);\n }\n }\n // update for arc\n if ($$.updateArc) {\n $$.updateArc();\n }\n };\n\n c3_chart_internal_fn.selectPoint = function (target, d, i) {\n var $$ = this,\n config = $$.config,\n cx = (config.axis_rotated ? $$.circleY : $$.circleX).bind($$),\n cy = (config.axis_rotated ? $$.circleX : $$.circleY).bind($$),\n r = $$.pointSelectR.bind($$);\n config.data_onselected.call($$.api, d, target.node());\n // add selected-circle on low layer g\n $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i).data([d]).enter().append('circle').attr(\"class\", function () {\n return $$.generateClass(CLASS.selectedCircle, i);\n }).attr(\"cx\", cx).attr(\"cy\", cy).attr(\"stroke\", function () {\n return $$.color(d);\n }).attr(\"r\", function (d) {\n return $$.pointSelectR(d) * 1.4;\n }).transition().duration(100).attr(\"r\", r);\n };\n c3_chart_internal_fn.unselectPoint = function (target, d, i) {\n var $$ = this;\n $$.config.data_onunselected.call($$.api, d, target.node());\n // remove selected-circle from low layer g\n $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i).transition().duration(100).attr('r', 0).remove();\n };\n c3_chart_internal_fn.togglePoint = function (selected, target, d, i) {\n selected ? this.selectPoint(target, d, i) : this.unselectPoint(target, d, i);\n };\n c3_chart_internal_fn.selectPath = function (target, d) {\n var $$ = this;\n $$.config.data_onselected.call($$, d, target.node());\n if ($$.config.interaction_brighten) {\n target.transition().duration(100).style(\"fill\", function () {\n return $$.d3.rgb($$.color(d)).brighter(0.75);\n });\n }\n };\n c3_chart_internal_fn.unselectPath = function (target, d) {\n var $$ = this;\n $$.config.data_onunselected.call($$, d, target.node());\n if ($$.config.interaction_brighten) {\n target.transition().duration(100).style(\"fill\", function () {\n return $$.color(d);\n });\n }\n };\n c3_chart_internal_fn.togglePath = function (selected, target, d, i) {\n selected ? this.selectPath(target, d, i) : this.unselectPath(target, d, i);\n };\n c3_chart_internal_fn.getToggle = function (that, d) {\n var $$ = this,\n toggle;\n if (that.nodeName === 'circle') {\n if ($$.isStepType(d)) {\n // circle is hidden in step chart, so treat as within the click area\n toggle = function toggle() {}; // TODO: how to select step chart?\n } else {\n toggle = $$.togglePoint;\n }\n } else if (that.nodeName === 'path') {\n toggle = $$.togglePath;\n }\n return toggle;\n };\n c3_chart_internal_fn.toggleShape = function (that, d, i) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n shape = d3.select(that),\n isSelected = shape.classed(CLASS.SELECTED),\n toggle = $$.getToggle(that, d).bind($$);\n\n if (config.data_selection_enabled && config.data_selection_isselectable(d)) {\n if (!config.data_selection_multiple) {\n $$.main.selectAll('.' + CLASS.shapes + (config.data_selection_grouped ? $$.getTargetSelectorSuffix(d.id) : \"\")).selectAll('.' + CLASS.shape).each(function (d, i) {\n var shape = d3.select(this);\n if (shape.classed(CLASS.SELECTED)) {\n toggle(false, shape.classed(CLASS.SELECTED, false), d, i);\n }\n });\n }\n shape.classed(CLASS.SELECTED, !isSelected);\n toggle(!isSelected, shape, d, i);\n }\n };\n\n c3_chart_internal_fn.initBar = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartBars);\n };\n c3_chart_internal_fn.updateTargetsForBar = function (targets) {\n var $$ = this,\n config = $$.config,\n mainBarUpdate,\n mainBarEnter,\n classChartBar = $$.classChartBar.bind($$),\n classBars = $$.classBars.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainBarUpdate = $$.main.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar).data(targets).attr('class', function (d) {\n return classChartBar(d) + classFocus(d);\n });\n mainBarEnter = mainBarUpdate.enter().append('g').attr('class', classChartBar).style(\"pointer-events\", \"none\");\n // Bars for each data\n mainBarEnter.append('g').attr(\"class\", classBars).style(\"cursor\", function (d) {\n return config.data_selection_isselectable(d) ? \"pointer\" : null;\n });\n };\n c3_chart_internal_fn.updateBar = function (durationForExit) {\n var $$ = this,\n barData = $$.barData.bind($$),\n classBar = $$.classBar.bind($$),\n initialOpacity = $$.initialOpacity.bind($$),\n color = function color(d) {\n return $$.color(d.id);\n };\n $$.mainBar = $$.main.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar).data(barData);\n $$.mainBar.enter().append('path').attr(\"class\", classBar).style(\"stroke\", color).style(\"fill\", color);\n $$.mainBar.style(\"opacity\", initialOpacity);\n $$.mainBar.exit().transition().duration(durationForExit).remove();\n };\n c3_chart_internal_fn.redrawBar = function (drawBar, withTransition) {\n return [(withTransition ? this.mainBar.transition(Math.random().toString()) : this.mainBar).attr('d', drawBar).style(\"stroke\", this.color).style(\"fill\", this.color).style(\"opacity\", 1)];\n };\n c3_chart_internal_fn.getBarW = function (axis, barTargetsNum) {\n var $$ = this,\n config = $$.config,\n w = typeof config.bar_width === 'number' ? config.bar_width : barTargetsNum ? axis.tickInterval() * config.bar_width_ratio / barTargetsNum : 0;\n return config.bar_width_max && w > config.bar_width_max ? config.bar_width_max : w;\n };\n c3_chart_internal_fn.getBars = function (i, id) {\n var $$ = this;\n return (id ? $$.main.selectAll('.' + CLASS.bars + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.bar + (isValue(i) ? '-' + i : ''));\n };\n c3_chart_internal_fn.expandBars = function (i, id, reset) {\n var $$ = this;\n if (reset) {\n $$.unexpandBars();\n }\n $$.getBars(i, id).classed(CLASS.EXPANDED, true);\n };\n c3_chart_internal_fn.unexpandBars = function (i) {\n var $$ = this;\n $$.getBars(i).classed(CLASS.EXPANDED, false);\n };\n c3_chart_internal_fn.generateDrawBar = function (barIndices, isSub) {\n var $$ = this,\n config = $$.config,\n getPoints = $$.generateGetBarPoints(barIndices, isSub);\n return function (d, i) {\n // 4 points that make a bar\n var points = getPoints(d, i);\n\n // switch points if axis is rotated, not applicable for sub chart\n var indexX = config.axis_rotated ? 1 : 0;\n var indexY = config.axis_rotated ? 0 : 1;\n\n var path = 'M ' + points[0][indexX] + ',' + points[0][indexY] + ' ' + 'L' + points[1][indexX] + ',' + points[1][indexY] + ' ' + 'L' + points[2][indexX] + ',' + points[2][indexY] + ' ' + 'L' + points[3][indexX] + ',' + points[3][indexY] + ' ' + 'z';\n\n return path;\n };\n };\n c3_chart_internal_fn.generateGetBarPoints = function (barIndices, isSub) {\n var $$ = this,\n axis = isSub ? $$.subXAxis : $$.xAxis,\n barTargetsNum = barIndices.__max__ + 1,\n barW = $$.getBarW(axis, barTargetsNum),\n barX = $$.getShapeX(barW, barTargetsNum, barIndices, !!isSub),\n barY = $$.getShapeY(!!isSub),\n barOffset = $$.getShapeOffset($$.isBarType, barIndices, !!isSub),\n barSpaceOffset = barW * ($$.config.bar_space / 2),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = barOffset(d, i) || y0,\n // offset is for stacked bar chart\n posX = barX(d),\n posY = barY(d);\n // fix posY not to overflow opposite quadrant\n if ($$.config.axis_rotated) {\n if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n posY = y0;\n }\n }\n // 4 points that make a bar\n return [[posX + barSpaceOffset, offset], [posX + barSpaceOffset, posY - (y0 - offset)], [posX + barW - barSpaceOffset, posY - (y0 - offset)], [posX + barW - barSpaceOffset, offset]];\n };\n };\n c3_chart_internal_fn.isWithinBar = function (that) {\n var mouse = this.d3.mouse(that),\n box = that.getBoundingClientRect(),\n seg0 = that.pathSegList.getItem(0),\n seg1 = that.pathSegList.getItem(1),\n x = Math.min(seg0.x, seg1.x),\n y = Math.min(seg0.y, seg1.y),\n w = box.width,\n h = box.height,\n offset = 2,\n sx = x - offset,\n ex = x + w + offset,\n sy = y + h + offset,\n ey = y - offset;\n return sx < mouse[0] && mouse[0] < ex && ey < mouse[1] && mouse[1] < sy;\n };\n\n c3_chart_internal_fn.getShapeIndices = function (typeFilter) {\n var $$ = this,\n config = $$.config,\n indices = {},\n i = 0,\n j,\n k;\n $$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$)).forEach(function (d) {\n for (j = 0; j < config.data_groups.length; j++) {\n if (config.data_groups[j].indexOf(d.id) < 0) {\n continue;\n }\n for (k = 0; k < config.data_groups[j].length; k++) {\n if (config.data_groups[j][k] in indices) {\n indices[d.id] = indices[config.data_groups[j][k]];\n break;\n }\n }\n }\n if (isUndefined(indices[d.id])) {\n indices[d.id] = i++;\n }\n });\n indices.__max__ = i - 1;\n return indices;\n };\n c3_chart_internal_fn.getShapeX = function (offset, targetsNum, indices, isSub) {\n var $$ = this,\n scale = isSub ? $$.subX : $$.x;\n return function (d) {\n var index = d.id in indices ? indices[d.id] : 0;\n return d.x || d.x === 0 ? scale(d.x) - offset * (targetsNum / 2 - index) : 0;\n };\n };\n c3_chart_internal_fn.getShapeY = function (isSub) {\n var $$ = this;\n return function (d) {\n var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id);\n return scale(d.value);\n };\n };\n c3_chart_internal_fn.getShapeOffset = function (typeFilter, indices, isSub) {\n var $$ = this,\n targets = $$.orderTargets($$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$))),\n targetIds = targets.map(function (t) {\n return t.id;\n });\n return function (d, i) {\n var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id),\n y0 = scale(0),\n offset = y0;\n targets.forEach(function (t) {\n var values = $$.isStepType(d) ? $$.convertValuesToStep(t.values) : t.values;\n if (t.id === d.id || indices[t.id] !== indices[d.id]) {\n return;\n }\n if (targetIds.indexOf(t.id) < targetIds.indexOf(d.id)) {\n // check if the x values line up\n if (typeof values[i] === 'undefined' || +values[i].x !== +d.x) {\n // \"+\" for timeseries\n // if not, try to find the value that does line up\n i = -1;\n values.forEach(function (v, j) {\n if (v.x === d.x) {\n i = j;\n }\n });\n }\n if (i in values && values[i].value * d.value >= 0) {\n offset += scale(values[i].value) - y0;\n }\n }\n });\n return offset;\n };\n };\n c3_chart_internal_fn.isWithinShape = function (that, d) {\n var $$ = this,\n shape = $$.d3.select(that),\n isWithin;\n if (!$$.isTargetToShow(d.id)) {\n isWithin = false;\n } else if (that.nodeName === 'circle') {\n isWithin = $$.isStepType(d) ? $$.isWithinStep(that, $$.getYScale(d.id)(d.value)) : $$.isWithinCircle(that, $$.pointSelectR(d) * 1.5);\n } else if (that.nodeName === 'path') {\n isWithin = shape.classed(CLASS.bar) ? $$.isWithinBar(that) : true;\n }\n return isWithin;\n };\n\n c3_chart_internal_fn.getInterpolate = function (d) {\n var $$ = this,\n interpolation = $$.isInterpolationType($$.config.spline_interpolation_type) ? $$.config.spline_interpolation_type : 'cardinal';\n return $$.isSplineType(d) ? interpolation : $$.isStepType(d) ? $$.config.line_step_type : \"linear\";\n };\n\n c3_chart_internal_fn.initLine = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartLines);\n };\n c3_chart_internal_fn.updateTargetsForLine = function (targets) {\n var $$ = this,\n config = $$.config,\n mainLineUpdate,\n mainLineEnter,\n classChartLine = $$.classChartLine.bind($$),\n classLines = $$.classLines.bind($$),\n classAreas = $$.classAreas.bind($$),\n classCircles = $$.classCircles.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainLineUpdate = $$.main.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine).data(targets).attr('class', function (d) {\n return classChartLine(d) + classFocus(d);\n });\n mainLineEnter = mainLineUpdate.enter().append('g').attr('class', classChartLine).style('opacity', 0).style(\"pointer-events\", \"none\");\n // Lines for each data\n mainLineEnter.append('g').attr(\"class\", classLines);\n // Areas\n mainLineEnter.append('g').attr('class', classAreas);\n // Circles for each data point on lines\n mainLineEnter.append('g').attr(\"class\", function (d) {\n return $$.generateClass(CLASS.selectedCircles, d.id);\n });\n mainLineEnter.append('g').attr(\"class\", classCircles).style(\"cursor\", function (d) {\n return config.data_selection_isselectable(d) ? \"pointer\" : null;\n });\n // Update date for selected circles\n targets.forEach(function (t) {\n $$.main.selectAll('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(t.id)).selectAll('.' + CLASS.selectedCircle).each(function (d) {\n d.value = t.values[d.index].value;\n });\n });\n // MEMO: can not keep same color...\n //mainLineUpdate.exit().remove();\n };\n c3_chart_internal_fn.updateLine = function (durationForExit) {\n var $$ = this;\n $$.mainLine = $$.main.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line).data($$.lineData.bind($$));\n $$.mainLine.enter().append('path').attr('class', $$.classLine.bind($$)).style(\"stroke\", $$.color);\n $$.mainLine.style(\"opacity\", $$.initialOpacity.bind($$)).style('shape-rendering', function (d) {\n return $$.isStepType(d) ? 'crispEdges' : '';\n }).attr('transform', null);\n $$.mainLine.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n };\n c3_chart_internal_fn.redrawLine = function (drawLine, withTransition) {\n return [(withTransition ? this.mainLine.transition(Math.random().toString()) : this.mainLine).attr(\"d\", drawLine).style(\"stroke\", this.color).style(\"opacity\", 1)];\n };\n c3_chart_internal_fn.generateDrawLine = function (lineIndices, isSub) {\n var $$ = this,\n config = $$.config,\n line = $$.d3.svg.line(),\n getPoints = $$.generateGetLinePoints(lineIndices, isSub),\n yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n xValue = function xValue(d) {\n return (isSub ? $$.subxx : $$.xx).call($$, d);\n },\n yValue = function yValue(d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)(d.value);\n };\n\n line = config.axis_rotated ? line.x(yValue).y(xValue) : line.x(xValue).y(yValue);\n if (!config.line_connectNull) {\n line = line.defined(function (d) {\n return d.value != null;\n });\n }\n return function (d) {\n var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n x = isSub ? $$.subX : $$.x,\n y = yScaleGetter.call($$, d.id),\n x0 = 0,\n y0 = 0,\n path;\n if ($$.isLineType(d)) {\n if (config.data_regions[d.id]) {\n path = $$.lineWithRegions(values, x, y, config.data_regions[d.id]);\n } else {\n if ($$.isStepType(d)) {\n values = $$.convertValuesToStep(values);\n }\n path = line.interpolate($$.getInterpolate(d))(values);\n }\n } else {\n if (values[0]) {\n x0 = x(values[0].x);\n y0 = y(values[0].value);\n }\n path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n }\n return path ? path : \"M 0 0\";\n };\n };\n c3_chart_internal_fn.generateGetLinePoints = function (lineIndices, isSub) {\n // partial duplication of generateGetBarPoints\n var $$ = this,\n config = $$.config,\n lineTargetsNum = lineIndices.__max__ + 1,\n x = $$.getShapeX(0, lineTargetsNum, lineIndices, !!isSub),\n y = $$.getShapeY(!!isSub),\n lineOffset = $$.getShapeOffset($$.isLineType, lineIndices, !!isSub),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = lineOffset(d, i) || y0,\n // offset is for stacked area chart\n posX = x(d),\n posY = y(d);\n // fix posY not to overflow opposite quadrant\n if (config.axis_rotated) {\n if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n posY = y0;\n }\n }\n // 1 point that marks the line position\n return [[posX, posY - (y0 - offset)], [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, posY - (y0 - offset)] // needed for compatibility\n ];\n };\n };\n\n c3_chart_internal_fn.lineWithRegions = function (d, x, y, _regions) {\n var $$ = this,\n config = $$.config,\n prev = -1,\n i,\n j,\n s = \"M\",\n sWithRegion,\n xp,\n yp,\n dx,\n dy,\n dd,\n diff,\n diffx2,\n xOffset = $$.isCategorized() ? 0.5 : 0,\n xValue,\n yValue,\n regions = [];\n\n function isWithinRegions(x, regions) {\n var i;\n for (i = 0; i < regions.length; i++) {\n if (regions[i].start < x && x <= regions[i].end) {\n return true;\n }\n }\n return false;\n }\n\n // Check start/end of regions\n if (isDefined(_regions)) {\n for (i = 0; i < _regions.length; i++) {\n regions[i] = {};\n if (isUndefined(_regions[i].start)) {\n regions[i].start = d[0].x;\n } else {\n regions[i].start = $$.isTimeSeries() ? $$.parseDate(_regions[i].start) : _regions[i].start;\n }\n if (isUndefined(_regions[i].end)) {\n regions[i].end = d[d.length - 1].x;\n } else {\n regions[i].end = $$.isTimeSeries() ? $$.parseDate(_regions[i].end) : _regions[i].end;\n }\n }\n }\n\n // Set scales\n xValue = config.axis_rotated ? function (d) {\n return y(d.value);\n } : function (d) {\n return x(d.x);\n };\n yValue = config.axis_rotated ? function (d) {\n return x(d.x);\n } : function (d) {\n return y(d.value);\n };\n\n // Define svg generator function for region\n function generateM(points) {\n return 'M' + points[0][0] + ' ' + points[0][1] + ' ' + points[1][0] + ' ' + points[1][1];\n }\n if ($$.isTimeSeries()) {\n sWithRegion = function sWithRegion(d0, d1, j, diff) {\n var x0 = d0.x.getTime(),\n x_diff = d1.x - d0.x,\n xv0 = new Date(x0 + x_diff * j),\n xv1 = new Date(x0 + x_diff * (j + diff)),\n points;\n if (config.axis_rotated) {\n points = [[y(yp(j)), x(xv0)], [y(yp(j + diff)), x(xv1)]];\n } else {\n points = [[x(xv0), y(yp(j))], [x(xv1), y(yp(j + diff))]];\n }\n return generateM(points);\n };\n } else {\n sWithRegion = function sWithRegion(d0, d1, j, diff) {\n var points;\n if (config.axis_rotated) {\n points = [[y(yp(j), true), x(xp(j))], [y(yp(j + diff), true), x(xp(j + diff))]];\n } else {\n points = [[x(xp(j), true), y(yp(j))], [x(xp(j + diff), true), y(yp(j + diff))]];\n }\n return generateM(points);\n };\n }\n\n // Generate\n for (i = 0; i < d.length; i++) {\n\n // Draw as normal\n if (isUndefined(regions) || !isWithinRegions(d[i].x, regions)) {\n s += \" \" + xValue(d[i]) + \" \" + yValue(d[i]);\n }\n // Draw with region // TODO: Fix for horizotal charts\n else {\n xp = $$.getScale(d[i - 1].x + xOffset, d[i].x + xOffset, $$.isTimeSeries());\n yp = $$.getScale(d[i - 1].value, d[i].value);\n\n dx = x(d[i].x) - x(d[i - 1].x);\n dy = y(d[i].value) - y(d[i - 1].value);\n dd = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n diff = 2 / dd;\n diffx2 = diff * 2;\n\n for (j = diff; j <= 1; j += diffx2) {\n s += sWithRegion(d[i - 1], d[i], j, diff);\n }\n }\n prev = d[i].x;\n }\n\n return s;\n };\n\n c3_chart_internal_fn.updateArea = function (durationForExit) {\n var $$ = this,\n d3 = $$.d3;\n $$.mainArea = $$.main.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area).data($$.lineData.bind($$));\n $$.mainArea.enter().append('path').attr(\"class\", $$.classArea.bind($$)).style(\"fill\", $$.color).style(\"opacity\", function () {\n $$.orgAreaOpacity = +d3.select(this).style('opacity');return 0;\n });\n $$.mainArea.style(\"opacity\", $$.orgAreaOpacity);\n $$.mainArea.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n };\n c3_chart_internal_fn.redrawArea = function (drawArea, withTransition) {\n return [(withTransition ? this.mainArea.transition(Math.random().toString()) : this.mainArea).attr(\"d\", drawArea).style(\"fill\", this.color).style(\"opacity\", this.orgAreaOpacity)];\n };\n c3_chart_internal_fn.generateDrawArea = function (areaIndices, isSub) {\n var $$ = this,\n config = $$.config,\n area = $$.d3.svg.area(),\n getPoints = $$.generateGetAreaPoints(areaIndices, isSub),\n yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale,\n xValue = function xValue(d) {\n return (isSub ? $$.subxx : $$.xx).call($$, d);\n },\n value0 = function value0(d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)($$.getAreaBaseValue(d.id));\n },\n value1 = function value1(d, i) {\n return config.data_groups.length > 0 ? getPoints(d, i)[1][1] : yScaleGetter.call($$, d.id)(d.value);\n };\n\n area = config.axis_rotated ? area.x0(value0).x1(value1).y(xValue) : area.x(xValue).y0(config.area_above ? 0 : value0).y1(value1);\n if (!config.line_connectNull) {\n area = area.defined(function (d) {\n return d.value !== null;\n });\n }\n\n return function (d) {\n var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values,\n x0 = 0,\n y0 = 0,\n path;\n if ($$.isAreaType(d)) {\n if ($$.isStepType(d)) {\n values = $$.convertValuesToStep(values);\n }\n path = area.interpolate($$.getInterpolate(d))(values);\n } else {\n if (values[0]) {\n x0 = $$.x(values[0].x);\n y0 = $$.getYScale(d.id)(values[0].value);\n }\n path = config.axis_rotated ? \"M \" + y0 + \" \" + x0 : \"M \" + x0 + \" \" + y0;\n }\n return path ? path : \"M 0 0\";\n };\n };\n c3_chart_internal_fn.getAreaBaseValue = function () {\n return 0;\n };\n c3_chart_internal_fn.generateGetAreaPoints = function (areaIndices, isSub) {\n // partial duplication of generateGetBarPoints\n var $$ = this,\n config = $$.config,\n areaTargetsNum = areaIndices.__max__ + 1,\n x = $$.getShapeX(0, areaTargetsNum, areaIndices, !!isSub),\n y = $$.getShapeY(!!isSub),\n areaOffset = $$.getShapeOffset($$.isAreaType, areaIndices, !!isSub),\n yScale = isSub ? $$.getSubYScale : $$.getYScale;\n return function (d, i) {\n var y0 = yScale.call($$, d.id)(0),\n offset = areaOffset(d, i) || y0,\n // offset is for stacked area chart\n posX = x(d),\n posY = y(d);\n // fix posY not to overflow opposite quadrant\n if (config.axis_rotated) {\n if (0 < d.value && posY < y0 || d.value < 0 && y0 < posY) {\n posY = y0;\n }\n }\n // 1 point that marks the area position\n return [[posX, offset], [posX, posY - (y0 - offset)], [posX, posY - (y0 - offset)], // needed for compatibility\n [posX, offset] // needed for compatibility\n ];\n };\n };\n\n c3_chart_internal_fn.updateCircle = function () {\n var $$ = this;\n $$.mainCircle = $$.main.selectAll('.' + CLASS.circles).selectAll('.' + CLASS.circle).data($$.lineOrScatterData.bind($$));\n $$.mainCircle.enter().append(\"circle\").attr(\"class\", $$.classCircle.bind($$)).attr(\"r\", $$.pointR.bind($$)).style(\"fill\", $$.color);\n $$.mainCircle.style(\"opacity\", $$.initialOpacityForCircle.bind($$));\n $$.mainCircle.exit().remove();\n };\n c3_chart_internal_fn.redrawCircle = function (cx, cy, withTransition) {\n var selectedCircles = this.main.selectAll('.' + CLASS.selectedCircle);\n return [(withTransition ? this.mainCircle.transition(Math.random().toString()) : this.mainCircle).style('opacity', this.opacityForCircle.bind(this)).style(\"fill\", this.color).attr(\"cx\", cx).attr(\"cy\", cy), (withTransition ? selectedCircles.transition(Math.random().toString()) : selectedCircles).attr(\"cx\", cx).attr(\"cy\", cy)];\n };\n c3_chart_internal_fn.circleX = function (d) {\n return d.x || d.x === 0 ? this.x(d.x) : null;\n };\n c3_chart_internal_fn.updateCircleY = function () {\n var $$ = this,\n lineIndices,\n getPoints;\n if ($$.config.data_groups.length > 0) {\n lineIndices = $$.getShapeIndices($$.isLineType), getPoints = $$.generateGetLinePoints(lineIndices);\n $$.circleY = function (d, i) {\n return getPoints(d, i)[0][1];\n };\n } else {\n $$.circleY = function (d) {\n return $$.getYScale(d.id)(d.value);\n };\n }\n };\n c3_chart_internal_fn.getCircles = function (i, id) {\n var $$ = this;\n return (id ? $$.main.selectAll('.' + CLASS.circles + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.circle + (isValue(i) ? '-' + i : ''));\n };\n c3_chart_internal_fn.expandCircles = function (i, id, reset) {\n var $$ = this,\n r = $$.pointExpandedR.bind($$);\n if (reset) {\n $$.unexpandCircles();\n }\n $$.getCircles(i, id).classed(CLASS.EXPANDED, true).attr('r', r);\n };\n c3_chart_internal_fn.unexpandCircles = function (i) {\n var $$ = this,\n r = $$.pointR.bind($$);\n $$.getCircles(i).filter(function () {\n return $$.d3.select(this).classed(CLASS.EXPANDED);\n }).classed(CLASS.EXPANDED, false).attr('r', r);\n };\n c3_chart_internal_fn.pointR = function (d) {\n var $$ = this,\n config = $$.config;\n return $$.isStepType(d) ? 0 : isFunction(config.point_r) ? config.point_r(d) : config.point_r;\n };\n c3_chart_internal_fn.pointExpandedR = function (d) {\n var $$ = this,\n config = $$.config;\n if (config.point_focus_expand_enabled) {\n return isFunction(config.point_focus_expand_r) ? config.point_focus_expand_r(d) : config.point_focus_expand_r ? config.point_focus_expand_r : $$.pointR(d) * 1.75;\n } else {\n return $$.pointR(d);\n }\n };\n c3_chart_internal_fn.pointSelectR = function (d) {\n var $$ = this,\n config = $$.config;\n return isFunction(config.point_select_r) ? config.point_select_r(d) : config.point_select_r ? config.point_select_r : $$.pointR(d) * 4;\n };\n c3_chart_internal_fn.isWithinCircle = function (that, r) {\n var d3 = this.d3,\n mouse = d3.mouse(that),\n d3_this = d3.select(that),\n cx = +d3_this.attr(\"cx\"),\n cy = +d3_this.attr(\"cy\");\n return Math.sqrt(Math.pow(cx - mouse[0], 2) + Math.pow(cy - mouse[1], 2)) < r;\n };\n c3_chart_internal_fn.isWithinStep = function (that, y) {\n return Math.abs(y - this.d3.mouse(that)[1]) < 30;\n };\n\n c3_chart_internal_fn.getCurrentWidth = function () {\n var $$ = this,\n config = $$.config;\n return config.size_width ? config.size_width : $$.getParentWidth();\n };\n c3_chart_internal_fn.getCurrentHeight = function () {\n var $$ = this,\n config = $$.config,\n h = config.size_height ? config.size_height : $$.getParentHeight();\n return h > 0 ? h : 320 / ($$.hasType('gauge') && !config.gauge_fullCircle ? 2 : 1);\n };\n c3_chart_internal_fn.getCurrentPaddingTop = function () {\n var $$ = this,\n config = $$.config,\n padding = isValue(config.padding_top) ? config.padding_top : 0;\n if ($$.title && $$.title.node()) {\n padding += $$.getTitlePadding();\n }\n return padding;\n };\n c3_chart_internal_fn.getCurrentPaddingBottom = function () {\n var config = this.config;\n return isValue(config.padding_bottom) ? config.padding_bottom : 0;\n };\n c3_chart_internal_fn.getCurrentPaddingLeft = function (withoutRecompute) {\n var $$ = this,\n config = $$.config;\n if (isValue(config.padding_left)) {\n return config.padding_left;\n } else if (config.axis_rotated) {\n return !config.axis_x_show || config.axis_x_inner ? 1 : Math.max(ceil10($$.getAxisWidthByAxisId('x', withoutRecompute)), 40);\n } else if (!config.axis_y_show || config.axis_y_inner) {\n // && !config.axis_rotated\n return $$.axis.getYAxisLabelPosition().isOuter ? 30 : 1;\n } else {\n return ceil10($$.getAxisWidthByAxisId('y', withoutRecompute));\n }\n };\n c3_chart_internal_fn.getCurrentPaddingRight = function () {\n var $$ = this,\n config = $$.config,\n defaultPadding = 10,\n legendWidthOnRight = $$.isLegendRight ? $$.getLegendWidth() + 20 : 0;\n if (isValue(config.padding_right)) {\n return config.padding_right + 1; // 1 is needed not to hide tick line\n } else if (config.axis_rotated) {\n return defaultPadding + legendWidthOnRight;\n } else if (!config.axis_y2_show || config.axis_y2_inner) {\n // && !config.axis_rotated\n return 2 + legendWidthOnRight + ($$.axis.getY2AxisLabelPosition().isOuter ? 20 : 0);\n } else {\n return ceil10($$.getAxisWidthByAxisId('y2')) + legendWidthOnRight;\n }\n };\n\n c3_chart_internal_fn.getParentRectValue = function (key) {\n var parent = this.selectChart.node(),\n v;\n while (parent && parent.tagName !== 'BODY') {\n try {\n v = parent.getBoundingClientRect()[key];\n } catch (e) {\n if (key === 'width') {\n // In IE in certain cases getBoundingClientRect\n // will cause an \"unspecified error\"\n v = parent.offsetWidth;\n }\n }\n if (v) {\n break;\n }\n parent = parent.parentNode;\n }\n return v;\n };\n c3_chart_internal_fn.getParentWidth = function () {\n return this.getParentRectValue('width');\n };\n c3_chart_internal_fn.getParentHeight = function () {\n var h = this.selectChart.style('height');\n return h.indexOf('px') > 0 ? +h.replace('px', '') : 0;\n };\n\n c3_chart_internal_fn.getSvgLeft = function (withoutRecompute) {\n var $$ = this,\n config = $$.config,\n hasLeftAxisRect = config.axis_rotated || !config.axis_rotated && !config.axis_y_inner,\n leftAxisClass = config.axis_rotated ? CLASS.axisX : CLASS.axisY,\n leftAxis = $$.main.select('.' + leftAxisClass).node(),\n svgRect = leftAxis && hasLeftAxisRect ? leftAxis.getBoundingClientRect() : { right: 0 },\n chartRect = $$.selectChart.node().getBoundingClientRect(),\n hasArc = $$.hasArcType(),\n svgLeft = svgRect.right - chartRect.left - (hasArc ? 0 : $$.getCurrentPaddingLeft(withoutRecompute));\n return svgLeft > 0 ? svgLeft : 0;\n };\n\n c3_chart_internal_fn.getAxisWidthByAxisId = function (id, withoutRecompute) {\n var $$ = this,\n position = $$.axis.getLabelPositionById(id);\n return $$.axis.getMaxTickWidth(id, withoutRecompute) + (position.isInner ? 20 : 40);\n };\n c3_chart_internal_fn.getHorizontalAxisHeight = function (axisId) {\n var $$ = this,\n config = $$.config,\n h = 30;\n if (axisId === 'x' && !config.axis_x_show) {\n return 8;\n }\n if (axisId === 'x' && config.axis_x_height) {\n return config.axis_x_height;\n }\n if (axisId === 'y' && !config.axis_y_show) {\n return config.legend_show && !$$.isLegendRight && !$$.isLegendInset ? 10 : 1;\n }\n if (axisId === 'y2' && !config.axis_y2_show) {\n return $$.rotated_padding_top;\n }\n // Calculate x axis height when tick rotated\n if (axisId === 'x' && !config.axis_rotated && config.axis_x_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - config.axis_x_tick_rotate) / 180);\n }\n // Calculate y axis height when tick rotated\n if (axisId === 'y' && config.axis_rotated && config.axis_y_tick_rotate) {\n h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - config.axis_y_tick_rotate) / 180);\n }\n return h + ($$.axis.getLabelPositionById(axisId).isInner ? 0 : 10) + (axisId === 'y2' ? -10 : 0);\n };\n\n c3_chart_internal_fn.getEventRectWidth = function () {\n return Math.max(0, this.xAxis.tickInterval());\n };\n\n c3_chart_internal_fn.initBrush = function () {\n var $$ = this,\n d3 = $$.d3;\n $$.brush = d3.svg.brush().on(\"brush\", function () {\n $$.redrawForBrush();\n });\n $$.brush.update = function () {\n if ($$.context) {\n $$.context.select('.' + CLASS.brush).call(this);\n }\n return this;\n };\n $$.brush.scale = function (scale) {\n return $$.config.axis_rotated ? this.y(scale) : this.x(scale);\n };\n };\n c3_chart_internal_fn.initSubchart = function () {\n var $$ = this,\n config = $$.config,\n context = $$.context = $$.svg.append(\"g\").attr(\"transform\", $$.getTranslate('context')),\n visibility = config.subchart_show ? 'visible' : 'hidden';\n\n context.style('visibility', visibility);\n\n // Define g for chart area\n context.append('g').attr(\"clip-path\", $$.clipPathForSubchart).attr('class', CLASS.chart);\n\n // Define g for bar chart area\n context.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartBars);\n\n // Define g for line chart area\n context.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartLines);\n\n // Add extent rect for Brush\n context.append(\"g\").attr(\"clip-path\", $$.clipPath).attr(\"class\", CLASS.brush).call($$.brush);\n\n // ATTENTION: This must be called AFTER chart added\n // Add Axis\n $$.axes.subx = context.append(\"g\").attr(\"class\", CLASS.axisX).attr(\"transform\", $$.getTranslate('subx')).attr(\"clip-path\", config.axis_rotated ? \"\" : $$.clipPathForXAxis).style(\"visibility\", config.subchart_axis_x_show ? visibility : 'hidden');\n };\n c3_chart_internal_fn.updateTargetsForSubchart = function (targets) {\n var $$ = this,\n context = $$.context,\n config = $$.config,\n contextLineEnter,\n contextLineUpdate,\n contextBarEnter,\n contextBarUpdate,\n classChartBar = $$.classChartBar.bind($$),\n classBars = $$.classBars.bind($$),\n classChartLine = $$.classChartLine.bind($$),\n classLines = $$.classLines.bind($$),\n classAreas = $$.classAreas.bind($$);\n\n if (config.subchart_show) {\n //-- Bar --//\n contextBarUpdate = context.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar).data(targets).attr('class', classChartBar);\n contextBarEnter = contextBarUpdate.enter().append('g').style('opacity', 0).attr('class', classChartBar);\n // Bars for each data\n contextBarEnter.append('g').attr(\"class\", classBars);\n\n //-- Line --//\n contextLineUpdate = context.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine).data(targets).attr('class', classChartLine);\n contextLineEnter = contextLineUpdate.enter().append('g').style('opacity', 0).attr('class', classChartLine);\n // Lines for each data\n contextLineEnter.append(\"g\").attr(\"class\", classLines);\n // Area\n contextLineEnter.append(\"g\").attr(\"class\", classAreas);\n\n //-- Brush --//\n context.selectAll('.' + CLASS.brush + ' rect').attr(config.axis_rotated ? \"width\" : \"height\", config.axis_rotated ? $$.width2 : $$.height2);\n }\n };\n c3_chart_internal_fn.updateBarForSubchart = function (durationForExit) {\n var $$ = this;\n $$.contextBar = $$.context.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar).data($$.barData.bind($$));\n $$.contextBar.enter().append('path').attr(\"class\", $$.classBar.bind($$)).style(\"stroke\", 'none').style(\"fill\", $$.color);\n $$.contextBar.style(\"opacity\", $$.initialOpacity.bind($$));\n $$.contextBar.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n };\n c3_chart_internal_fn.redrawBarForSubchart = function (drawBarOnSub, withTransition, duration) {\n (withTransition ? this.contextBar.transition(Math.random().toString()).duration(duration) : this.contextBar).attr('d', drawBarOnSub).style('opacity', 1);\n };\n c3_chart_internal_fn.updateLineForSubchart = function (durationForExit) {\n var $$ = this;\n $$.contextLine = $$.context.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line).data($$.lineData.bind($$));\n $$.contextLine.enter().append('path').attr('class', $$.classLine.bind($$)).style('stroke', $$.color);\n $$.contextLine.style(\"opacity\", $$.initialOpacity.bind($$));\n $$.contextLine.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n };\n c3_chart_internal_fn.redrawLineForSubchart = function (drawLineOnSub, withTransition, duration) {\n (withTransition ? this.contextLine.transition(Math.random().toString()).duration(duration) : this.contextLine).attr(\"d\", drawLineOnSub).style('opacity', 1);\n };\n c3_chart_internal_fn.updateAreaForSubchart = function (durationForExit) {\n var $$ = this,\n d3 = $$.d3;\n $$.contextArea = $$.context.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area).data($$.lineData.bind($$));\n $$.contextArea.enter().append('path').attr(\"class\", $$.classArea.bind($$)).style(\"fill\", $$.color).style(\"opacity\", function () {\n $$.orgAreaOpacity = +d3.select(this).style('opacity');return 0;\n });\n $$.contextArea.style(\"opacity\", 0);\n $$.contextArea.exit().transition().duration(durationForExit).style('opacity', 0).remove();\n };\n c3_chart_internal_fn.redrawAreaForSubchart = function (drawAreaOnSub, withTransition, duration) {\n (withTransition ? this.contextArea.transition(Math.random().toString()).duration(duration) : this.contextArea).attr(\"d\", drawAreaOnSub).style(\"fill\", this.color).style(\"opacity\", this.orgAreaOpacity);\n };\n c3_chart_internal_fn.redrawSubchart = function (withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices) {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n drawAreaOnSub,\n drawBarOnSub,\n drawLineOnSub;\n\n $$.context.style('visibility', config.subchart_show ? 'visible' : 'hidden');\n\n // subchart\n if (config.subchart_show) {\n // reflect main chart to extent on subchart if zoomed\n if (d3.event && d3.event.type === 'zoom') {\n $$.brush.extent($$.x.orgDomain()).update();\n }\n // update subchart elements if needed\n if (withSubchart) {\n\n // extent rect\n if (!$$.brush.empty()) {\n $$.brush.extent($$.x.orgDomain()).update();\n }\n // setup drawer - MEMO: this must be called after axis updated\n drawAreaOnSub = $$.generateDrawArea(areaIndices, true);\n drawBarOnSub = $$.generateDrawBar(barIndices, true);\n drawLineOnSub = $$.generateDrawLine(lineIndices, true);\n\n $$.updateBarForSubchart(duration);\n $$.updateLineForSubchart(duration);\n $$.updateAreaForSubchart(duration);\n\n $$.redrawBarForSubchart(drawBarOnSub, duration, duration);\n $$.redrawLineForSubchart(drawLineOnSub, duration, duration);\n $$.redrawAreaForSubchart(drawAreaOnSub, duration, duration);\n }\n }\n };\n c3_chart_internal_fn.redrawForBrush = function () {\n var $$ = this,\n x = $$.x;\n $$.redraw({\n withTransition: false,\n withY: $$.config.zoom_rescale,\n withSubchart: false,\n withUpdateXDomain: true,\n withDimension: false\n });\n $$.config.subchart_onbrush.call($$.api, x.orgDomain());\n };\n c3_chart_internal_fn.transformContext = function (withTransition, transitions) {\n var $$ = this,\n subXAxis;\n if (transitions && transitions.axisSubX) {\n subXAxis = transitions.axisSubX;\n } else {\n subXAxis = $$.context.select('.' + CLASS.axisX);\n if (withTransition) {\n subXAxis = subXAxis.transition();\n }\n }\n $$.context.attr(\"transform\", $$.getTranslate('context'));\n subXAxis.attr(\"transform\", $$.getTranslate('subx'));\n };\n c3_chart_internal_fn.getDefaultExtent = function () {\n var $$ = this,\n config = $$.config,\n extent = isFunction(config.axis_x_extent) ? config.axis_x_extent($$.getXDomain($$.data.targets)) : config.axis_x_extent;\n if ($$.isTimeSeries()) {\n extent = [$$.parseDate(extent[0]), $$.parseDate(extent[1])];\n }\n return extent;\n };\n\n c3_chart_internal_fn.initText = function () {\n var $$ = this;\n $$.main.select('.' + CLASS.chart).append(\"g\").attr(\"class\", CLASS.chartTexts);\n $$.mainText = $$.d3.selectAll([]);\n };\n c3_chart_internal_fn.updateTargetsForText = function (targets) {\n var $$ = this,\n mainTextUpdate,\n mainTextEnter,\n classChartText = $$.classChartText.bind($$),\n classTexts = $$.classTexts.bind($$),\n classFocus = $$.classFocus.bind($$);\n mainTextUpdate = $$.main.select('.' + CLASS.chartTexts).selectAll('.' + CLASS.chartText).data(targets).attr('class', function (d) {\n return classChartText(d) + classFocus(d);\n });\n mainTextEnter = mainTextUpdate.enter().append('g').attr('class', classChartText).style('opacity', 0).style(\"pointer-events\", \"none\");\n mainTextEnter.append('g').attr('class', classTexts);\n };\n c3_chart_internal_fn.updateText = function (durationForExit) {\n var $$ = this,\n config = $$.config,\n barOrLineData = $$.barOrLineData.bind($$),\n classText = $$.classText.bind($$);\n $$.mainText = $$.main.selectAll('.' + CLASS.texts).selectAll('.' + CLASS.text).data(barOrLineData);\n $$.mainText.enter().append('text').attr(\"class\", classText).attr('text-anchor', function (d) {\n return config.axis_rotated ? d.value < 0 ? 'end' : 'start' : 'middle';\n }).style(\"stroke\", 'none').style(\"fill\", function (d) {\n return $$.color(d);\n }).style(\"fill-opacity\", 0);\n $$.mainText.text(function (d, i, j) {\n return $$.dataLabelFormat(d.id)(d.value, d.id, i, j);\n });\n $$.mainText.exit().transition().duration(durationForExit).style('fill-opacity', 0).remove();\n };\n c3_chart_internal_fn.redrawText = function (xForText, yForText, forFlow, withTransition) {\n return [(withTransition ? this.mainText.transition() : this.mainText).attr('x', xForText).attr('y', yForText).style(\"fill\", this.color).style(\"fill-opacity\", forFlow ? 0 : this.opacityForText.bind(this))];\n };\n c3_chart_internal_fn.getTextRect = function (text, cls, element) {\n var dummy = this.d3.select('body').append('div').classed('c3', true),\n svg = dummy.append(\"svg\").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0),\n font = this.d3.select(element).style('font'),\n rect;\n svg.selectAll('.dummy').data([text]).enter().append('text').classed(cls ? cls : \"\", true).style('font', font).text(text).each(function () {\n rect = this.getBoundingClientRect();\n });\n dummy.remove();\n return rect;\n };\n c3_chart_internal_fn.generateXYForText = function (areaIndices, barIndices, lineIndices, forX) {\n var $$ = this,\n getAreaPoints = $$.generateGetAreaPoints(areaIndices, false),\n getBarPoints = $$.generateGetBarPoints(barIndices, false),\n getLinePoints = $$.generateGetLinePoints(lineIndices, false),\n getter = forX ? $$.getXForText : $$.getYForText;\n return function (d, i) {\n var getPoints = $$.isAreaType(d) ? getAreaPoints : $$.isBarType(d) ? getBarPoints : getLinePoints;\n return getter.call($$, getPoints(d, i), d, this);\n };\n };\n c3_chart_internal_fn.getXForText = function (points, d, textElement) {\n var $$ = this,\n box = textElement.getBoundingClientRect(),\n xPos,\n padding;\n if ($$.config.axis_rotated) {\n padding = $$.isBarType(d) ? 4 : 6;\n xPos = points[2][1] + padding * (d.value < 0 ? -1 : 1);\n } else {\n xPos = $$.hasType('bar') ? (points[2][0] + points[0][0]) / 2 : points[0][0];\n }\n // show labels regardless of the domain if value is null\n if (d.value === null) {\n if (xPos > $$.width) {\n xPos = $$.width - box.width;\n } else if (xPos < 0) {\n xPos = 4;\n }\n }\n return xPos;\n };\n c3_chart_internal_fn.getYForText = function (points, d, textElement) {\n var $$ = this,\n box = textElement.getBoundingClientRect(),\n yPos;\n if ($$.config.axis_rotated) {\n yPos = (points[0][0] + points[2][0] + box.height * 0.6) / 2;\n } else {\n yPos = points[2][1];\n if (d.value < 0 || d.value === 0 && !$$.hasPositiveValue) {\n yPos += box.height;\n if ($$.isBarType(d) && $$.isSafari()) {\n yPos -= 3;\n } else if (!$$.isBarType(d) && $$.isChrome()) {\n yPos += 3;\n }\n } else {\n yPos += $$.isBarType(d) ? -3 : -6;\n }\n }\n // show labels regardless of the domain if value is null\n if (d.value === null && !$$.config.axis_rotated) {\n if (yPos < box.height) {\n yPos = box.height;\n } else if (yPos > this.height) {\n yPos = this.height - 4;\n }\n }\n return yPos;\n };\n\n c3_chart_internal_fn.initTitle = function () {\n var $$ = this;\n $$.title = $$.svg.append(\"text\").text($$.config.title_text).attr(\"class\", $$.CLASS.title);\n };\n c3_chart_internal_fn.redrawTitle = function () {\n var $$ = this;\n $$.title.attr(\"x\", $$.xForTitle.bind($$)).attr(\"y\", $$.yForTitle.bind($$));\n };\n c3_chart_internal_fn.xForTitle = function () {\n var $$ = this,\n config = $$.config,\n position = config.title_position || 'left',\n x;\n if (position.indexOf('right') >= 0) {\n x = $$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width - config.title_padding.right;\n } else if (position.indexOf('center') >= 0) {\n x = ($$.currentWidth - $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).width) / 2;\n } else {\n // left\n x = config.title_padding.left;\n }\n return x;\n };\n c3_chart_internal_fn.yForTitle = function () {\n var $$ = this;\n return $$.config.title_padding.top + $$.getTextRect($$.title.node().textContent, $$.CLASS.title, $$.title.node()).height;\n };\n c3_chart_internal_fn.getTitlePadding = function () {\n var $$ = this;\n return $$.yForTitle() + $$.config.title_padding.bottom;\n };\n\n c3_chart_internal_fn.initTooltip = function () {\n var $$ = this,\n config = $$.config,\n i;\n $$.tooltip = $$.selectChart.style(\"position\", \"relative\").append(\"div\").attr('class', CLASS.tooltipContainer).style(\"position\", \"absolute\").style(\"pointer-events\", \"none\").style(\"display\", \"none\");\n // Show tooltip if needed\n if (config.tooltip_init_show) {\n if ($$.isTimeSeries() && isString(config.tooltip_init_x)) {\n config.tooltip_init_x = $$.parseDate(config.tooltip_init_x);\n for (i = 0; i < $$.data.targets[0].values.length; i++) {\n if ($$.data.targets[0].values[i].x - config.tooltip_init_x === 0) {\n break;\n }\n }\n config.tooltip_init_x = i;\n }\n $$.tooltip.html(config.tooltip_contents.call($$, $$.data.targets.map(function (d) {\n return $$.addName(d.values[config.tooltip_init_x]);\n }), $$.axis.getXAxisTickFormat(), $$.getYFormat($$.hasArcType()), $$.color));\n $$.tooltip.style(\"top\", config.tooltip_init_position.top).style(\"left\", config.tooltip_init_position.left).style(\"display\", \"block\");\n }\n };\n c3_chart_internal_fn.getTooltipSortFunction = function () {\n var $$ = this,\n config = $$.config;\n\n if (config.data_groups.length === 0 || config.tooltip_order !== undefined) {\n // if data are not grouped or if an order is specified\n // for the tooltip values we sort them by their values\n\n var order = config.tooltip_order;\n if (order === undefined) {\n order = config.data_order;\n }\n\n var valueOf = function valueOf(obj) {\n return obj ? obj.value : null;\n };\n\n // if data are not grouped, we sort them by their value\n if (isString(order) && order.toLowerCase() === 'asc') {\n return function (a, b) {\n return valueOf(a) - valueOf(b);\n };\n } else if (isString(order) && order.toLowerCase() === 'desc') {\n return function (a, b) {\n return valueOf(b) - valueOf(a);\n };\n } else if (isFunction(order)) {\n\n // if the function is from data_order we need\n // to wrap the returned function in order to format\n // the sorted value to the expected format\n\n var sortFunction = order;\n\n if (config.tooltip_order === undefined) {\n sortFunction = function sortFunction(a, b) {\n return order(a ? {\n id: a.id,\n values: [a]\n } : null, b ? {\n id: b.id,\n values: [b]\n } : null);\n };\n }\n\n return sortFunction;\n } else if (isArray(order)) {\n return function (a, b) {\n return order.indexOf(a.id) - order.indexOf(b.id);\n };\n }\n } else {\n // if data are grouped, we follow the order of grouped targets\n var ids = $$.orderTargets($$.data.targets).map(function (i) {\n return i.id;\n });\n\n // if it was either asc or desc we need to invert the order\n // returned by orderTargets\n if ($$.isOrderAsc() || $$.isOrderDesc()) {\n ids = ids.reverse();\n }\n\n return function (a, b) {\n return ids.indexOf(a.id) - ids.indexOf(b.id);\n };\n }\n };\n c3_chart_internal_fn.getTooltipContent = function (d, defaultTitleFormat, defaultValueFormat, color) {\n var $$ = this,\n config = $$.config,\n titleFormat = config.tooltip_format_title || defaultTitleFormat,\n nameFormat = config.tooltip_format_name || function (name) {\n return name;\n },\n valueFormat = config.tooltip_format_value || defaultValueFormat,\n text,\n i,\n title,\n value,\n name,\n bgcolor;\n\n var tooltipSortFunction = this.getTooltipSortFunction();\n if (tooltipSortFunction) {\n d.sort(tooltipSortFunction);\n }\n\n for (i = 0; i < d.length; i++) {\n if (!(d[i] && (d[i].value || d[i].value === 0))) {\n continue;\n }\n\n if (!text) {\n title = sanitise(titleFormat ? titleFormat(d[i].x) : d[i].x);\n text = \"<table class='\" + $$.CLASS.tooltip + \"'>\" + (title || title === 0 ? \"<tr><th colspan='2'>\" + title + \"</th></tr>\" : \"\");\n }\n\n value = sanitise(valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index, d));\n if (value !== undefined) {\n // Skip elements when their name is set to null\n if (d[i].name === null) {\n continue;\n }\n name = sanitise(nameFormat(d[i].name, d[i].ratio, d[i].id, d[i].index));\n bgcolor = $$.levelColor ? $$.levelColor(d[i].value) : color(d[i].id);\n\n text += \"<tr class='\" + $$.CLASS.tooltipName + \"-\" + $$.getTargetSelectorSuffix(d[i].id) + \"'>\";\n text += \"<td class='name'><span style='background-color:\" + bgcolor + \"'></span>\" + name + \"</td>\";\n text += \"<td class='value'>\" + value + \"</td>\";\n text += \"</tr>\";\n }\n }\n return text + \"</table>\";\n };\n c3_chart_internal_fn.tooltipPosition = function (dataToShow, tWidth, tHeight, element) {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3;\n var svgLeft, tooltipLeft, tooltipRight, tooltipTop, chartRight;\n var forArc = $$.hasArcType(),\n mouse = d3.mouse(element);\n // Determin tooltip position\n if (forArc) {\n tooltipLeft = ($$.width - ($$.isLegendRight ? $$.getLegendWidth() : 0)) / 2 + mouse[0];\n tooltipTop = ($$.hasType('gauge') ? $$.height : $$.height / 2) + mouse[1] + 20;\n } else {\n svgLeft = $$.getSvgLeft(true);\n if (config.axis_rotated) {\n tooltipLeft = svgLeft + mouse[0] + 100;\n tooltipRight = tooltipLeft + tWidth;\n chartRight = $$.currentWidth - $$.getCurrentPaddingRight();\n tooltipTop = $$.x(dataToShow[0].x) + 20;\n } else {\n tooltipLeft = svgLeft + $$.getCurrentPaddingLeft(true) + $$.x(dataToShow[0].x) + 20;\n tooltipRight = tooltipLeft + tWidth;\n chartRight = svgLeft + $$.currentWidth - $$.getCurrentPaddingRight();\n tooltipTop = mouse[1] + 15;\n }\n\n if (tooltipRight > chartRight) {\n // 20 is needed for Firefox to keep tooltip width\n tooltipLeft -= tooltipRight - chartRight + 20;\n }\n if (tooltipTop + tHeight > $$.currentHeight) {\n tooltipTop -= tHeight + 30;\n }\n }\n if (tooltipTop < 0) {\n tooltipTop = 0;\n }\n return { top: tooltipTop, left: tooltipLeft };\n };\n c3_chart_internal_fn.showTooltip = function (selectedData, element) {\n var $$ = this,\n config = $$.config;\n var tWidth, tHeight, position;\n var forArc = $$.hasArcType(),\n dataToShow = selectedData.filter(function (d) {\n return d && isValue(d.value);\n }),\n positionFunction = config.tooltip_position || c3_chart_internal_fn.tooltipPosition;\n if (dataToShow.length === 0 || !config.tooltip_show) {\n return;\n }\n $$.tooltip.html(config.tooltip_contents.call($$, selectedData, $$.axis.getXAxisTickFormat(), $$.getYFormat(forArc), $$.color)).style(\"display\", \"block\");\n\n // Get tooltip dimensions\n tWidth = $$.tooltip.property('offsetWidth');\n tHeight = $$.tooltip.property('offsetHeight');\n\n position = positionFunction.call(this, dataToShow, tWidth, tHeight, element);\n // Set tooltip\n $$.tooltip.style(\"top\", position.top + \"px\").style(\"left\", position.left + 'px');\n };\n c3_chart_internal_fn.hideTooltip = function () {\n this.tooltip.style(\"display\", \"none\");\n };\n\n c3_chart_internal_fn.setTargetType = function (targetIds, type) {\n var $$ = this,\n config = $$.config;\n $$.mapToTargetIds(targetIds).forEach(function (id) {\n $$.withoutFadeIn[id] = type === config.data_types[id];\n config.data_types[id] = type;\n });\n if (!targetIds) {\n config.data_type = type;\n }\n };\n c3_chart_internal_fn.hasType = function (type, targets) {\n var $$ = this,\n types = $$.config.data_types,\n has = false;\n targets = targets || $$.data.targets;\n if (targets && targets.length) {\n targets.forEach(function (target) {\n var t = types[target.id];\n if (t && t.indexOf(type) >= 0 || !t && type === 'line') {\n has = true;\n }\n });\n } else if (Object.keys(types).length) {\n Object.keys(types).forEach(function (id) {\n if (types[id] === type) {\n has = true;\n }\n });\n } else {\n has = $$.config.data_type === type;\n }\n return has;\n };\n c3_chart_internal_fn.hasArcType = function (targets) {\n return this.hasType('pie', targets) || this.hasType('donut', targets) || this.hasType('gauge', targets);\n };\n c3_chart_internal_fn.isLineType = function (d) {\n var config = this.config,\n id = isString(d) ? d : d.id;\n return !config.data_types[id] || ['line', 'spline', 'area', 'area-spline', 'step', 'area-step'].indexOf(config.data_types[id]) >= 0;\n };\n c3_chart_internal_fn.isStepType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['step', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n };\n c3_chart_internal_fn.isSplineType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['spline', 'area-spline'].indexOf(this.config.data_types[id]) >= 0;\n };\n c3_chart_internal_fn.isAreaType = function (d) {\n var id = isString(d) ? d : d.id;\n return ['area', 'area-spline', 'area-step'].indexOf(this.config.data_types[id]) >= 0;\n };\n c3_chart_internal_fn.isBarType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'bar';\n };\n c3_chart_internal_fn.isScatterType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'scatter';\n };\n c3_chart_internal_fn.isPieType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'pie';\n };\n c3_chart_internal_fn.isGaugeType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'gauge';\n };\n c3_chart_internal_fn.isDonutType = function (d) {\n var id = isString(d) ? d : d.id;\n return this.config.data_types[id] === 'donut';\n };\n c3_chart_internal_fn.isArcType = function (d) {\n return this.isPieType(d) || this.isDonutType(d) || this.isGaugeType(d);\n };\n c3_chart_internal_fn.lineData = function (d) {\n return this.isLineType(d) ? [d] : [];\n };\n c3_chart_internal_fn.arcData = function (d) {\n return this.isArcType(d.data) ? [d] : [];\n };\n /* not used\n function scatterData(d) {\n return isScatterType(d) ? d.values : [];\n }\n */\n c3_chart_internal_fn.barData = function (d) {\n return this.isBarType(d) ? d.values : [];\n };\n c3_chart_internal_fn.lineOrScatterData = function (d) {\n return this.isLineType(d) || this.isScatterType(d) ? d.values : [];\n };\n c3_chart_internal_fn.barOrLineData = function (d) {\n return this.isBarType(d) || this.isLineType(d) ? d.values : [];\n };\n c3_chart_internal_fn.isInterpolationType = function (type) {\n return ['linear', 'linear-closed', 'basis', 'basis-open', 'basis-closed', 'bundle', 'cardinal', 'cardinal-open', 'cardinal-closed', 'monotone'].indexOf(type) >= 0;\n };\n\n c3_chart_internal_fn.isSafari = function () {\n var ua = window.navigator.userAgent;\n return ua.indexOf('Safari') >= 0 && ua.indexOf('Chrome') < 0;\n };\n c3_chart_internal_fn.isChrome = function () {\n var ua = window.navigator.userAgent;\n return ua.indexOf('Chrome') >= 0;\n };\n\n c3_chart_internal_fn.initZoom = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n startEvent;\n\n $$.zoom = d3.behavior.zoom().on(\"zoomstart\", function () {\n startEvent = d3.event.sourceEvent;\n $$.zoom.altDomain = d3.event.sourceEvent.altKey ? $$.x.orgDomain() : null;\n config.zoom_onzoomstart.call($$.api, d3.event.sourceEvent);\n }).on(\"zoom\", function () {\n $$.redrawForZoom.call($$);\n }).on('zoomend', function () {\n var event = d3.event.sourceEvent;\n // if click, do nothing. otherwise, click interaction will be canceled.\n if (event && startEvent.clientX === event.clientX && startEvent.clientY === event.clientY) {\n return;\n }\n $$.redrawEventRect();\n $$.updateZoom();\n config.zoom_onzoomend.call($$.api, $$.x.orgDomain());\n });\n $$.zoom.scale = function (scale) {\n return config.axis_rotated ? this.y(scale) : this.x(scale);\n };\n $$.zoom.orgScaleExtent = function () {\n var extent = config.zoom_extent ? config.zoom_extent : [1, 10];\n return [extent[0], Math.max($$.getMaxDataCount() / extent[1], extent[1])];\n };\n $$.zoom.updateScaleExtent = function () {\n var ratio = diffDomain($$.x.orgDomain()) / diffDomain($$.getZoomDomain()),\n extent = this.orgScaleExtent();\n this.scaleExtent([extent[0] * ratio, extent[1] * ratio]);\n return this;\n };\n };\n c3_chart_internal_fn.getZoomDomain = function () {\n var $$ = this,\n config = $$.config,\n d3 = $$.d3,\n min = d3.min([$$.orgXDomain[0], config.zoom_x_min]),\n max = d3.max([$$.orgXDomain[1], config.zoom_x_max]);\n return [min, max];\n };\n c3_chart_internal_fn.updateZoom = function () {\n var $$ = this,\n z = $$.config.zoom_enabled ? $$.zoom : function () {};\n $$.main.select('.' + CLASS.zoomRect).call(z).on(\"dblclick.zoom\", null);\n $$.main.selectAll('.' + CLASS.eventRect).call(z).on(\"dblclick.zoom\", null);\n };\n c3_chart_internal_fn.redrawForZoom = function () {\n var $$ = this,\n d3 = $$.d3,\n config = $$.config,\n zoom = $$.zoom,\n x = $$.x;\n if (!config.zoom_enabled) {\n return;\n }\n if ($$.filterTargetsToShow($$.data.targets).length === 0) {\n return;\n }\n if (d3.event.sourceEvent.type === 'mousemove' && zoom.altDomain) {\n x.domain(zoom.altDomain);\n zoom.scale(x).updateScaleExtent();\n return;\n }\n if ($$.isCategorized() && x.orgDomain()[0] === $$.orgXDomain[0]) {\n x.domain([$$.orgXDomain[0] - 1e-10, x.orgDomain()[1]]);\n }\n $$.redraw({\n withTransition: false,\n withY: config.zoom_rescale,\n withSubchart: false,\n withEventRect: false,\n withDimension: false\n });\n if (d3.event.sourceEvent.type === 'mousemove') {\n $$.cancelClick = true;\n }\n config.zoom_onzoom.call($$.api, x.orgDomain());\n };\n\n return c3;\n\n})));\n","!function() {\n var d3 = {\n version: \"3.5.17\"\n };\n var d3_arraySlice = [].slice, d3_array = function(list) {\n return d3_arraySlice.call(list);\n };\n var d3_document = this.document;\n function d3_documentElement(node) {\n return node && (node.ownerDocument || node.document || node).documentElement;\n }\n function d3_window(node) {\n return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);\n }\n if (d3_document) {\n try {\n d3_array(d3_document.documentElement.childNodes)[0].nodeType;\n } catch (e) {\n d3_array = function(list) {\n var i = list.length, array = new Array(i);\n while (i--) array[i] = list[i];\n return array;\n };\n }\n }\n if (!Date.now) Date.now = function() {\n return +new Date();\n };\n if (d3_document) {\n try {\n d3_document.createElement(\"DIV\").style.setProperty(\"opacity\", 0, \"\");\n } catch (error) {\n var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;\n d3_element_prototype.setAttribute = function(name, value) {\n d3_element_setAttribute.call(this, name, value + \"\");\n };\n d3_element_prototype.setAttributeNS = function(space, local, value) {\n d3_element_setAttributeNS.call(this, space, local, value + \"\");\n };\n d3_style_prototype.setProperty = function(name, value, priority) {\n d3_style_setProperty.call(this, name, value + \"\", priority);\n };\n }\n }\n d3.ascending = d3_ascending;\n function d3_ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n }\n d3.descending = function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n };\n d3.min = function(array, f) {\n var i = -1, n = array.length, a, b;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;\n }\n return a;\n };\n d3.max = function(array, f) {\n var i = -1, n = array.length, a, b;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;\n }\n return a;\n };\n d3.extent = function(array, f) {\n var i = -1, n = array.length, a, b, c;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = c = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = c = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n }\n return [ a, c ];\n };\n function d3_number(x) {\n return x === null ? NaN : +x;\n }\n function d3_numeric(x) {\n return !isNaN(x);\n }\n d3.sum = function(array, f) {\n var s = 0, n = array.length, a, i = -1;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = +array[i])) s += a;\n } else {\n while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;\n }\n return s;\n };\n d3.mean = function(array, f) {\n var s = 0, n = array.length, a, i = -1, j = n;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;\n } else {\n while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;\n }\n if (j) return s / j;\n };\n d3.quantile = function(values, p) {\n var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;\n return e ? v + e * (values[h] - v) : v;\n };\n d3.median = function(array, f) {\n var numbers = [], n = array.length, a, i = -1;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);\n } else {\n while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);\n }\n if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);\n };\n d3.variance = function(array, f) {\n var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;\n if (arguments.length === 1) {\n while (++i < n) {\n if (d3_numeric(a = d3_number(array[i]))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n } else {\n while (++i < n) {\n if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n }\n if (j > 1) return s / (j - 1);\n };\n d3.deviation = function() {\n var v = d3.variance.apply(this, arguments);\n return v ? Math.sqrt(v) : v;\n };\n function d3_bisector(compare) {\n return {\n left: function(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;\n }\n return lo;\n }\n };\n }\n var d3_bisect = d3_bisector(d3_ascending);\n d3.bisectLeft = d3_bisect.left;\n d3.bisect = d3.bisectRight = d3_bisect.right;\n d3.bisector = function(f) {\n return d3_bisector(f.length === 1 ? function(d, x) {\n return d3_ascending(f(d), x);\n } : f);\n };\n d3.shuffle = function(array, i0, i1) {\n if ((m = arguments.length) < 3) {\n i1 = array.length;\n if (m < 2) i0 = 0;\n }\n var m = i1 - i0, t, i;\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;\n }\n return array;\n };\n d3.permute = function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n };\n d3.pairs = function(array) {\n var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];\n return pairs;\n };\n d3.transpose = function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n };\n function d3_transposeLength(d) {\n return d.length;\n }\n d3.zip = function() {\n return d3.transpose(arguments);\n };\n d3.keys = function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n };\n d3.values = function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n };\n d3.entries = function(map) {\n var entries = [];\n for (var key in map) entries.push({\n key: key,\n value: map[key]\n });\n return entries;\n };\n d3.merge = function(arrays) {\n var n = arrays.length, m, i = -1, j = 0, merged, array;\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n return merged;\n };\n var abs = Math.abs;\n d3.range = function(start, stop, step) {\n if (arguments.length < 3) {\n step = 1;\n if (arguments.length < 2) {\n stop = start;\n start = 0;\n }\n }\n if ((stop - start) / step === Infinity) throw new Error(\"infinite range\");\n var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;\n start *= k, stop *= k, step *= k;\n if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);\n return range;\n };\n function d3_range_integerScale(x) {\n var k = 1;\n while (x * k % 1) k *= 10;\n return k;\n }\n function d3_class(ctor, properties) {\n for (var key in properties) {\n Object.defineProperty(ctor.prototype, key, {\n value: properties[key],\n enumerable: false\n });\n }\n }\n d3.map = function(object, f) {\n var map = new d3_Map();\n if (object instanceof d3_Map) {\n object.forEach(function(key, value) {\n map.set(key, value);\n });\n } else if (Array.isArray(object)) {\n var i = -1, n = object.length, o;\n if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);\n } else {\n for (var key in object) map.set(key, object[key]);\n }\n return map;\n };\n function d3_Map() {\n this._ = Object.create(null);\n }\n var d3_map_proto = \"__proto__\", d3_map_zero = \"\\x00\";\n d3_class(d3_Map, {\n has: d3_map_has,\n get: function(key) {\n return this._[d3_map_escape(key)];\n },\n set: function(key, value) {\n return this._[d3_map_escape(key)] = value;\n },\n remove: d3_map_remove,\n keys: d3_map_keys,\n values: function() {\n var values = [];\n for (var key in this._) values.push(this._[key]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var key in this._) entries.push({\n key: d3_map_unescape(key),\n value: this._[key]\n });\n return entries;\n },\n size: d3_map_size,\n empty: d3_map_empty,\n forEach: function(f) {\n for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);\n }\n });\n function d3_map_escape(key) {\n return (key += \"\") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;\n }\n function d3_map_unescape(key) {\n return (key += \"\")[0] === d3_map_zero ? key.slice(1) : key;\n }\n function d3_map_has(key) {\n return d3_map_escape(key) in this._;\n }\n function d3_map_remove(key) {\n return (key = d3_map_escape(key)) in this._ && delete this._[key];\n }\n function d3_map_keys() {\n var keys = [];\n for (var key in this._) keys.push(d3_map_unescape(key));\n return keys;\n }\n function d3_map_size() {\n var size = 0;\n for (var key in this._) ++size;\n return size;\n }\n function d3_map_empty() {\n for (var key in this._) return false;\n return true;\n }\n d3.nest = function() {\n var nest = {}, keys = [], sortKeys = [], sortValues, rollup;\n function map(mapType, array, depth) {\n if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;\n var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(object = array[i]))) {\n values.push(object);\n } else {\n valuesByKey.set(keyValue, [ object ]);\n }\n }\n if (mapType) {\n object = mapType();\n setter = function(keyValue, values) {\n object.set(keyValue, map(mapType, values, depth));\n };\n } else {\n object = {};\n setter = function(keyValue, values) {\n object[keyValue] = map(mapType, values, depth);\n };\n }\n valuesByKey.forEach(setter);\n return object;\n }\n function entries(map, depth) {\n if (depth >= keys.length) return map;\n var array = [], sortKey = sortKeys[depth++];\n map.forEach(function(key, keyMap) {\n array.push({\n key: key,\n values: entries(keyMap, depth)\n });\n });\n return sortKey ? array.sort(function(a, b) {\n return sortKey(a.key, b.key);\n }) : array;\n }\n nest.map = function(array, mapType) {\n return map(mapType, array, 0);\n };\n nest.entries = function(array) {\n return entries(map(d3.map, array, 0), 0);\n };\n nest.key = function(d) {\n keys.push(d);\n return nest;\n };\n nest.sortKeys = function(order) {\n sortKeys[keys.length - 1] = order;\n return nest;\n };\n nest.sortValues = function(order) {\n sortValues = order;\n return nest;\n };\n nest.rollup = function(f) {\n rollup = f;\n return nest;\n };\n return nest;\n };\n d3.set = function(array) {\n var set = new d3_Set();\n if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);\n return set;\n };\n function d3_Set() {\n this._ = Object.create(null);\n }\n d3_class(d3_Set, {\n has: d3_map_has,\n add: function(key) {\n this._[d3_map_escape(key += \"\")] = true;\n return key;\n },\n remove: d3_map_remove,\n values: d3_map_keys,\n size: d3_map_size,\n empty: d3_map_empty,\n forEach: function(f) {\n for (var key in this._) f.call(this, d3_map_unescape(key));\n }\n });\n d3.behavior = {};\n function d3_identity(d) {\n return d;\n }\n d3.rebind = function(target, source) {\n var i = 1, n = arguments.length, method;\n while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);\n return target;\n };\n function d3_rebind(target, source, method) {\n return function() {\n var value = method.apply(source, arguments);\n return value === source ? target : value;\n };\n }\n function d3_vendorSymbol(object, name) {\n if (name in object) return name;\n name = name.charAt(0).toUpperCase() + name.slice(1);\n for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {\n var prefixName = d3_vendorPrefixes[i] + name;\n if (prefixName in object) return prefixName;\n }\n }\n var d3_vendorPrefixes = [ \"webkit\", \"ms\", \"moz\", \"Moz\", \"o\", \"O\" ];\n function d3_noop() {}\n d3.dispatch = function() {\n var dispatch = new d3_dispatch(), i = -1, n = arguments.length;\n while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n return dispatch;\n };\n function d3_dispatch() {}\n d3_dispatch.prototype.on = function(type, listener) {\n var i = type.indexOf(\".\"), name = \"\";\n if (i >= 0) {\n name = type.slice(i + 1);\n type = type.slice(0, i);\n }\n if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);\n if (arguments.length === 2) {\n if (listener == null) for (type in this) {\n if (this.hasOwnProperty(type)) this[type].on(name, null);\n }\n return this;\n }\n };\n function d3_dispatch_event(dispatch) {\n var listeners = [], listenerByName = new d3_Map();\n function event() {\n var z = listeners, i = -1, n = z.length, l;\n while (++i < n) if (l = z[i].on) l.apply(this, arguments);\n return dispatch;\n }\n event.on = function(name, listener) {\n var l = listenerByName.get(name), i;\n if (arguments.length < 2) return l && l.on;\n if (l) {\n l.on = null;\n listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));\n listenerByName.remove(name);\n }\n if (listener) listeners.push(listenerByName.set(name, {\n on: listener\n }));\n return dispatch;\n };\n return event;\n }\n d3.event = null;\n function d3_eventPreventDefault() {\n d3.event.preventDefault();\n }\n function d3_eventSource() {\n var e = d3.event, s;\n while (s = e.sourceEvent) e = s;\n return e;\n }\n function d3_eventDispatch(target) {\n var dispatch = new d3_dispatch(), i = 0, n = arguments.length;\n while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n dispatch.of = function(thiz, argumentz) {\n return function(e1) {\n try {\n var e0 = e1.sourceEvent = d3.event;\n e1.target = target;\n d3.event = e1;\n dispatch[e1.type].apply(thiz, argumentz);\n } finally {\n d3.event = e0;\n }\n };\n };\n return dispatch;\n }\n d3.requote = function(s) {\n return s.replace(d3_requote_re, \"\\\\$&\");\n };\n var d3_requote_re = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n var d3_subclass = {}.__proto__ ? function(object, prototype) {\n object.__proto__ = prototype;\n } : function(object, prototype) {\n for (var property in prototype) object[property] = prototype[property];\n };\n function d3_selection(groups) {\n d3_subclass(groups, d3_selectionPrototype);\n return groups;\n }\n var d3_select = function(s, n) {\n return n.querySelector(s);\n }, d3_selectAll = function(s, n) {\n return n.querySelectorAll(s);\n }, d3_selectMatches = function(n, s) {\n var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, \"matchesSelector\")];\n d3_selectMatches = function(n, s) {\n return d3_selectMatcher.call(n, s);\n };\n return d3_selectMatches(n, s);\n };\n if (typeof Sizzle === \"function\") {\n d3_select = function(s, n) {\n return Sizzle(s, n)[0] || null;\n };\n d3_selectAll = Sizzle;\n d3_selectMatches = Sizzle.matchesSelector;\n }\n d3.selection = function() {\n return d3.select(d3_document.documentElement);\n };\n var d3_selectionPrototype = d3.selection.prototype = [];\n d3_selectionPrototype.select = function(selector) {\n var subgroups = [], subgroup, subnode, group, node;\n selector = d3_selection_selector(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n subgroup.parentNode = (group = this[j]).parentNode;\n for (var i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroup.push(subnode = selector.call(node, node.__data__, i, j));\n if (subnode && \"__data__\" in node) subnode.__data__ = node.__data__;\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_selector(selector) {\n return typeof selector === \"function\" ? selector : function() {\n return d3_select(selector, this);\n };\n }\n d3_selectionPrototype.selectAll = function(selector) {\n var subgroups = [], subgroup, node;\n selector = d3_selection_selectorAll(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));\n subgroup.parentNode = node;\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_selectorAll(selector) {\n return typeof selector === \"function\" ? selector : function() {\n return d3_selectAll(selector, this);\n };\n }\n var d3_nsXhtml = \"http://www.w3.org/1999/xhtml\";\n var d3_nsPrefix = {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: d3_nsXhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n };\n d3.ns = {\n prefix: d3_nsPrefix,\n qualify: function(name) {\n var i = name.indexOf(\":\"), prefix = name;\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return d3_nsPrefix.hasOwnProperty(prefix) ? {\n space: d3_nsPrefix[prefix],\n local: name\n } : name;\n }\n };\n d3_selectionPrototype.attr = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") {\n var node = this.node();\n name = d3.ns.qualify(name);\n return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);\n }\n for (value in name) this.each(d3_selection_attr(value, name[value]));\n return this;\n }\n return this.each(d3_selection_attr(name, value));\n };\n function d3_selection_attr(name, value) {\n name = d3.ns.qualify(name);\n function attrNull() {\n this.removeAttribute(name);\n }\n function attrNullNS() {\n this.removeAttributeNS(name.space, name.local);\n }\n function attrConstant() {\n this.setAttribute(name, value);\n }\n function attrConstantNS() {\n this.setAttributeNS(name.space, name.local, value);\n }\n function attrFunction() {\n var x = value.apply(this, arguments);\n if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);\n }\n function attrFunctionNS() {\n var x = value.apply(this, arguments);\n if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);\n }\n return value == null ? name.local ? attrNullNS : attrNull : typeof value === \"function\" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;\n }\n function d3_collapse(s) {\n return s.trim().replace(/\\s+/g, \" \");\n }\n d3_selectionPrototype.classed = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") {\n var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;\n if (value = node.classList) {\n while (++i < n) if (!value.contains(name[i])) return false;\n } else {\n value = node.getAttribute(\"class\");\n while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;\n }\n return true;\n }\n for (value in name) this.each(d3_selection_classed(value, name[value]));\n return this;\n }\n return this.each(d3_selection_classed(name, value));\n };\n function d3_selection_classedRe(name) {\n return new RegExp(\"(?:^|\\\\s+)\" + d3.requote(name) + \"(?:\\\\s+|$)\", \"g\");\n }\n function d3_selection_classes(name) {\n return (name + \"\").trim().split(/^|\\s+/);\n }\n function d3_selection_classed(name, value) {\n name = d3_selection_classes(name).map(d3_selection_classedName);\n var n = name.length;\n function classedConstant() {\n var i = -1;\n while (++i < n) name[i](this, value);\n }\n function classedFunction() {\n var i = -1, x = value.apply(this, arguments);\n while (++i < n) name[i](this, x);\n }\n return typeof value === \"function\" ? classedFunction : classedConstant;\n }\n function d3_selection_classedName(name) {\n var re = d3_selection_classedRe(name);\n return function(node, value) {\n if (c = node.classList) return value ? c.add(name) : c.remove(name);\n var c = node.getAttribute(\"class\") || \"\";\n if (value) {\n re.lastIndex = 0;\n if (!re.test(c)) node.setAttribute(\"class\", d3_collapse(c + \" \" + name));\n } else {\n node.setAttribute(\"class\", d3_collapse(c.replace(re, \" \")));\n }\n };\n }\n d3_selectionPrototype.style = function(name, value, priority) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof name !== \"string\") {\n if (n < 2) value = \"\";\n for (priority in name) this.each(d3_selection_style(priority, name[priority], value));\n return this;\n }\n if (n < 2) {\n var node = this.node();\n return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);\n }\n priority = \"\";\n }\n return this.each(d3_selection_style(name, value, priority));\n };\n function d3_selection_style(name, value, priority) {\n function styleNull() {\n this.style.removeProperty(name);\n }\n function styleConstant() {\n this.style.setProperty(name, value, priority);\n }\n function styleFunction() {\n var x = value.apply(this, arguments);\n if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);\n }\n return value == null ? styleNull : typeof value === \"function\" ? styleFunction : styleConstant;\n }\n d3_selectionPrototype.property = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") return this.node()[name];\n for (value in name) this.each(d3_selection_property(value, name[value]));\n return this;\n }\n return this.each(d3_selection_property(name, value));\n };\n function d3_selection_property(name, value) {\n function propertyNull() {\n delete this[name];\n }\n function propertyConstant() {\n this[name] = value;\n }\n function propertyFunction() {\n var x = value.apply(this, arguments);\n if (x == null) delete this[name]; else this[name] = x;\n }\n return value == null ? propertyNull : typeof value === \"function\" ? propertyFunction : propertyConstant;\n }\n d3_selectionPrototype.text = function(value) {\n return arguments.length ? this.each(typeof value === \"function\" ? function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n } : value == null ? function() {\n this.textContent = \"\";\n } : function() {\n this.textContent = value;\n }) : this.node().textContent;\n };\n d3_selectionPrototype.html = function(value) {\n return arguments.length ? this.each(typeof value === \"function\" ? function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n } : value == null ? function() {\n this.innerHTML = \"\";\n } : function() {\n this.innerHTML = value;\n }) : this.node().innerHTML;\n };\n d3_selectionPrototype.append = function(name) {\n name = d3_selection_creator(name);\n return this.select(function() {\n return this.appendChild(name.apply(this, arguments));\n });\n };\n function d3_selection_creator(name) {\n function create() {\n var document = this.ownerDocument, namespace = this.namespaceURI;\n return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name);\n }\n function createNS() {\n return this.ownerDocument.createElementNS(name.space, name.local);\n }\n return typeof name === \"function\" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;\n }\n d3_selectionPrototype.insert = function(name, before) {\n name = d3_selection_creator(name);\n before = d3_selection_selector(before);\n return this.select(function() {\n return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);\n });\n };\n d3_selectionPrototype.remove = function() {\n return this.each(d3_selectionRemove);\n };\n function d3_selectionRemove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n }\n d3_selectionPrototype.data = function(value, key) {\n var i = -1, n = this.length, group, node;\n if (!arguments.length) {\n value = new Array(n = (group = this[0]).length);\n while (++i < n) {\n if (node = group[i]) {\n value[i] = node.__data__;\n }\n }\n return value;\n }\n function bind(group, groupData) {\n var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;\n if (key) {\n var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;\n for (i = -1; ++i < n; ) {\n if (node = group[i]) {\n if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {\n exitNodes[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n keyValues[i] = keyValue;\n }\n }\n for (i = -1; ++i < m; ) {\n if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {\n enterNodes[i] = d3_selection_dataNode(nodeData);\n } else if (node !== true) {\n updateNodes[i] = node;\n node.__data__ = nodeData;\n }\n nodeByKeyValue.set(keyValue, true);\n }\n for (i = -1; ++i < n; ) {\n if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {\n exitNodes[i] = group[i];\n }\n }\n } else {\n for (i = -1; ++i < n0; ) {\n node = group[i];\n nodeData = groupData[i];\n if (node) {\n node.__data__ = nodeData;\n updateNodes[i] = node;\n } else {\n enterNodes[i] = d3_selection_dataNode(nodeData);\n }\n }\n for (;i < m; ++i) {\n enterNodes[i] = d3_selection_dataNode(groupData[i]);\n }\n for (;i < n; ++i) {\n exitNodes[i] = group[i];\n }\n }\n enterNodes.update = updateNodes;\n enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;\n enter.push(enterNodes);\n update.push(updateNodes);\n exit.push(exitNodes);\n }\n var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);\n if (typeof value === \"function\") {\n while (++i < n) {\n bind(group = this[i], value.call(group, group.parentNode.__data__, i));\n }\n } else {\n while (++i < n) {\n bind(group = this[i], value);\n }\n }\n update.enter = function() {\n return enter;\n };\n update.exit = function() {\n return exit;\n };\n return update;\n };\n function d3_selection_dataNode(data) {\n return {\n __data__: data\n };\n }\n d3_selectionPrototype.datum = function(value) {\n return arguments.length ? this.property(\"__data__\", value) : this.property(\"__data__\");\n };\n d3_selectionPrototype.filter = function(filter) {\n var subgroups = [], subgroup, group, node;\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n subgroup.parentNode = (group = this[j]).parentNode;\n for (var i = 0, n = group.length; i < n; i++) {\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n subgroup.push(node);\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_filter(selector) {\n return function() {\n return d3_selectMatches(this, selector);\n };\n }\n d3_selectionPrototype.order = function() {\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n if (node = group[i]) {\n if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n return this;\n };\n d3_selectionPrototype.sort = function(comparator) {\n comparator = d3_selection_sortComparator.apply(this, arguments);\n for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);\n return this.order();\n };\n function d3_selection_sortComparator(comparator) {\n if (!arguments.length) comparator = d3_ascending;\n return function(a, b) {\n return a && b ? comparator(a.__data__, b.__data__) : !a - !b;\n };\n }\n d3_selectionPrototype.each = function(callback) {\n return d3_selection_each(this, function(node, i, j) {\n callback.call(node, node.__data__, i, j);\n });\n };\n function d3_selection_each(groups, callback) {\n for (var j = 0, m = groups.length; j < m; j++) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {\n if (node = group[i]) callback(node, i, j);\n }\n }\n return groups;\n }\n d3_selectionPrototype.call = function(callback) {\n var args = d3_array(arguments);\n callback.apply(args[0] = this, args);\n return this;\n };\n d3_selectionPrototype.empty = function() {\n return !this.node();\n };\n d3_selectionPrototype.node = function() {\n for (var j = 0, m = this.length; j < m; j++) {\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n var node = group[i];\n if (node) return node;\n }\n }\n return null;\n };\n d3_selectionPrototype.size = function() {\n var n = 0;\n d3_selection_each(this, function() {\n ++n;\n });\n return n;\n };\n function d3_selection_enter(selection) {\n d3_subclass(selection, d3_selection_enterPrototype);\n return selection;\n }\n var d3_selection_enterPrototype = [];\n d3.selection.enter = d3_selection_enter;\n d3.selection.enter.prototype = d3_selection_enterPrototype;\n d3_selection_enterPrototype.append = d3_selectionPrototype.append;\n d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;\n d3_selection_enterPrototype.node = d3_selectionPrototype.node;\n d3_selection_enterPrototype.call = d3_selectionPrototype.call;\n d3_selection_enterPrototype.size = d3_selectionPrototype.size;\n d3_selection_enterPrototype.select = function(selector) {\n var subgroups = [], subgroup, subnode, upgroup, group, node;\n for (var j = -1, m = this.length; ++j < m; ) {\n upgroup = (group = this[j]).update;\n subgroups.push(subgroup = []);\n subgroup.parentNode = group.parentNode;\n for (var i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));\n subnode.__data__ = node.__data__;\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_selection(subgroups);\n };\n d3_selection_enterPrototype.insert = function(name, before) {\n if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);\n return d3_selectionPrototype.insert.call(this, name, before);\n };\n function d3_selection_enterInsertBefore(enter) {\n var i0, j0;\n return function(d, i, j) {\n var group = enter[j].update, n = group.length, node;\n if (j != j0) j0 = j, i0 = 0;\n if (i >= i0) i0 = i + 1;\n while (!(node = group[i0]) && ++i0 < n) ;\n return node;\n };\n }\n d3.select = function(node) {\n var group;\n if (typeof node === \"string\") {\n group = [ d3_select(node, d3_document) ];\n group.parentNode = d3_document.documentElement;\n } else {\n group = [ node ];\n group.parentNode = d3_documentElement(node);\n }\n return d3_selection([ group ]);\n };\n d3.selectAll = function(nodes) {\n var group;\n if (typeof nodes === \"string\") {\n group = d3_array(d3_selectAll(nodes, d3_document));\n group.parentNode = d3_document.documentElement;\n } else {\n group = d3_array(nodes);\n group.parentNode = null;\n }\n return d3_selection([ group ]);\n };\n d3_selectionPrototype.on = function(type, listener, capture) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof type !== \"string\") {\n if (n < 2) listener = false;\n for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));\n return this;\n }\n if (n < 2) return (n = this.node()[\"__on\" + type]) && n._;\n capture = false;\n }\n return this.each(d3_selection_on(type, listener, capture));\n };\n function d3_selection_on(type, listener, capture) {\n var name = \"__on\" + type, i = type.indexOf(\".\"), wrap = d3_selection_onListener;\n if (i > 0) type = type.slice(0, i);\n var filter = d3_selection_onFilters.get(type);\n if (filter) type = filter, wrap = d3_selection_onFilter;\n function onRemove() {\n var l = this[name];\n if (l) {\n this.removeEventListener(type, l, l.$);\n delete this[name];\n }\n }\n function onAdd() {\n var l = wrap(listener, d3_array(arguments));\n onRemove.call(this);\n this.addEventListener(type, this[name] = l, l.$ = capture);\n l._ = listener;\n }\n function removeAll() {\n var re = new RegExp(\"^__on([^.]+)\" + d3.requote(type) + \"$\"), match;\n for (var name in this) {\n if (match = name.match(re)) {\n var l = this[name];\n this.removeEventListener(match[1], l, l.$);\n delete this[name];\n }\n }\n }\n return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;\n }\n var d3_selection_onFilters = d3.map({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\"\n });\n if (d3_document) {\n d3_selection_onFilters.forEach(function(k) {\n if (\"on\" + k in d3_document) d3_selection_onFilters.remove(k);\n });\n }\n function d3_selection_onListener(listener, argumentz) {\n return function(e) {\n var o = d3.event;\n d3.event = e;\n argumentz[0] = this.__data__;\n try {\n listener.apply(this, argumentz);\n } finally {\n d3.event = o;\n }\n };\n }\n function d3_selection_onFilter(listener, argumentz) {\n var l = d3_selection_onListener(listener, argumentz);\n return function(e) {\n var target = this, related = e.relatedTarget;\n if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {\n l.call(target, e);\n }\n };\n }\n var d3_event_dragSelect, d3_event_dragId = 0;\n function d3_event_dragSuppress(node) {\n var name = \".dragsuppress-\" + ++d3_event_dragId, click = \"click\" + name, w = d3.select(d3_window(node)).on(\"touchmove\" + name, d3_eventPreventDefault).on(\"dragstart\" + name, d3_eventPreventDefault).on(\"selectstart\" + name, d3_eventPreventDefault);\n if (d3_event_dragSelect == null) {\n d3_event_dragSelect = \"onselectstart\" in node ? false : d3_vendorSymbol(node.style, \"userSelect\");\n }\n if (d3_event_dragSelect) {\n var style = d3_documentElement(node).style, select = style[d3_event_dragSelect];\n style[d3_event_dragSelect] = \"none\";\n }\n return function(suppressClick) {\n w.on(name, null);\n if (d3_event_dragSelect) style[d3_event_dragSelect] = select;\n if (suppressClick) {\n var off = function() {\n w.on(click, null);\n };\n w.on(click, function() {\n d3_eventPreventDefault();\n off();\n }, true);\n setTimeout(off, 0);\n }\n };\n }\n d3.mouse = function(container) {\n return d3_mousePoint(container, d3_eventSource());\n };\n var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;\n function d3_mousePoint(container, e) {\n if (e.changedTouches) e = e.changedTouches[0];\n var svg = container.ownerSVGElement || container;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n if (d3_mouse_bug44083 < 0) {\n var window = d3_window(container);\n if (window.scrollX || window.scrollY) {\n svg = d3.select(\"body\").append(\"svg\").style({\n position: \"absolute\",\n top: 0,\n left: 0,\n margin: 0,\n padding: 0,\n border: \"none\"\n }, \"important\");\n var ctm = svg[0][0].getScreenCTM();\n d3_mouse_bug44083 = !(ctm.f || ctm.e);\n svg.remove();\n }\n }\n if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, \n point.y = e.clientY;\n point = point.matrixTransform(container.getScreenCTM().inverse());\n return [ point.x, point.y ];\n }\n var rect = container.getBoundingClientRect();\n return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];\n }\n d3.touch = function(container, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;\n if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return d3_mousePoint(container, touch);\n }\n }\n };\n d3.behavior.drag = function() {\n var event = d3_eventDispatch(drag, \"drag\", \"dragstart\", \"dragend\"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, \"mousemove\", \"mouseup\"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, \"touchmove\", \"touchend\");\n function drag() {\n this.on(\"mousedown.drag\", mousedown).on(\"touchstart.drag\", touchstart);\n }\n function dragstart(id, position, subject, move, end) {\n return function() {\n var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = \".drag\" + (dragId == null ? \"\" : \"-\" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);\n if (origin) {\n dragOffset = origin.apply(that, arguments);\n dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];\n } else {\n dragOffset = [ 0, 0 ];\n }\n dispatch({\n type: \"dragstart\"\n });\n function moved() {\n var position1 = position(parent, dragId), dx, dy;\n if (!position1) return;\n dx = position1[0] - position0[0];\n dy = position1[1] - position0[1];\n dragged |= dx | dy;\n position0 = position1;\n dispatch({\n type: \"drag\",\n x: position1[0] + dragOffset[0],\n y: position1[1] + dragOffset[1],\n dx: dx,\n dy: dy\n });\n }\n function ended() {\n if (!position(parent, dragId)) return;\n dragSubject.on(move + dragName, null).on(end + dragName, null);\n dragRestore(dragged);\n dispatch({\n type: \"dragend\"\n });\n }\n };\n }\n drag.origin = function(x) {\n if (!arguments.length) return origin;\n origin = x;\n return drag;\n };\n return d3.rebind(drag, event, \"on\");\n };\n function d3_behavior_dragTouchId() {\n return d3.event.changedTouches[0].identifier;\n }\n d3.touches = function(container, touches) {\n if (arguments.length < 2) touches = d3_eventSource().touches;\n return touches ? d3_array(touches).map(function(touch) {\n var point = d3_mousePoint(container, touch);\n point.identifier = touch.identifier;\n return point;\n }) : [];\n };\n var ε = 1e-6, ε2 = ε * ε, Ï€ = Math.PI, Ï„ = 2 * Ï€, τε = Ï„ - ε, halfÏ€ = Ï€ / 2, d3_radians = Ï€ / 180, d3_degrees = 180 / Ï€;\n function d3_sgn(x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n }\n function d3_cross2d(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n }\n function d3_acos(x) {\n return x > 1 ? 0 : x < -1 ? Ï€ : Math.acos(x);\n }\n function d3_asin(x) {\n return x > 1 ? halfÏ€ : x < -1 ? -halfÏ€ : Math.asin(x);\n }\n function d3_sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n }\n function d3_cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n }\n function d3_tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n }\n function d3_haversin(x) {\n return (x = Math.sin(x / 2)) * x;\n }\n var Ï = Math.SQRT2, Ï2 = 2, Ï4 = 4;\n d3.interpolateZoom = function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n if (d2 < ε2) {\n S = Math.log(w1 / w0) / Ï;\n i = function(t) {\n return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(Ï * t * S) ];\n };\n } else {\n var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + Ï4 * d2) / (2 * w0 * Ï2 * d1), b1 = (w1 * w1 - w0 * w0 - Ï4 * d2) / (2 * w1 * Ï2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / Ï;\n i = function(t) {\n var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (Ï2 * d1) * (coshr0 * d3_tanh(Ï * s + r0) - d3_sinh(r0));\n return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(Ï * s + r0) ];\n };\n }\n i.duration = S * 1e3;\n return i;\n };\n d3.behavior.zoom = function() {\n var view = {\n x: 0,\n y: 0,\n k: 1\n }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = \"mousedown.zoom\", mousemove = \"mousemove.zoom\", mouseup = \"mouseup.zoom\", mousewheelTimer, touchstart = \"touchstart.zoom\", touchtime, event = d3_eventDispatch(zoom, \"zoomstart\", \"zoom\", \"zoomend\"), x0, x1, y0, y1;\n if (!d3_behavior_zoomWheel) {\n d3_behavior_zoomWheel = \"onwheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);\n }, \"wheel\") : \"onmousewheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n return d3.event.wheelDelta;\n }, \"mousewheel\") : (d3_behavior_zoomDelta = function() {\n return -d3.event.detail;\n }, \"MozMousePixelScroll\");\n }\n function zoom(g) {\n g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + \".zoom\", mousewheeled).on(\"dblclick.zoom\", dblclicked).on(touchstart, touchstarted);\n }\n zoom.event = function(g) {\n g.each(function() {\n var dispatch = event.of(this, arguments), view1 = view;\n if (d3_transitionInheritId) {\n d3.select(this).transition().each(\"start.zoom\", function() {\n view = this.__chart__ || {\n x: 0,\n y: 0,\n k: 1\n };\n zoomstarted(dispatch);\n }).tween(\"zoom:zoom\", function() {\n var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);\n return function(t) {\n var l = i(t), k = dx / l[2];\n this.__chart__ = view = {\n x: cx - l[0] * k,\n y: cy - l[1] * k,\n k: k\n };\n zoomed(dispatch);\n };\n }).each(\"interrupt.zoom\", function() {\n zoomended(dispatch);\n }).each(\"end.zoom\", function() {\n zoomended(dispatch);\n });\n } else {\n this.__chart__ = view;\n zoomstarted(dispatch);\n zoomed(dispatch);\n zoomended(dispatch);\n }\n });\n };\n zoom.translate = function(_) {\n if (!arguments.length) return [ view.x, view.y ];\n view = {\n x: +_[0],\n y: +_[1],\n k: view.k\n };\n rescale();\n return zoom;\n };\n zoom.scale = function(_) {\n if (!arguments.length) return view.k;\n view = {\n x: view.x,\n y: view.y,\n k: null\n };\n scaleTo(+_);\n rescale();\n return zoom;\n };\n zoom.scaleExtent = function(_) {\n if (!arguments.length) return scaleExtent;\n scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.center = function(_) {\n if (!arguments.length) return center;\n center = _ && [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.size = function(_) {\n if (!arguments.length) return size;\n size = _ && [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.duration = function(_) {\n if (!arguments.length) return duration;\n duration = +_;\n return zoom;\n };\n zoom.x = function(z) {\n if (!arguments.length) return x1;\n x1 = z;\n x0 = z.copy();\n view = {\n x: 0,\n y: 0,\n k: 1\n };\n return zoom;\n };\n zoom.y = function(z) {\n if (!arguments.length) return y1;\n y1 = z;\n y0 = z.copy();\n view = {\n x: 0,\n y: 0,\n k: 1\n };\n return zoom;\n };\n function location(p) {\n return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];\n }\n function point(l) {\n return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];\n }\n function scaleTo(s) {\n view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));\n }\n function translateTo(p, l) {\n l = point(l);\n view.x += p[0] - l[0];\n view.y += p[1] - l[1];\n }\n function zoomTo(that, p, l, k) {\n that.__chart__ = {\n x: view.x,\n y: view.y,\n k: view.k\n };\n scaleTo(Math.pow(2, k));\n translateTo(center0 = p, l);\n that = d3.select(that);\n if (duration > 0) that = that.transition().duration(duration);\n that.call(zoom.event);\n }\n function rescale() {\n if (x1) x1.domain(x0.range().map(function(x) {\n return (x - view.x) / view.k;\n }).map(x0.invert));\n if (y1) y1.domain(y0.range().map(function(y) {\n return (y - view.y) / view.k;\n }).map(y0.invert));\n }\n function zoomstarted(dispatch) {\n if (!zooming++) dispatch({\n type: \"zoomstart\"\n });\n }\n function zoomed(dispatch) {\n rescale();\n dispatch({\n type: \"zoom\",\n scale: view.k,\n translate: [ view.x, view.y ]\n });\n }\n function zoomended(dispatch) {\n if (!--zooming) dispatch({\n type: \"zoomend\"\n }), center0 = null;\n }\n function mousedowned() {\n var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);\n d3_selection_interrupt.call(that);\n zoomstarted(dispatch);\n function moved() {\n dragged = 1;\n translateTo(d3.mouse(that), location0);\n zoomed(dispatch);\n }\n function ended() {\n subject.on(mousemove, null).on(mouseup, null);\n dragRestore(dragged);\n zoomended(dispatch);\n }\n }\n function touchstarted() {\n var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = \".zoom-\" + d3.event.changedTouches[0].identifier, touchmove = \"touchmove\" + zoomName, touchend = \"touchend\" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);\n started();\n zoomstarted(dispatch);\n subject.on(mousedown, null).on(touchstart, started);\n function relocate() {\n var touches = d3.touches(that);\n scale0 = view.k;\n touches.forEach(function(t) {\n if (t.identifier in locations0) locations0[t.identifier] = location(t);\n });\n return touches;\n }\n function started() {\n var target = d3.event.target;\n d3.select(target).on(touchmove, moved).on(touchend, ended);\n targets.push(target);\n var changed = d3.event.changedTouches;\n for (var i = 0, n = changed.length; i < n; ++i) {\n locations0[changed[i].identifier] = null;\n }\n var touches = relocate(), now = Date.now();\n if (touches.length === 1) {\n if (now - touchtime < 500) {\n var p = touches[0];\n zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);\n d3_eventPreventDefault();\n }\n touchtime = now;\n } else if (touches.length > 1) {\n var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];\n distance0 = dx * dx + dy * dy;\n }\n }\n function moved() {\n var touches = d3.touches(that), p0, l0, p1, l1;\n d3_selection_interrupt.call(that);\n for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {\n p1 = touches[i];\n if (l1 = locations0[p1.identifier]) {\n if (l0) break;\n p0 = p1, l0 = l1;\n }\n }\n if (l1) {\n var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);\n p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];\n l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];\n scaleTo(scale1 * scale0);\n }\n touchtime = null;\n translateTo(p0, l0);\n zoomed(dispatch);\n }\n function ended() {\n if (d3.event.touches.length) {\n var changed = d3.event.changedTouches;\n for (var i = 0, n = changed.length; i < n; ++i) {\n delete locations0[changed[i].identifier];\n }\n for (var identifier in locations0) {\n return void relocate();\n }\n }\n d3.selectAll(targets).on(zoomName, null);\n subject.on(mousedown, mousedowned).on(touchstart, touchstarted);\n dragRestore();\n zoomended(dispatch);\n }\n }\n function mousewheeled() {\n var dispatch = event.of(this, arguments);\n if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), \n translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);\n mousewheelTimer = setTimeout(function() {\n mousewheelTimer = null;\n zoomended(dispatch);\n }, 50);\n d3_eventPreventDefault();\n scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);\n translateTo(center0, translate0);\n zoomed(dispatch);\n }\n function dblclicked() {\n var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;\n zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);\n }\n return d3.rebind(zoom, event, \"on\");\n };\n var d3_behavior_zoomInfinity = [ 0, Infinity ], d3_behavior_zoomDelta, d3_behavior_zoomWheel;\n d3.color = d3_color;\n function d3_color() {}\n d3_color.prototype.toString = function() {\n return this.rgb() + \"\";\n };\n d3.hsl = d3_hsl;\n function d3_hsl(h, s, l) {\n return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse(\"\" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);\n }\n var d3_hslPrototype = d3_hsl.prototype = new d3_color();\n d3_hslPrototype.brighter = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_hsl(this.h, this.s, this.l / k);\n };\n d3_hslPrototype.darker = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_hsl(this.h, this.s, k * this.l);\n };\n d3_hslPrototype.rgb = function() {\n return d3_hsl_rgb(this.h, this.s, this.l);\n };\n function d3_hsl_rgb(h, s, l) {\n var m1, m2;\n h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;\n s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;\n l = l < 0 ? 0 : l > 1 ? 1 : l;\n m2 = l <= .5 ? l * (1 + s) : l + s - l * s;\n m1 = 2 * l - m2;\n function v(h) {\n if (h > 360) h -= 360; else if (h < 0) h += 360;\n if (h < 60) return m1 + (m2 - m1) * h / 60;\n if (h < 180) return m2;\n if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;\n return m1;\n }\n function vv(h) {\n return Math.round(v(h) * 255);\n }\n return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));\n }\n d3.hcl = d3_hcl;\n function d3_hcl(h, c, l) {\n return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);\n }\n var d3_hclPrototype = d3_hcl.prototype = new d3_color();\n d3_hclPrototype.brighter = function(k) {\n return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));\n };\n d3_hclPrototype.darker = function(k) {\n return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));\n };\n d3_hclPrototype.rgb = function() {\n return d3_hcl_lab(this.h, this.c, this.l).rgb();\n };\n function d3_hcl_lab(h, c, l) {\n if (isNaN(h)) h = 0;\n if (isNaN(c)) c = 0;\n return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);\n }\n d3.lab = d3_lab;\n function d3_lab(l, a, b) {\n return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);\n }\n var d3_lab_K = 18;\n var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;\n var d3_labPrototype = d3_lab.prototype = new d3_color();\n d3_labPrototype.brighter = function(k) {\n return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n };\n d3_labPrototype.darker = function(k) {\n return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n };\n d3_labPrototype.rgb = function() {\n return d3_lab_rgb(this.l, this.a, this.b);\n };\n function d3_lab_rgb(l, a, b) {\n var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;\n x = d3_lab_xyz(x) * d3_lab_X;\n y = d3_lab_xyz(y) * d3_lab_Y;\n z = d3_lab_xyz(z) * d3_lab_Z;\n return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));\n }\n function d3_lab_hcl(l, a, b) {\n return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);\n }\n function d3_lab_xyz(x) {\n return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;\n }\n function d3_xyz_lab(x) {\n return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;\n }\n function d3_xyz_rgb(r) {\n return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));\n }\n d3.rgb = d3_rgb;\n function d3_rgb(r, g, b) {\n return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse(\"\" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);\n }\n function d3_rgbNumber(value) {\n return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);\n }\n function d3_rgbString(value) {\n return d3_rgbNumber(value) + \"\";\n }\n var d3_rgbPrototype = d3_rgb.prototype = new d3_color();\n d3_rgbPrototype.brighter = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n var r = this.r, g = this.g, b = this.b, i = 30;\n if (!r && !g && !b) return new d3_rgb(i, i, i);\n if (r && r < i) r = i;\n if (g && g < i) g = i;\n if (b && b < i) b = i;\n return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));\n };\n d3_rgbPrototype.darker = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_rgb(k * this.r, k * this.g, k * this.b);\n };\n d3_rgbPrototype.hsl = function() {\n return d3_rgb_hsl(this.r, this.g, this.b);\n };\n d3_rgbPrototype.toString = function() {\n return \"#\" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);\n };\n function d3_rgb_hex(v) {\n return v < 16 ? \"0\" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);\n }\n function d3_rgb_parse(format, rgb, hsl) {\n var r = 0, g = 0, b = 0, m1, m2, color;\n m1 = /([a-z]+)\\((.*)\\)/.exec(format = format.toLowerCase());\n if (m1) {\n m2 = m1[2].split(\",\");\n switch (m1[1]) {\n case \"hsl\":\n {\n return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);\n }\n\n case \"rgb\":\n {\n return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));\n }\n }\n }\n if (color = d3_rgb_names.get(format)) {\n return rgb(color.r, color.g, color.b);\n }\n if (format != null && format.charAt(0) === \"#\" && !isNaN(color = parseInt(format.slice(1), 16))) {\n if (format.length === 4) {\n r = (color & 3840) >> 4;\n r = r >> 4 | r;\n g = color & 240;\n g = g >> 4 | g;\n b = color & 15;\n b = b << 4 | b;\n } else if (format.length === 7) {\n r = (color & 16711680) >> 16;\n g = (color & 65280) >> 8;\n b = color & 255;\n }\n }\n return rgb(r, g, b);\n }\n function d3_rgb_hsl(r, g, b) {\n var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;\n if (d) {\n s = l < .5 ? d / (max + min) : d / (2 - max - min);\n if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;\n h *= 60;\n } else {\n h = NaN;\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new d3_hsl(h, s, l);\n }\n function d3_rgb_lab(r, g, b) {\n r = d3_rgb_xyz(r);\n g = d3_rgb_xyz(g);\n b = d3_rgb_xyz(b);\n var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);\n return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));\n }\n function d3_rgb_xyz(r) {\n return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);\n }\n function d3_rgb_parseNumber(c) {\n var f = parseFloat(c);\n return c.charAt(c.length - 1) === \"%\" ? Math.round(f * 2.55) : f;\n }\n var d3_rgb_names = d3.map({\n aliceblue: 15792383,\n antiquewhite: 16444375,\n aqua: 65535,\n aquamarine: 8388564,\n azure: 15794175,\n beige: 16119260,\n bisque: 16770244,\n black: 0,\n blanchedalmond: 16772045,\n blue: 255,\n blueviolet: 9055202,\n brown: 10824234,\n burlywood: 14596231,\n cadetblue: 6266528,\n chartreuse: 8388352,\n chocolate: 13789470,\n coral: 16744272,\n cornflowerblue: 6591981,\n cornsilk: 16775388,\n crimson: 14423100,\n cyan: 65535,\n darkblue: 139,\n darkcyan: 35723,\n darkgoldenrod: 12092939,\n darkgray: 11119017,\n darkgreen: 25600,\n darkgrey: 11119017,\n darkkhaki: 12433259,\n darkmagenta: 9109643,\n darkolivegreen: 5597999,\n darkorange: 16747520,\n darkorchid: 10040012,\n darkred: 9109504,\n darksalmon: 15308410,\n darkseagreen: 9419919,\n darkslateblue: 4734347,\n darkslategray: 3100495,\n darkslategrey: 3100495,\n darkturquoise: 52945,\n darkviolet: 9699539,\n deeppink: 16716947,\n deepskyblue: 49151,\n dimgray: 6908265,\n dimgrey: 6908265,\n dodgerblue: 2003199,\n firebrick: 11674146,\n floralwhite: 16775920,\n forestgreen: 2263842,\n fuchsia: 16711935,\n gainsboro: 14474460,\n ghostwhite: 16316671,\n gold: 16766720,\n goldenrod: 14329120,\n gray: 8421504,\n green: 32768,\n greenyellow: 11403055,\n grey: 8421504,\n honeydew: 15794160,\n hotpink: 16738740,\n indianred: 13458524,\n indigo: 4915330,\n ivory: 16777200,\n khaki: 15787660,\n lavender: 15132410,\n lavenderblush: 16773365,\n lawngreen: 8190976,\n lemonchiffon: 16775885,\n lightblue: 11393254,\n lightcoral: 15761536,\n lightcyan: 14745599,\n lightgoldenrodyellow: 16448210,\n lightgray: 13882323,\n lightgreen: 9498256,\n lightgrey: 13882323,\n lightpink: 16758465,\n lightsalmon: 16752762,\n lightseagreen: 2142890,\n lightskyblue: 8900346,\n lightslategray: 7833753,\n lightslategrey: 7833753,\n lightsteelblue: 11584734,\n lightyellow: 16777184,\n lime: 65280,\n limegreen: 3329330,\n linen: 16445670,\n magenta: 16711935,\n maroon: 8388608,\n mediumaquamarine: 6737322,\n mediumblue: 205,\n mediumorchid: 12211667,\n mediumpurple: 9662683,\n mediumseagreen: 3978097,\n mediumslateblue: 8087790,\n mediumspringgreen: 64154,\n mediumturquoise: 4772300,\n mediumvioletred: 13047173,\n midnightblue: 1644912,\n mintcream: 16121850,\n mistyrose: 16770273,\n moccasin: 16770229,\n navajowhite: 16768685,\n navy: 128,\n oldlace: 16643558,\n olive: 8421376,\n olivedrab: 7048739,\n orange: 16753920,\n orangered: 16729344,\n orchid: 14315734,\n palegoldenrod: 15657130,\n palegreen: 10025880,\n paleturquoise: 11529966,\n palevioletred: 14381203,\n papayawhip: 16773077,\n peachpuff: 16767673,\n peru: 13468991,\n pink: 16761035,\n plum: 14524637,\n powderblue: 11591910,\n purple: 8388736,\n rebeccapurple: 6697881,\n red: 16711680,\n rosybrown: 12357519,\n royalblue: 4286945,\n saddlebrown: 9127187,\n salmon: 16416882,\n sandybrown: 16032864,\n seagreen: 3050327,\n seashell: 16774638,\n sienna: 10506797,\n silver: 12632256,\n skyblue: 8900331,\n slateblue: 6970061,\n slategray: 7372944,\n slategrey: 7372944,\n snow: 16775930,\n springgreen: 65407,\n steelblue: 4620980,\n tan: 13808780,\n teal: 32896,\n thistle: 14204888,\n tomato: 16737095,\n turquoise: 4251856,\n violet: 15631086,\n wheat: 16113331,\n white: 16777215,\n whitesmoke: 16119285,\n yellow: 16776960,\n yellowgreen: 10145074\n });\n d3_rgb_names.forEach(function(key, value) {\n d3_rgb_names.set(key, d3_rgbNumber(value));\n });\n function d3_functor(v) {\n return typeof v === \"function\" ? v : function() {\n return v;\n };\n }\n d3.functor = d3_functor;\n d3.xhr = d3_xhrType(d3_identity);\n function d3_xhrType(response) {\n return function(url, mimeType, callback) {\n if (arguments.length === 2 && typeof mimeType === \"function\") callback = mimeType, \n mimeType = null;\n return d3_xhr(url, mimeType, response, callback);\n };\n }\n function d3_xhr(url, mimeType, response, callback) {\n var xhr = {}, dispatch = d3.dispatch(\"beforesend\", \"progress\", \"load\", \"error\"), headers = {}, request = new XMLHttpRequest(), responseType = null;\n if (this.XDomainRequest && !(\"withCredentials\" in request) && /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n \"onload\" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {\n request.readyState > 3 && respond();\n };\n function respond() {\n var status = request.status, result;\n if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n try {\n result = response.call(xhr, request);\n } catch (e) {\n dispatch.error.call(xhr, e);\n return;\n }\n dispatch.load.call(xhr, result);\n } else {\n dispatch.error.call(xhr, request);\n }\n }\n request.onprogress = function(event) {\n var o = d3.event;\n d3.event = event;\n try {\n dispatch.progress.call(xhr, request);\n } finally {\n d3.event = o;\n }\n };\n xhr.header = function(name, value) {\n name = (name + \"\").toLowerCase();\n if (arguments.length < 2) return headers[name];\n if (value == null) delete headers[name]; else headers[name] = value + \"\";\n return xhr;\n };\n xhr.mimeType = function(value) {\n if (!arguments.length) return mimeType;\n mimeType = value == null ? null : value + \"\";\n return xhr;\n };\n xhr.responseType = function(value) {\n if (!arguments.length) return responseType;\n responseType = value;\n return xhr;\n };\n xhr.response = function(value) {\n response = value;\n return xhr;\n };\n [ \"get\", \"post\" ].forEach(function(method) {\n xhr[method] = function() {\n return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));\n };\n });\n xhr.send = function(method, data, callback) {\n if (arguments.length === 2 && typeof data === \"function\") callback = data, data = null;\n request.open(method, url, true);\n if (mimeType != null && !(\"accept\" in headers)) headers[\"accept\"] = mimeType + \",*/*\";\n if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);\n if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);\n if (responseType != null) request.responseType = responseType;\n if (callback != null) xhr.on(\"error\", callback).on(\"load\", function(request) {\n callback(null, request);\n });\n dispatch.beforesend.call(xhr, request);\n request.send(data == null ? null : data);\n return xhr;\n };\n xhr.abort = function() {\n request.abort();\n return xhr;\n };\n d3.rebind(xhr, dispatch, \"on\");\n return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));\n }\n function d3_xhr_fixCallback(callback) {\n return callback.length === 1 ? function(error, request) {\n callback(error == null ? request : null);\n } : callback;\n }\n function d3_xhrHasResponse(request) {\n var type = request.responseType;\n return type && type !== \"text\" ? request.response : request.responseText;\n }\n d3.dsv = function(delimiter, mimeType) {\n var reFormat = new RegExp('[\"' + delimiter + \"\\n]\"), delimiterCode = delimiter.charCodeAt(0);\n function dsv(url, row, callback) {\n if (arguments.length < 3) callback = row, row = null;\n var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);\n xhr.row = function(_) {\n return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;\n };\n return xhr;\n }\n function response(request) {\n return dsv.parse(request.responseText);\n }\n function typedResponse(f) {\n return function(request) {\n return dsv.parse(request.responseText, f);\n };\n }\n dsv.parse = function(text, f) {\n var o;\n return dsv.parseRows(text, function(row, i) {\n if (o) return o(row, i - 1);\n var a = new Function(\"d\", \"return {\" + row.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"]\";\n }).join(\",\") + \"}\");\n o = f ? function(row, i) {\n return f(a(row), i);\n } : a;\n });\n };\n dsv.parseRows = function(text, f) {\n var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;\n function token() {\n if (I >= N) return EOF;\n if (eol) return eol = false, EOL;\n var j = I;\n if (text.charCodeAt(j) === 34) {\n var i = j;\n while (i++ < N) {\n if (text.charCodeAt(i) === 34) {\n if (text.charCodeAt(i + 1) !== 34) break;\n ++i;\n }\n }\n I = i + 2;\n var c = text.charCodeAt(i + 1);\n if (c === 13) {\n eol = true;\n if (text.charCodeAt(i + 2) === 10) ++I;\n } else if (c === 10) {\n eol = true;\n }\n return text.slice(j + 1, i).replace(/\"\"/g, '\"');\n }\n while (I < N) {\n var c = text.charCodeAt(I++), k = 1;\n if (c === 10) eol = true; else if (c === 13) {\n eol = true;\n if (text.charCodeAt(I) === 10) ++I, ++k;\n } else if (c !== delimiterCode) continue;\n return text.slice(j, I - k);\n }\n return text.slice(j);\n }\n while ((t = token()) !== EOF) {\n var a = [];\n while (t !== EOL && t !== EOF) {\n a.push(t);\n t = token();\n }\n if (f && (a = f(a, n++)) == null) continue;\n rows.push(a);\n }\n return rows;\n };\n dsv.format = function(rows) {\n if (Array.isArray(rows[0])) return dsv.formatRows(rows);\n var fieldSet = new d3_Set(), fields = [];\n rows.forEach(function(row) {\n for (var field in row) {\n if (!fieldSet.has(field)) {\n fields.push(fieldSet.add(field));\n }\n }\n });\n return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {\n return fields.map(function(field) {\n return formatValue(row[field]);\n }).join(delimiter);\n })).join(\"\\n\");\n };\n dsv.formatRows = function(rows) {\n return rows.map(formatRow).join(\"\\n\");\n };\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n function formatValue(text) {\n return reFormat.test(text) ? '\"' + text.replace(/\\\"/g, '\"\"') + '\"' : text;\n }\n return dsv;\n };\n d3.csv = d3.dsv(\",\", \"text/csv\");\n d3.tsv = d3.dsv(\"\t\", \"text/tab-separated-values\");\n var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, \"requestAnimationFrame\")] || function(callback) {\n setTimeout(callback, 17);\n };\n d3.timer = function() {\n d3_timer.apply(this, arguments);\n };\n function d3_timer(callback, delay, then) {\n var n = arguments.length;\n if (n < 2) delay = 0;\n if (n < 3) then = Date.now();\n var time = then + delay, timer = {\n c: callback,\n t: time,\n n: null\n };\n if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;\n d3_timer_queueTail = timer;\n if (!d3_timer_interval) {\n d3_timer_timeout = clearTimeout(d3_timer_timeout);\n d3_timer_interval = 1;\n d3_timer_frame(d3_timer_step);\n }\n return timer;\n }\n function d3_timer_step() {\n var now = d3_timer_mark(), delay = d3_timer_sweep() - now;\n if (delay > 24) {\n if (isFinite(delay)) {\n clearTimeout(d3_timer_timeout);\n d3_timer_timeout = setTimeout(d3_timer_step, delay);\n }\n d3_timer_interval = 0;\n } else {\n d3_timer_interval = 1;\n d3_timer_frame(d3_timer_step);\n }\n }\n d3.timer.flush = function() {\n d3_timer_mark();\n d3_timer_sweep();\n };\n function d3_timer_mark() {\n var now = Date.now(), timer = d3_timer_queueHead;\n while (timer) {\n if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;\n timer = timer.n;\n }\n return now;\n }\n function d3_timer_sweep() {\n var t0, t1 = d3_timer_queueHead, time = Infinity;\n while (t1) {\n if (t1.c) {\n if (t1.t < time) time = t1.t;\n t1 = (t0 = t1).n;\n } else {\n t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;\n }\n }\n d3_timer_queueTail = t0;\n return time;\n }\n function d3_format_precision(x, p) {\n return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);\n }\n d3.round = function(x, n) {\n return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\n };\n var d3_formatPrefixes = [ \"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\" ].map(d3_formatPrefix);\n d3.formatPrefix = function(value, precision) {\n var i = 0;\n if (value = +value) {\n if (value < 0) value *= -1;\n if (precision) value = d3.round(value, d3_format_precision(value, precision));\n i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);\n i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));\n }\n return d3_formatPrefixes[8 + i / 3];\n };\n function d3_formatPrefix(d, i) {\n var k = Math.pow(10, abs(8 - i) * 3);\n return {\n scale: i > 8 ? function(d) {\n return d / k;\n } : function(d) {\n return d * k;\n },\n symbol: d\n };\n }\n function d3_locale_numberFormat(locale) {\n var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) {\n var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0;\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = locale_grouping[j = (j + 1) % locale_grouping.length];\n }\n return t.reverse().join(locale_thousands);\n } : d3_identity;\n return function(specifier) {\n var match = d3_format_re.exec(specifier), fill = match[1] || \" \", align = match[2] || \">\", sign = match[3] || \"-\", symbol = match[4] || \"\", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = \"\", suffix = \"\", integer = false, exponent = true;\n if (precision) precision = +precision.substring(1);\n if (zfill || fill === \"0\" && align === \"=\") {\n zfill = fill = \"0\";\n align = \"=\";\n }\n switch (type) {\n case \"n\":\n comma = true;\n type = \"g\";\n break;\n\n case \"%\":\n scale = 100;\n suffix = \"%\";\n type = \"f\";\n break;\n\n case \"p\":\n scale = 100;\n suffix = \"%\";\n type = \"r\";\n break;\n\n case \"b\":\n case \"o\":\n case \"x\":\n case \"X\":\n if (symbol === \"#\") prefix = \"0\" + type.toLowerCase();\n\n case \"c\":\n exponent = false;\n\n case \"d\":\n integer = true;\n precision = 0;\n break;\n\n case \"s\":\n scale = -1;\n type = \"r\";\n break;\n }\n if (symbol === \"$\") prefix = locale_currency[0], suffix = locale_currency[1];\n if (type == \"r\" && !precision) type = \"g\";\n if (precision != null) {\n if (type == \"g\") precision = Math.max(1, Math.min(21, precision)); else if (type == \"e\" || type == \"f\") precision = Math.max(0, Math.min(20, precision));\n }\n type = d3_format_types.get(type) || d3_format_typeDefault;\n var zcomma = zfill && comma;\n return function(value) {\n var fullSuffix = suffix;\n if (integer && value % 1) return \"\";\n var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, \"-\") : sign === \"-\" ? \"\" : sign;\n if (scale < 0) {\n var unit = d3.formatPrefix(value, precision);\n value = unit.scale(value);\n fullSuffix = unit.symbol + suffix;\n } else {\n value *= scale;\n }\n value = type(value, precision);\n var i = value.lastIndexOf(\".\"), before, after;\n if (i < 0) {\n var j = exponent ? value.lastIndexOf(\"e\") : -1;\n if (j < 0) before = value, after = \"\"; else before = value.substring(0, j), after = value.substring(j);\n } else {\n before = value.substring(0, i);\n after = locale_decimal + value.substring(i + 1);\n }\n if (!zfill && comma) before = formatGroup(before, Infinity);\n var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : \"\";\n if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);\n negative += prefix;\n value = before + after;\n return (align === \"<\" ? negative + value + padding : align === \">\" ? padding + negative + value : align === \"^\" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;\n };\n };\n }\n var d3_format_re = /(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i;\n var d3_format_types = d3.map({\n b: function(x) {\n return x.toString(2);\n },\n c: function(x) {\n return String.fromCharCode(x);\n },\n o: function(x) {\n return x.toString(8);\n },\n x: function(x) {\n return x.toString(16);\n },\n X: function(x) {\n return x.toString(16).toUpperCase();\n },\n g: function(x, p) {\n return x.toPrecision(p);\n },\n e: function(x, p) {\n return x.toExponential(p);\n },\n f: function(x, p) {\n return x.toFixed(p);\n },\n r: function(x, p) {\n return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));\n }\n });\n function d3_format_typeDefault(x) {\n return x + \"\";\n }\n var d3_time = d3.time = {}, d3_date = Date;\n function d3_date_utc() {\n this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);\n }\n d3_date_utc.prototype = {\n getDate: function() {\n return this._.getUTCDate();\n },\n getDay: function() {\n return this._.getUTCDay();\n },\n getFullYear: function() {\n return this._.getUTCFullYear();\n },\n getHours: function() {\n return this._.getUTCHours();\n },\n getMilliseconds: function() {\n return this._.getUTCMilliseconds();\n },\n getMinutes: function() {\n return this._.getUTCMinutes();\n },\n getMonth: function() {\n return this._.getUTCMonth();\n },\n getSeconds: function() {\n return this._.getUTCSeconds();\n },\n getTime: function() {\n return this._.getTime();\n },\n getTimezoneOffset: function() {\n return 0;\n },\n valueOf: function() {\n return this._.valueOf();\n },\n setDate: function() {\n d3_time_prototype.setUTCDate.apply(this._, arguments);\n },\n setDay: function() {\n d3_time_prototype.setUTCDay.apply(this._, arguments);\n },\n setFullYear: function() {\n d3_time_prototype.setUTCFullYear.apply(this._, arguments);\n },\n setHours: function() {\n d3_time_prototype.setUTCHours.apply(this._, arguments);\n },\n setMilliseconds: function() {\n d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);\n },\n setMinutes: function() {\n d3_time_prototype.setUTCMinutes.apply(this._, arguments);\n },\n setMonth: function() {\n d3_time_prototype.setUTCMonth.apply(this._, arguments);\n },\n setSeconds: function() {\n d3_time_prototype.setUTCSeconds.apply(this._, arguments);\n },\n setTime: function() {\n d3_time_prototype.setTime.apply(this._, arguments);\n }\n };\n var d3_time_prototype = Date.prototype;\n function d3_time_interval(local, step, number) {\n function round(date) {\n var d0 = local(date), d1 = offset(d0, 1);\n return date - d0 < d1 - date ? d0 : d1;\n }\n function ceil(date) {\n step(date = local(new d3_date(date - 1)), 1);\n return date;\n }\n function offset(date, k) {\n step(date = new d3_date(+date), k);\n return date;\n }\n function range(t0, t1, dt) {\n var time = ceil(t0), times = [];\n if (dt > 1) {\n while (time < t1) {\n if (!(number(time) % dt)) times.push(new Date(+time));\n step(time, 1);\n }\n } else {\n while (time < t1) times.push(new Date(+time)), step(time, 1);\n }\n return times;\n }\n function range_utc(t0, t1, dt) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date_utc();\n utc._ = t0;\n return range(utc, t1, dt);\n } finally {\n d3_date = Date;\n }\n }\n local.floor = local;\n local.round = round;\n local.ceil = ceil;\n local.offset = offset;\n local.range = range;\n var utc = local.utc = d3_time_interval_utc(local);\n utc.floor = utc;\n utc.round = d3_time_interval_utc(round);\n utc.ceil = d3_time_interval_utc(ceil);\n utc.offset = d3_time_interval_utc(offset);\n utc.range = range_utc;\n return local;\n }\n function d3_time_interval_utc(method) {\n return function(date, k) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date_utc();\n utc._ = date;\n return method(utc, k)._;\n } finally {\n d3_date = Date;\n }\n };\n }\n d3_time.year = d3_time_interval(function(date) {\n date = d3_time.day(date);\n date.setMonth(0, 1);\n return date;\n }, function(date, offset) {\n date.setFullYear(date.getFullYear() + offset);\n }, function(date) {\n return date.getFullYear();\n });\n d3_time.years = d3_time.year.range;\n d3_time.years.utc = d3_time.year.utc.range;\n d3_time.day = d3_time_interval(function(date) {\n var day = new d3_date(2e3, 0);\n day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n return day;\n }, function(date, offset) {\n date.setDate(date.getDate() + offset);\n }, function(date) {\n return date.getDate() - 1;\n });\n d3_time.days = d3_time.day.range;\n d3_time.days.utc = d3_time.day.utc.range;\n d3_time.dayOfYear = function(date) {\n var year = d3_time.year(date);\n return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);\n };\n [ \"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\" ].forEach(function(day, i) {\n i = 7 - i;\n var interval = d3_time[day] = d3_time_interval(function(date) {\n (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);\n return date;\n }, function(date, offset) {\n date.setDate(date.getDate() + Math.floor(offset) * 7);\n }, function(date) {\n var day = d3_time.year(date).getDay();\n return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);\n });\n d3_time[day + \"s\"] = interval.range;\n d3_time[day + \"s\"].utc = interval.utc.range;\n d3_time[day + \"OfYear\"] = function(date) {\n var day = d3_time.year(date).getDay();\n return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);\n };\n });\n d3_time.week = d3_time.sunday;\n d3_time.weeks = d3_time.sunday.range;\n d3_time.weeks.utc = d3_time.sunday.utc.range;\n d3_time.weekOfYear = d3_time.sundayOfYear;\n function d3_locale_timeFormat(locale) {\n var locale_dateTime = locale.dateTime, locale_date = locale.date, locale_time = locale.time, locale_periods = locale.periods, locale_days = locale.days, locale_shortDays = locale.shortDays, locale_months = locale.months, locale_shortMonths = locale.shortMonths;\n function d3_time_format(template) {\n var n = template.length;\n function format(date) {\n var string = [], i = -1, j = 0, c, p, f;\n while (++i < n) {\n if (template.charCodeAt(i) === 37) {\n string.push(template.slice(j, i));\n if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);\n if (f = d3_time_formats[c]) c = f(date, p == null ? c === \"e\" ? \" \" : \"0\" : p);\n string.push(c);\n j = i + 1;\n }\n }\n string.push(template.slice(j, i));\n return string.join(\"\");\n }\n format.parse = function(string) {\n var d = {\n y: 1900,\n m: 0,\n d: 1,\n H: 0,\n M: 0,\n S: 0,\n L: 0,\n Z: null\n }, i = d3_time_parse(d, template, string, 0);\n if (i != string.length) return null;\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();\n if (\"j\" in d) date.setFullYear(d.y, 0, d.j); else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n date.setFullYear(d.y, 0, 1);\n date.setFullYear(d.y, 0, \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);\n } else date.setFullYear(d.y, d.m, d.d);\n date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);\n return localZ ? date._ : date;\n };\n format.toString = function() {\n return template;\n };\n return format;\n }\n function d3_time_parse(date, template, string, j) {\n var c, p, t, i = 0, n = template.length, m = string.length;\n while (i < n) {\n if (j >= m) return -1;\n c = template.charCodeAt(i++);\n if (c === 37) {\n t = template.charAt(i++);\n p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];\n if (!p || (j = p(date, string, j)) < 0) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n return j;\n }\n d3_time_format.utc = function(template) {\n var local = d3_time_format(template);\n function format(date) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date();\n utc._ = date;\n return local(utc);\n } finally {\n d3_date = Date;\n }\n }\n format.parse = function(string) {\n try {\n d3_date = d3_date_utc;\n var date = local.parse(string);\n return date && date._;\n } finally {\n d3_date = Date;\n }\n };\n format.toString = local.toString;\n return format;\n };\n d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti;\n var d3_time_periodLookup = d3.map(), d3_time_dayRe = d3_time_formatRe(locale_days), d3_time_dayLookup = d3_time_formatLookup(locale_days), d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays), d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays), d3_time_monthRe = d3_time_formatRe(locale_months), d3_time_monthLookup = d3_time_formatLookup(locale_months), d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths), d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths);\n locale_periods.forEach(function(p, i) {\n d3_time_periodLookup.set(p.toLowerCase(), i);\n });\n var d3_time_formats = {\n a: function(d) {\n return locale_shortDays[d.getDay()];\n },\n A: function(d) {\n return locale_days[d.getDay()];\n },\n b: function(d) {\n return locale_shortMonths[d.getMonth()];\n },\n B: function(d) {\n return locale_months[d.getMonth()];\n },\n c: d3_time_format(locale_dateTime),\n d: function(d, p) {\n return d3_time_formatPad(d.getDate(), p, 2);\n },\n e: function(d, p) {\n return d3_time_formatPad(d.getDate(), p, 2);\n },\n H: function(d, p) {\n return d3_time_formatPad(d.getHours(), p, 2);\n },\n I: function(d, p) {\n return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);\n },\n j: function(d, p) {\n return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);\n },\n L: function(d, p) {\n return d3_time_formatPad(d.getMilliseconds(), p, 3);\n },\n m: function(d, p) {\n return d3_time_formatPad(d.getMonth() + 1, p, 2);\n },\n M: function(d, p) {\n return d3_time_formatPad(d.getMinutes(), p, 2);\n },\n p: function(d) {\n return locale_periods[+(d.getHours() >= 12)];\n },\n S: function(d, p) {\n return d3_time_formatPad(d.getSeconds(), p, 2);\n },\n U: function(d, p) {\n return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);\n },\n w: function(d) {\n return d.getDay();\n },\n W: function(d, p) {\n return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);\n },\n x: d3_time_format(locale_date),\n X: d3_time_format(locale_time),\n y: function(d, p) {\n return d3_time_formatPad(d.getFullYear() % 100, p, 2);\n },\n Y: function(d, p) {\n return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);\n },\n Z: d3_time_zone,\n \"%\": function() {\n return \"%\";\n }\n };\n var d3_time_parsers = {\n a: d3_time_parseWeekdayAbbrev,\n A: d3_time_parseWeekday,\n b: d3_time_parseMonthAbbrev,\n B: d3_time_parseMonth,\n c: d3_time_parseLocaleFull,\n d: d3_time_parseDay,\n e: d3_time_parseDay,\n H: d3_time_parseHour24,\n I: d3_time_parseHour24,\n j: d3_time_parseDayOfYear,\n L: d3_time_parseMilliseconds,\n m: d3_time_parseMonthNumber,\n M: d3_time_parseMinutes,\n p: d3_time_parseAmPm,\n S: d3_time_parseSeconds,\n U: d3_time_parseWeekNumberSunday,\n w: d3_time_parseWeekdayNumber,\n W: d3_time_parseWeekNumberMonday,\n x: d3_time_parseLocaleDate,\n X: d3_time_parseLocaleTime,\n y: d3_time_parseYear,\n Y: d3_time_parseFullYear,\n Z: d3_time_parseZone,\n \"%\": d3_time_parseLiteralPercent\n };\n function d3_time_parseWeekdayAbbrev(date, string, i) {\n d3_time_dayAbbrevRe.lastIndex = 0;\n var n = d3_time_dayAbbrevRe.exec(string.slice(i));\n return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseWeekday(date, string, i) {\n d3_time_dayRe.lastIndex = 0;\n var n = d3_time_dayRe.exec(string.slice(i));\n return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseMonthAbbrev(date, string, i) {\n d3_time_monthAbbrevRe.lastIndex = 0;\n var n = d3_time_monthAbbrevRe.exec(string.slice(i));\n return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseMonth(date, string, i) {\n d3_time_monthRe.lastIndex = 0;\n var n = d3_time_monthRe.exec(string.slice(i));\n return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseLocaleFull(date, string, i) {\n return d3_time_parse(date, d3_time_formats.c.toString(), string, i);\n }\n function d3_time_parseLocaleDate(date, string, i) {\n return d3_time_parse(date, d3_time_formats.x.toString(), string, i);\n }\n function d3_time_parseLocaleTime(date, string, i) {\n return d3_time_parse(date, d3_time_formats.X.toString(), string, i);\n }\n function d3_time_parseAmPm(date, string, i) {\n var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());\n return n == null ? -1 : (date.p = n, i);\n }\n return d3_time_format;\n }\n var d3_time_formatPads = {\n \"-\": \"\",\n _: \" \",\n \"0\": \"0\"\n }, d3_time_numberRe = /^\\s*\\d+/, d3_time_percentRe = /^%/;\n function d3_time_formatPad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\", string = (sign ? -value : value) + \"\", length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n }\n function d3_time_formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(d3.requote).join(\"|\") + \")\", \"i\");\n }\n function d3_time_formatLookup(names) {\n var map = new d3_Map(), i = -1, n = names.length;\n while (++i < n) map.set(names[i].toLowerCase(), i);\n return map;\n }\n function d3_time_parseWeekdayNumber(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 1));\n return n ? (date.w = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseWeekNumberSunday(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i));\n return n ? (date.U = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseWeekNumberMonday(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i));\n return n ? (date.W = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseFullYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 4));\n return n ? (date.y = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;\n }\n function d3_time_parseZone(date, string, i) {\n return /^[+-]\\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, \n i + 5) : -1;\n }\n function d3_time_expandYear(d) {\n return d + (d > 68 ? 1900 : 2e3);\n }\n function d3_time_parseMonthNumber(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.m = n[0] - 1, i + n[0].length) : -1;\n }\n function d3_time_parseDay(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.d = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseDayOfYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n return n ? (date.j = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseHour24(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.H = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseMinutes(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.M = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseSeconds(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.S = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseMilliseconds(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n return n ? (date.L = +n[0], i + n[0].length) : -1;\n }\n function d3_time_zone(d) {\n var z = d.getTimezoneOffset(), zs = z > 0 ? \"-\" : \"+\", zh = abs(z) / 60 | 0, zm = abs(z) % 60;\n return zs + d3_time_formatPad(zh, \"0\", 2) + d3_time_formatPad(zm, \"0\", 2);\n }\n function d3_time_parseLiteralPercent(date, string, i) {\n d3_time_percentRe.lastIndex = 0;\n var n = d3_time_percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n }\n function d3_time_formatMulti(formats) {\n var n = formats.length, i = -1;\n while (++i < n) formats[i][0] = this(formats[i][0]);\n return function(date) {\n var i = 0, f = formats[i];\n while (!f[1](date)) f = formats[++i];\n return f[0](date);\n };\n }\n d3.locale = function(locale) {\n return {\n numberFormat: d3_locale_numberFormat(locale),\n timeFormat: d3_locale_timeFormat(locale)\n };\n };\n var d3_locale_enUS = d3.locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [ 3 ],\n currency: [ \"$\", \"\" ],\n dateTime: \"%a %b %e %X %Y\",\n date: \"%m/%d/%Y\",\n time: \"%H:%M:%S\",\n periods: [ \"AM\", \"PM\" ],\n days: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ],\n shortDays: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ],\n months: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n shortMonths: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]\n });\n d3.format = d3_locale_enUS.numberFormat;\n d3.geo = {};\n function d3_adder() {}\n d3_adder.prototype = {\n s: 0,\n t: 0,\n add: function(y) {\n d3_adderSum(y, this.t, d3_adderTemp);\n d3_adderSum(d3_adderTemp.s, this.s, this);\n if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;\n },\n reset: function() {\n this.s = this.t = 0;\n },\n valueOf: function() {\n return this.s;\n }\n };\n var d3_adderTemp = new d3_adder();\n function d3_adderSum(a, b, o) {\n var x = o.s = a + b, bv = x - a, av = x - bv;\n o.t = a - av + (b - bv);\n }\n d3.geo.stream = function(object, listener) {\n if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {\n d3_geo_streamObjectType[object.type](object, listener);\n } else {\n d3_geo_streamGeometry(object, listener);\n }\n };\n function d3_geo_streamGeometry(geometry, listener) {\n if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {\n d3_geo_streamGeometryType[geometry.type](geometry, listener);\n }\n }\n var d3_geo_streamObjectType = {\n Feature: function(feature, listener) {\n d3_geo_streamGeometry(feature.geometry, listener);\n },\n FeatureCollection: function(object, listener) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);\n }\n };\n var d3_geo_streamGeometryType = {\n Sphere: function(object, listener) {\n listener.sphere();\n },\n Point: function(object, listener) {\n object = object.coordinates;\n listener.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);\n },\n LineString: function(object, listener) {\n d3_geo_streamLine(object.coordinates, listener, 0);\n },\n MultiLineString: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);\n },\n Polygon: function(object, listener) {\n d3_geo_streamPolygon(object.coordinates, listener);\n },\n MultiPolygon: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);\n },\n GeometryCollection: function(object, listener) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) d3_geo_streamGeometry(geometries[i], listener);\n }\n };\n function d3_geo_streamLine(coordinates, listener, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n listener.lineStart();\n while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);\n listener.lineEnd();\n }\n function d3_geo_streamPolygon(coordinates, listener) {\n var i = -1, n = coordinates.length;\n listener.polygonStart();\n while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);\n listener.polygonEnd();\n }\n d3.geo.area = function(object) {\n d3_geo_areaSum = 0;\n d3.geo.stream(object, d3_geo_area);\n return d3_geo_areaSum;\n };\n var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();\n var d3_geo_area = {\n sphere: function() {\n d3_geo_areaSum += 4 * Ï€;\n },\n point: d3_noop,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: function() {\n d3_geo_areaRingSum.reset();\n d3_geo_area.lineStart = d3_geo_areaRingStart;\n },\n polygonEnd: function() {\n var area = 2 * d3_geo_areaRingSum;\n d3_geo_areaSum += area < 0 ? 4 * Ï€ + area : area;\n d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;\n }\n };\n function d3_geo_areaRingStart() {\n var λ00, φ00, λ0, cosφ0, sinφ0;\n d3_geo_area.point = function(λ, φ) {\n d3_geo_area.point = nextPoint;\n λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + Ï€ / 4), \n sinφ0 = Math.sin(φ);\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n φ = φ * d3_radians / 2 + Ï€ / 4;\n var dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(adλ), v = k * sdλ * Math.sin(adλ);\n d3_geo_areaRingSum.add(Math.atan2(v, u));\n λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;\n }\n d3_geo_area.lineEnd = function() {\n nextPoint(λ00, φ00);\n };\n }\n function d3_geo_cartesian(spherical) {\n var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);\n return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];\n }\n function d3_geo_cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n }\n function d3_geo_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 function d3_geo_cartesianAdd(a, b) {\n a[0] += b[0];\n a[1] += b[1];\n a[2] += b[2];\n }\n function d3_geo_cartesianScale(vector, k) {\n return [ vector[0] * k, vector[1] * k, vector[2] * k ];\n }\n function d3_geo_cartesianNormalize(d) {\n var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l;\n d[1] /= l;\n d[2] /= l;\n }\n function d3_geo_spherical(cartesian) {\n return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];\n }\n function d3_geo_sphericalEqual(a, b) {\n return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;\n }\n d3.geo.bounds = function() {\n var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;\n var bound = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n bound.point = ringPoint;\n bound.lineStart = ringStart;\n bound.lineEnd = ringEnd;\n dλSum = 0;\n d3_geo_area.polygonStart();\n },\n polygonEnd: function() {\n d3_geo_area.polygonEnd();\n bound.point = point;\n bound.lineStart = lineStart;\n bound.lineEnd = lineEnd;\n if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90;\n range[0] = λ0, range[1] = λ1;\n }\n };\n function point(λ, φ) {\n ranges.push(range = [ λ0 = λ, λ1 = λ ]);\n if (φ < φ0) φ0 = φ;\n if (φ > φ1) φ1 = φ;\n }\n function linePoint(λ, φ) {\n var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]);\n if (p0) {\n var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal);\n d3_geo_cartesianNormalize(inflection);\n inflection = d3_geo_spherical(inflection);\n var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180;\n if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n var φi = inflection[1] * d3_degrees;\n if (φi > φ1) φ1 = φi;\n } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n var φi = -inflection[1] * d3_degrees;\n if (φi < φ0) φ0 = φi;\n } else {\n if (φ < φ0) φ0 = φ;\n if (φ > φ1) φ1 = φ;\n }\n if (antimeridian) {\n if (λ < λ_) {\n if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n } else {\n if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n }\n } else {\n if (λ1 >= λ0) {\n if (λ < λ0) λ0 = λ;\n if (λ > λ1) λ1 = λ;\n } else {\n if (λ > λ_) {\n if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n } else {\n if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n }\n }\n }\n } else {\n point(λ, φ);\n }\n p0 = p, λ_ = λ;\n }\n function lineStart() {\n bound.point = linePoint;\n }\n function lineEnd() {\n range[0] = λ0, range[1] = λ1;\n bound.point = point;\n p0 = null;\n }\n function ringPoint(λ, φ) {\n if (p0) {\n var dλ = λ - λ_;\n dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;\n } else λ__ = λ, φ__ = φ;\n d3_geo_area.point(λ, φ);\n linePoint(λ, φ);\n }\n function ringStart() {\n d3_geo_area.lineStart();\n }\n function ringEnd() {\n ringPoint(λ__, φ__);\n d3_geo_area.lineEnd();\n if (abs(dλSum) > ε) λ0 = -(λ1 = 180);\n range[0] = λ0, range[1] = λ1;\n p0 = null;\n }\n function angle(λ0, λ1) {\n return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;\n }\n function compareRanges(a, b) {\n return a[0] - b[0];\n }\n function withinRange(x, range) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n }\n return function(feature) {\n φ1 = λ1 = -(λ0 = φ0 = Infinity);\n ranges = [];\n d3.geo.stream(feature, bound);\n var n = ranges.length;\n if (n) {\n ranges.sort(compareRanges);\n for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {\n b = ranges[i];\n if (withinRange(b[0], a) || withinRange(b[1], a)) {\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 var best = -Infinity, dλ;\n for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {\n b = merged[i];\n if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];\n }\n }\n ranges = range = null;\n return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ];\n };\n }();\n d3.geo.centroid = function(object) {\n d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n d3.geo.stream(object, d3_geo_centroid);\n var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z;\n if (m < ε2) {\n x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;\n if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;\n m = x * x + y * y + z * z;\n if (m < ε2) return [ NaN, NaN ];\n }\n return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];\n };\n var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;\n var d3_geo_centroid = {\n sphere: d3_noop,\n point: d3_geo_centroidPoint,\n lineStart: d3_geo_centroidLineStart,\n lineEnd: d3_geo_centroidLineEnd,\n polygonStart: function() {\n d3_geo_centroid.lineStart = d3_geo_centroidRingStart;\n },\n polygonEnd: function() {\n d3_geo_centroid.lineStart = d3_geo_centroidLineStart;\n }\n };\n function d3_geo_centroidPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));\n }\n function d3_geo_centroidPointXYZ(x, y, z) {\n ++d3_geo_centroidW0;\n d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;\n d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;\n d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;\n }\n function d3_geo_centroidLineStart() {\n var x0, y0, z0;\n d3_geo_centroid.point = function(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n x0 = cosφ * Math.cos(λ);\n y0 = cosφ * Math.sin(λ);\n z0 = Math.sin(φ);\n d3_geo_centroid.point = nextPoint;\n d3_geo_centroidPointXYZ(x0, y0, z0);\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.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 d3_geo_centroidW1 += w;\n d3_geo_centroidX1 += w * (x0 + (x0 = x));\n d3_geo_centroidY1 += w * (y0 + (y0 = y));\n d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n d3_geo_centroidPointXYZ(x0, y0, z0);\n }\n }\n function d3_geo_centroidLineEnd() {\n d3_geo_centroid.point = d3_geo_centroidPoint;\n }\n function d3_geo_centroidRingStart() {\n var λ00, φ00, x0, y0, z0;\n d3_geo_centroid.point = function(λ, φ) {\n λ00 = λ, φ00 = φ;\n d3_geo_centroid.point = nextPoint;\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n x0 = cosφ * Math.cos(λ);\n y0 = cosφ * Math.sin(λ);\n z0 = Math.sin(φ);\n d3_geo_centroidPointXYZ(x0, y0, z0);\n };\n d3_geo_centroid.lineEnd = function() {\n nextPoint(λ00, φ00);\n d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;\n d3_geo_centroid.point = d3_geo_centroidPoint;\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u);\n d3_geo_centroidX2 += v * cx;\n d3_geo_centroidY2 += v * cy;\n d3_geo_centroidZ2 += v * cz;\n d3_geo_centroidW1 += w;\n d3_geo_centroidX1 += w * (x0 + (x0 = x));\n d3_geo_centroidY1 += w * (y0 + (y0 = y));\n d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n d3_geo_centroidPointXYZ(x0, y0, z0);\n }\n }\n function d3_geo_compose(a, b) {\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\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 return compose;\n }\n function d3_true() {\n return true;\n }\n function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {\n var subject = [], clip = [];\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n];\n if (d3_geo_sphericalEqual(p0, p1)) {\n listener.lineStart();\n for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);\n listener.lineEnd();\n return;\n }\n var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false);\n a.o = b;\n subject.push(a);\n clip.push(b);\n a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);\n b = new d3_geo_clipPolygonIntersection(p1, null, a, true);\n a.o = b;\n subject.push(a);\n clip.push(b);\n });\n clip.sort(compare);\n d3_geo_clipPolygonLinkCircular(subject);\n d3_geo_clipPolygonLinkCircular(clip);\n if (!subject.length) return;\n for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {\n clip[i].e = entry = !entry;\n }\n var start = subject[0], points, point;\n while (1) {\n var current = start, isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n listener.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, listener);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, listener);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n listener.lineEnd();\n }\n }\n function d3_geo_clipPolygonLinkCircular(array) {\n if (!(n = array.length)) return;\n var n, i = 0, a = array[0], 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 function d3_geo_clipPolygonIntersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other;\n this.e = entry;\n this.v = false;\n this.n = this.p = null;\n }\n function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {\n return function(rotate, listener) {\n var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);\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 = d3.merge(segments);\n var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);\n if (segments.length) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);\n } else if (clipStartInside) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n }\n if (polygonStarted) listener.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n listener.polygonStart();\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n listener.polygonEnd();\n }\n };\n function point(λ, φ) {\n var point = rotate(λ, φ);\n if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);\n }\n function pointLine(λ, φ) {\n var point = rotate(λ, φ);\n line.point(point[0], point[1]);\n }\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n var segments;\n var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygonStarted = false, polygon, ring;\n function pointRing(λ, φ) {\n ring.push([ λ, φ ]);\n var point = rotate(λ, φ);\n ringListener.point(point[0], point[1]);\n }\n function ringStart() {\n ringListener.lineStart();\n ring = [];\n }\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringListener.lineEnd();\n var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;\n ring.pop();\n polygon.push(ring);\n ring = null;\n if (!n) return;\n if (clean & 1) {\n segment = ringSegments[0];\n var n = segment.length - 1, i = -1, point;\n if (n > 0) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n listener.lineStart();\n while (++i < n) listener.point((point = segment[i])[0], point[1]);\n listener.lineEnd();\n }\n return;\n }\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));\n }\n return clip;\n };\n }\n function d3_geo_clipSegmentLength1(segment) {\n return segment.length > 1;\n }\n function d3_geo_clipBufferListener() {\n var lines = [], line;\n return {\n lineStart: function() {\n lines.push(line = []);\n },\n point: function(λ, φ) {\n line.push([ λ, φ ]);\n },\n lineEnd: d3_noop,\n buffer: function() {\n var buffer = lines;\n lines = [];\n line = null;\n return buffer;\n },\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n }\n };\n }\n function d3_geo_clipSort(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfÏ€ - ε : halfÏ€ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfÏ€ - ε : halfÏ€ - b[1]);\n }\n var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -Ï€, -Ï€ / 2 ]);\n function d3_geo_clipAntimeridianLine(listener) {\n var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;\n return {\n lineStart: function() {\n listener.lineStart();\n clean = 1;\n },\n point: function(λ1, φ1) {\n var sλ1 = λ1 > 0 ? Ï€ : -Ï€, dλ = abs(λ1 - λ0);\n if (abs(dλ - Ï€) < ε) {\n listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfÏ€ : -halfÏ€);\n listener.point(sλ0, φ0);\n listener.lineEnd();\n listener.lineStart();\n listener.point(sλ1, φ0);\n listener.point(λ1, φ0);\n clean = 0;\n } else if (sλ0 !== sλ1 && dλ >= Ï€) {\n if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;\n if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;\n φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);\n listener.point(sλ0, φ0);\n listener.lineEnd();\n listener.lineStart();\n listener.point(sλ1, φ0);\n clean = 0;\n }\n listener.point(λ0 = λ1, φ0 = φ1);\n sλ0 = sλ1;\n },\n lineEnd: function() {\n listener.lineEnd();\n λ0 = φ0 = NaN;\n },\n clean: function() {\n return 2 - clean;\n }\n };\n }\n function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {\n var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);\n return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;\n }\n function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {\n var φ;\n if (from == null) {\n φ = direction * halfÏ€;\n listener.point(-Ï€, φ);\n listener.point(0, φ);\n listener.point(Ï€, φ);\n listener.point(Ï€, 0);\n listener.point(Ï€, -φ);\n listener.point(0, -φ);\n listener.point(-Ï€, -φ);\n listener.point(-Ï€, 0);\n listener.point(-Ï€, φ);\n } else if (abs(from[0] - to[0]) > ε) {\n var s = from[0] < to[0] ? Ï€ : -Ï€;\n φ = direction * s / 2;\n listener.point(-s, φ);\n listener.point(0, φ);\n listener.point(s, φ);\n } else {\n listener.point(to[0], to[1]);\n }\n }\n function d3_geo_pointInPolygon(point, polygon) {\n var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;\n d3_geo_areaRingSum.reset();\n for (var i = 0, n = polygon.length; i < n; ++i) {\n var ring = polygon[i], m = ring.length;\n if (!m) continue;\n var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + Ï€ / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;\n while (true) {\n if (j === m) j = 0;\n point = ring[j];\n var λ = point[0], φ = point[1] / 2 + Ï€ / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > Ï€, k = sinφ0 * sinφ;\n d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));\n polarAngle += antimeridian ? dλ + sdλ * Ï„ : dλ;\n if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {\n var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));\n d3_geo_cartesianNormalize(arc);\n var intersection = d3_geo_cartesianCross(meridianNormal, arc);\n d3_geo_cartesianNormalize(intersection);\n var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);\n if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {\n winding += antimeridian ^ dλ >= 0 ? 1 : -1;\n }\n }\n if (!j++) break;\n λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;\n }\n }\n return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < -ε) ^ winding & 1;\n }\n function d3_geo_clipCircle(radius) {\n var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);\n return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -Ï€, radius - Ï€ ]);\n function visible(λ, φ) {\n return Math.cos(λ) * Math.cos(φ) > cr;\n }\n function clipLine(listener) {\n var point0, c0, v0, v00, clean;\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(λ, φ) {\n var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? Ï€ : -Ï€), φ) : 0;\n if (!point0 && (v00 = v0 = v)) listener.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {\n point1[0] += ε;\n point1[1] += ε;\n v = visible(point1[0], point1[1]);\n }\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n listener.lineStart();\n point2 = intersect(point1, point0);\n listener.point(point2[0], point2[1]);\n } else {\n point2 = intersect(point0, point1);\n listener.point(point2[0], point2[1]);\n listener.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n listener.lineStart();\n listener.point(t[0][0], t[0][1]);\n listener.point(t[1][0], t[1][1]);\n listener.lineEnd();\n } else {\n listener.point(t[1][0], t[1][1]);\n listener.lineEnd();\n listener.lineStart();\n listener.point(t[0][0], t[0][1]);\n }\n }\n }\n if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {\n listener.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) listener.lineEnd();\n point0 = null;\n },\n clean: function() {\n return clean | (v00 && v0) << 1;\n }\n };\n }\n function intersect(a, b, two) {\n var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);\n var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;\n if (!determinant) return !two && a;\n var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);\n d3_geo_cartesianAdd(A, B);\n var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);\n if (t2 < 0) return;\n var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);\n d3_geo_cartesianAdd(q, A);\n q = d3_geo_spherical(q);\n if (!two) return q;\n var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;\n if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;\n var δλ = λ1 - λ0, polar = abs(δλ - Ï€) < ε, meridian = polar || δλ < ε;\n if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;\n if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > Ï€ ^ (λ0 <= q[0] && q[0] <= λ1)) {\n var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);\n d3_geo_cartesianAdd(q1, A);\n return [ q, d3_geo_spherical(q1) ];\n }\n }\n function code(λ, φ) {\n var r = smallRadius ? radius : Ï€ - radius, code = 0;\n if (λ < -r) code |= 1; else if (λ > r) code |= 2;\n if (φ < -r) code |= 4; else if (φ > r) code |= 8;\n return code;\n }\n }\n function d3_geom_clipLine(x0, y0, x1, y1) {\n return function(line) {\n var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;\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 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 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 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 if (t0 > 0) line.a = {\n x: ax + t0 * dx,\n y: ay + t0 * dy\n };\n if (t1 < 1) line.b = {\n x: ax + t1 * dx,\n y: ay + t1 * dy\n };\n return line;\n };\n }\n var d3_geo_clipExtentMAX = 1e9;\n d3.geo.clipExtent = function() {\n var x0, y0, x1, y1, stream, clip, clipExtent = {\n stream: function(output) {\n if (stream) stream.valid = false;\n stream = clip(output);\n stream.valid = true;\n return stream;\n },\n extent: function(_) {\n if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);\n if (stream) stream.valid = false, stream = null;\n return clipExtent;\n }\n };\n return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);\n };\n function d3_geo_clipExtent(x0, y0, x1, y1) {\n return function(listener) {\n var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring;\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n listener = bufferListener;\n segments = [];\n polygon = [];\n clean = true;\n },\n polygonEnd: function() {\n listener = listener_;\n segments = d3.merge(segments);\n var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length;\n if (inside || visible) {\n listener.polygonStart();\n if (inside) {\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n }\n if (visible) {\n d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);\n }\n listener.polygonEnd();\n }\n segments = polygon = ring = null;\n }\n };\n function insidePolygon(p) {\n var wn = 0, n = polygon.length, y = p[1];\n for (var i = 0; i < n; ++i) {\n for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {\n b = v[j];\n if (a[1] <= y) {\n if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;\n } else {\n if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;\n }\n a = b;\n }\n }\n return wn !== 0;\n }\n function interpolate(from, to, direction, listener) {\n var a = 0, a1 = 0;\n if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {\n do {\n listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n } while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n listener.point(to[0], to[1]);\n }\n }\n function pointVisible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n function point(x, y) {\n if (pointVisible(x, y)) listener.point(x, y);\n }\n var x__, y__, v__, x_, y_, v_, first, clean;\n function lineStart() {\n clip.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferListener.rejoin();\n segments.push(bufferListener.buffer());\n }\n clip.point = point;\n if (v_) listener.lineEnd();\n }\n function linePoint(x, y) {\n x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));\n y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));\n var v = pointVisible(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 listener.lineStart();\n listener.point(x, y);\n }\n } else {\n if (v && v_) listener.point(x, y); else {\n var l = {\n a: {\n x: x_,\n y: y_\n },\n b: {\n x: x,\n y: y\n }\n };\n if (clipLine(l)) {\n if (!v_) {\n listener.lineStart();\n listener.point(l.a.x, l.a.y);\n }\n listener.point(l.b.x, l.b.y);\n if (!v) listener.lineEnd();\n clean = false;\n } else if (v) {\n listener.lineStart();\n listener.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n return clip;\n };\n function corner(p, direction) {\n return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;\n }\n function compare(a, b) {\n return comparePoints(a.x, b.x);\n }\n function comparePoints(a, b) {\n var ca = corner(a, 1), cb = corner(b, 1);\n return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n }\n }\n function d3_geo_conic(projectAt) {\n var φ0 = 0, φ1 = Ï€ / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);\n p.parallels = function(_) {\n if (!arguments.length) return [ φ0 / Ï€ * 180, φ1 / Ï€ * 180 ];\n return m(φ0 = _[0] * Ï€ / 180, φ1 = _[1] * Ï€ / 180);\n };\n return p;\n }\n function d3_geo_conicEqualArea(φ0, φ1) {\n var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), Ï0 = Math.sqrt(C) / n;\n function forward(λ, φ) {\n var Ï = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;\n return [ Ï * Math.sin(λ *= n), Ï0 - Ï * Math.cos(λ) ];\n }\n forward.invert = function(x, y) {\n var Ï0_y = Ï0 - y;\n return [ Math.atan2(x, Ï0_y) / n, d3_asin((C - (x * x + Ï0_y * Ï0_y) * n * n) / (2 * n)) ];\n };\n return forward;\n }\n (d3.geo.conicEqualArea = function() {\n return d3_geo_conic(d3_geo_conicEqualArea);\n }).raw = d3_geo_conicEqualArea;\n d3.geo.albers = function() {\n return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070);\n };\n d3.geo.albersUsa = function() {\n var lower48 = d3.geo.albers();\n var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]);\n var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]);\n var point, pointStream = {\n point: function(x, y) {\n point = [ x, y ];\n }\n }, lower48Point, alaskaPoint, hawaiiPoint;\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n point = null;\n (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);\n return point;\n }\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;\n return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);\n };\n albersUsa.stream = function(stream) {\n var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream);\n return {\n point: function(x, y) {\n lower48Stream.point(x, y);\n alaskaStream.point(x, y);\n hawaiiStream.point(x, y);\n },\n sphere: function() {\n lower48Stream.sphere();\n alaskaStream.sphere();\n hawaiiStream.sphere();\n },\n lineStart: function() {\n lower48Stream.lineStart();\n alaskaStream.lineStart();\n hawaiiStream.lineStart();\n },\n lineEnd: function() {\n lower48Stream.lineEnd();\n alaskaStream.lineEnd();\n hawaiiStream.lineEnd();\n },\n polygonStart: function() {\n lower48Stream.polygonStart();\n alaskaStream.polygonStart();\n hawaiiStream.polygonStart();\n },\n polygonEnd: function() {\n lower48Stream.polygonEnd();\n alaskaStream.polygonEnd();\n hawaiiStream.polygonEnd();\n }\n };\n };\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_);\n alaska.precision(_);\n hawaii.precision(_);\n return albersUsa;\n };\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_);\n alaska.scale(_ * .35);\n hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;\n alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n return albersUsa;\n };\n return albersUsa.scale(1070);\n };\n var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {\n point: d3_noop,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: function() {\n d3_geo_pathAreaPolygon = 0;\n d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;\n },\n polygonEnd: function() {\n d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;\n d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);\n }\n };\n function d3_geo_pathAreaRingStart() {\n var x00, y00, x0, y0;\n d3_geo_pathArea.point = function(x, y) {\n d3_geo_pathArea.point = nextPoint;\n x00 = x0 = x, y00 = y0 = y;\n };\n function nextPoint(x, y) {\n d3_geo_pathAreaPolygon += y0 * x - x0 * y;\n x0 = x, y0 = y;\n }\n d3_geo_pathArea.lineEnd = function() {\n nextPoint(x00, y00);\n };\n }\n var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;\n var d3_geo_pathBounds = {\n point: d3_geo_pathBoundsPoint,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: d3_noop,\n polygonEnd: d3_noop\n };\n function d3_geo_pathBoundsPoint(x, y) {\n if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;\n if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;\n if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;\n if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;\n }\n function d3_geo_pathBuffer() {\n var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];\n var stream = {\n point: point,\n lineStart: function() {\n stream.point = pointLineStart;\n },\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.lineEnd = lineEndPolygon;\n },\n polygonEnd: function() {\n stream.lineEnd = lineEnd;\n stream.point = point;\n },\n pointRadius: function(_) {\n pointCircle = d3_geo_pathBufferCircle(_);\n return stream;\n },\n result: function() {\n if (buffer.length) {\n var result = buffer.join(\"\");\n buffer = [];\n return result;\n }\n }\n };\n function point(x, y) {\n buffer.push(\"M\", x, \",\", y, pointCircle);\n }\n function pointLineStart(x, y) {\n buffer.push(\"M\", x, \",\", y);\n stream.point = pointLine;\n }\n function pointLine(x, y) {\n buffer.push(\"L\", x, \",\", y);\n }\n function lineEnd() {\n stream.point = point;\n }\n function lineEndPolygon() {\n buffer.push(\"Z\");\n }\n return stream;\n }\n function d3_geo_pathBufferCircle(radius) {\n return \"m0,\" + radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius + \"z\";\n }\n var d3_geo_pathCentroid = {\n point: d3_geo_pathCentroidPoint,\n lineStart: d3_geo_pathCentroidLineStart,\n lineEnd: d3_geo_pathCentroidLineEnd,\n polygonStart: function() {\n d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;\n },\n polygonEnd: function() {\n d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;\n d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;\n }\n };\n function d3_geo_pathCentroidPoint(x, y) {\n d3_geo_centroidX0 += x;\n d3_geo_centroidY0 += y;\n ++d3_geo_centroidZ0;\n }\n function d3_geo_pathCentroidLineStart() {\n var x0, y0;\n d3_geo_pathCentroid.point = function(x, y) {\n d3_geo_pathCentroid.point = nextPoint;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n };\n function nextPoint(x, y) {\n var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n d3_geo_centroidX1 += z * (x0 + x) / 2;\n d3_geo_centroidY1 += z * (y0 + y) / 2;\n d3_geo_centroidZ1 += z;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n }\n }\n function d3_geo_pathCentroidLineEnd() {\n d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n }\n function d3_geo_pathCentroidRingStart() {\n var x00, y00, x0, y0;\n d3_geo_pathCentroid.point = function(x, y) {\n d3_geo_pathCentroid.point = nextPoint;\n d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);\n };\n function nextPoint(x, y) {\n var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n d3_geo_centroidX1 += z * (x0 + x) / 2;\n d3_geo_centroidY1 += z * (y0 + y) / 2;\n d3_geo_centroidZ1 += z;\n z = y0 * x - x0 * y;\n d3_geo_centroidX2 += z * (x0 + x);\n d3_geo_centroidY2 += z * (y0 + y);\n d3_geo_centroidZ2 += z * 3;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n }\n d3_geo_pathCentroid.lineEnd = function() {\n nextPoint(x00, y00);\n };\n }\n function d3_geo_pathContext(context) {\n var pointRadius = 4.5;\n var stream = {\n point: point,\n lineStart: function() {\n stream.point = pointLineStart;\n },\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.lineEnd = lineEndPolygon;\n },\n polygonEnd: function() {\n stream.lineEnd = lineEnd;\n stream.point = point;\n },\n pointRadius: function(_) {\n pointRadius = _;\n return stream;\n },\n result: d3_noop\n };\n function point(x, y) {\n context.moveTo(x + pointRadius, y);\n context.arc(x, y, pointRadius, 0, Ï„);\n }\n function pointLineStart(x, y) {\n context.moveTo(x, y);\n stream.point = pointLine;\n }\n function pointLine(x, y) {\n context.lineTo(x, y);\n }\n function lineEnd() {\n stream.point = point;\n }\n function lineEndPolygon() {\n context.closePath();\n }\n return stream;\n }\n function d3_geo_resample(project) {\n var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;\n function resample(stream) {\n return (maxDepth ? resampleRecursive : resampleNone)(stream);\n }\n function resampleNone(stream) {\n return d3_geo_transformPoint(stream, function(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n });\n }\n function resampleRecursive(stream) {\n var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;\n var resample = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.polygonStart();\n resample.lineStart = ringStart;\n },\n polygonEnd: function() {\n stream.polygonEnd();\n resample.lineStart = lineStart;\n }\n };\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n function lineStart() {\n x0 = NaN;\n resample.point = linePoint;\n stream.lineStart();\n }\n function linePoint(λ, φ) {\n var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n function lineEnd() {\n resample.point = point;\n stream.lineEnd();\n }\n function ringStart() {\n lineStart();\n resample.point = ringPoint;\n resample.lineEnd = ringEnd;\n }\n function ringPoint(λ, φ) {\n linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resample.point = linePoint;\n }\n function ringEnd() {\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);\n resample.lineEnd = lineEnd;\n lineEnd();\n }\n return resample;\n }\n function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;\n if (d2 > 4 * δ2 && depth--) {\n var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);\n }\n }\n }\n resample.precision = function(_) {\n if (!arguments.length) return Math.sqrt(δ2);\n maxDepth = (δ2 = _ * _) > 0 && 16;\n return resample;\n };\n return resample;\n }\n d3.geo.path = function() {\n var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);\n d3.geo.stream(object, cacheStream);\n }\n return contextStream.result();\n }\n path.area = function(object) {\n d3_geo_pathAreaSum = 0;\n d3.geo.stream(object, projectStream(d3_geo_pathArea));\n return d3_geo_pathAreaSum;\n };\n path.centroid = function(object) {\n d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n d3.geo.stream(object, projectStream(d3_geo_pathCentroid));\n return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ];\n };\n path.bounds = function(object) {\n d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);\n d3.geo.stream(object, projectStream(d3_geo_pathBounds));\n return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ];\n };\n path.projection = function(_) {\n if (!arguments.length) return projection;\n projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;\n return reset();\n };\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return reset();\n };\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n function reset() {\n cacheStream = null;\n return path;\n }\n return path.projection(d3.geo.albersUsa()).context(null);\n };\n function d3_geo_pathProjectStream(project) {\n var resample = d3_geo_resample(function(x, y) {\n return project([ x * d3_degrees, y * d3_degrees ]);\n });\n return function(stream) {\n return d3_geo_projectionRadians(resample(stream));\n };\n }\n d3.geo.transform = function(methods) {\n return {\n stream: function(stream) {\n var transform = new d3_geo_transform(stream);\n for (var k in methods) transform[k] = methods[k];\n return transform;\n }\n };\n };\n function d3_geo_transform(stream) {\n this.stream = stream;\n }\n d3_geo_transform.prototype = {\n point: function(x, y) {\n this.stream.point(x, y);\n },\n sphere: function() {\n this.stream.sphere();\n },\n lineStart: function() {\n this.stream.lineStart();\n },\n lineEnd: function() {\n this.stream.lineEnd();\n },\n polygonStart: function() {\n this.stream.polygonStart();\n },\n polygonEnd: function() {\n this.stream.polygonEnd();\n }\n };\n function d3_geo_transformPoint(stream, point) {\n return {\n point: point,\n sphere: function() {\n stream.sphere();\n },\n lineStart: function() {\n stream.lineStart();\n },\n lineEnd: function() {\n stream.lineEnd();\n },\n polygonStart: function() {\n stream.polygonStart();\n },\n polygonEnd: function() {\n stream.polygonEnd();\n }\n };\n }\n d3.geo.projection = d3_geo_projection;\n d3.geo.projectionMutator = d3_geo_projectionMutator;\n function d3_geo_projection(project) {\n return d3_geo_projectionMutator(function() {\n return project;\n })();\n }\n function d3_geo_projectionMutator(projectAt) {\n var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {\n x = project(x, y);\n return [ x[0] * k + δx, δy - x[1] * k ];\n }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream;\n function projection(point) {\n point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);\n return [ point[0] * k + δx, δy - point[1] * k ];\n }\n function invert(point) {\n point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);\n return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];\n }\n projection.stream = function(output) {\n if (stream) stream.valid = false;\n stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));\n stream.valid = true;\n return stream;\n };\n projection.clipAngle = function(_) {\n if (!arguments.length) return clipAngle;\n preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);\n return invalidate();\n };\n projection.clipExtent = function(_) {\n if (!arguments.length) return clipExtent;\n clipExtent = _;\n postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;\n return invalidate();\n };\n projection.scale = function(_) {\n if (!arguments.length) return k;\n k = +_;\n return reset();\n };\n projection.translate = function(_) {\n if (!arguments.length) return [ x, y ];\n x = +_[0];\n y = +_[1];\n return reset();\n };\n projection.center = function(_) {\n if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];\n λ = _[0] % 360 * d3_radians;\n φ = _[1] % 360 * d3_radians;\n return reset();\n };\n projection.rotate = function(_) {\n if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];\n δλ = _[0] % 360 * d3_radians;\n δφ = _[1] % 360 * d3_radians;\n δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;\n return reset();\n };\n d3.rebind(projection, projectResample, \"precision\");\n function reset() {\n projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);\n var center = project(λ, φ);\n δx = x - center[0] * k;\n δy = y + center[1] * k;\n return invalidate();\n }\n function invalidate() {\n if (stream) stream.valid = false, stream = null;\n return projection;\n }\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return reset();\n };\n }\n function d3_geo_projectionRadians(stream) {\n return d3_geo_transformPoint(stream, function(x, y) {\n stream.point(x * d3_radians, y * d3_radians);\n });\n }\n function d3_geo_equirectangular(λ, φ) {\n return [ λ, φ ];\n }\n (d3.geo.equirectangular = function() {\n return d3_geo_projection(d3_geo_equirectangular);\n }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;\n d3.geo.rotation = function(rotate) {\n rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n }\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n };\n return forward;\n };\n function d3_geo_identityRotation(λ, φ) {\n return [ λ > Ï€ ? λ - Ï„ : λ < -Ï€ ? λ + Ï„ : λ, φ ];\n }\n d3_geo_identityRotation.invert = d3_geo_equirectangular;\n function d3_geo_rotation(δλ, δφ, δγ) {\n return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;\n }\n function d3_geo_forwardRotationλ(δλ) {\n return function(λ, φ) {\n return λ += δλ, [ λ > Ï€ ? λ - Ï„ : λ < -Ï€ ? λ + Ï„ : λ, φ ];\n };\n }\n function d3_geo_rotationλ(δλ) {\n var rotation = d3_geo_forwardRotationλ(δλ);\n rotation.invert = d3_geo_forwardRotationλ(-δλ);\n return rotation;\n }\n function d3_geo_rotationφγ(δφ, δγ) {\n var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);\n function rotation(λ, φ) {\n var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;\n return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ];\n }\n rotation.invert = function(λ, φ) {\n var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;\n return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ];\n };\n return rotation;\n }\n d3.geo.circle = function() {\n var origin = [ 0, 0 ], angle, precision = 6, interpolate;\n function circle() {\n var center = typeof origin === \"function\" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];\n interpolate(null, null, 1, {\n point: function(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= d3_degrees, x[1] *= d3_degrees;\n }\n });\n return {\n type: \"Polygon\",\n coordinates: [ ring ]\n };\n }\n circle.origin = function(x) {\n if (!arguments.length) return origin;\n origin = x;\n return circle;\n };\n circle.angle = function(x) {\n if (!arguments.length) return angle;\n interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);\n return circle;\n };\n circle.precision = function(_) {\n if (!arguments.length) return precision;\n interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);\n return circle;\n };\n return circle.angle(90);\n };\n function d3_geo_circleInterpolate(radius, precision) {\n var cr = Math.cos(radius), sr = Math.sin(radius);\n return function(from, to, direction, listener) {\n var step = direction * precision;\n if (from != null) {\n from = d3_geo_circleAngle(cr, from);\n to = d3_geo_circleAngle(cr, to);\n if (direction > 0 ? from < to : from > to) from += direction * Ï„;\n } else {\n from = radius + direction * Ï„;\n to = radius - .5 * step;\n }\n for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {\n listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);\n }\n };\n }\n function d3_geo_circleAngle(cr, point) {\n var a = d3_geo_cartesian(point);\n a[0] -= cr;\n d3_geo_cartesianNormalize(a);\n var angle = d3_acos(-a[1]);\n return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);\n }\n d3.geo.distance = function(a, b) {\n var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;\n return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);\n };\n d3.geo.graticule = function() {\n var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;\n function graticule() {\n return {\n type: \"MultiLineString\",\n coordinates: lines()\n };\n }\n function lines() {\n return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {\n return abs(x % DX) > ε;\n }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {\n return abs(y % DY) > ε;\n }).map(y));\n }\n graticule.lines = function() {\n return lines().map(function(coordinates) {\n return {\n type: \"LineString\",\n coordinates: coordinates\n };\n });\n };\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]\n };\n };\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.minorExtent();\n return graticule.majorExtent(_).minorExtent(_);\n };\n graticule.majorExtent = 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 graticule.minorExtent = 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 graticule.step = function(_) {\n if (!arguments.length) return graticule.minorStep();\n return graticule.majorStep(_).minorStep(_);\n };\n graticule.majorStep = function(_) {\n if (!arguments.length) return [ DX, DY ];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n graticule.minorStep = function(_) {\n if (!arguments.length) return [ dx, dy ];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = d3_geo_graticuleX(y0, y1, 90);\n y = d3_geo_graticuleY(x0, x1, precision);\n X = d3_geo_graticuleX(Y0, Y1, 90);\n Y = d3_geo_graticuleY(X0, X1, precision);\n return graticule;\n };\n return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);\n };\n function d3_geo_graticuleX(y0, y1, dy) {\n var y = d3.range(y0, y1 - ε, dy).concat(y1);\n return function(x) {\n return y.map(function(y) {\n return [ x, y ];\n });\n };\n }\n function d3_geo_graticuleY(x0, x1, dx) {\n var x = d3.range(x0, x1 - ε, dx).concat(x1);\n return function(y) {\n return x.map(function(x) {\n return [ x, y ];\n });\n };\n }\n function d3_source(d) {\n return d.source;\n }\n function d3_target(d) {\n return d.target;\n }\n d3.geo.greatArc = function() {\n var source = d3_source, source_, target = d3_target, target_;\n function greatArc() {\n return {\n type: \"LineString\",\n coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]\n };\n }\n greatArc.distance = function() {\n return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));\n };\n greatArc.source = function(_) {\n if (!arguments.length) return source;\n source = _, source_ = typeof _ === \"function\" ? null : _;\n return greatArc;\n };\n greatArc.target = function(_) {\n if (!arguments.length) return target;\n target = _, target_ = typeof _ === \"function\" ? null : _;\n return greatArc;\n };\n greatArc.precision = function() {\n return arguments.length ? greatArc : 0;\n };\n return greatArc;\n };\n d3.geo.interpolate = function(source, target) {\n return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);\n };\n function d3_geo_interpolate(x0, y0, x1, y1) {\n var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);\n var interpolate = d ? function(t) {\n var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;\n return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];\n } : function() {\n return [ x0 * d3_degrees, y0 * d3_degrees ];\n };\n interpolate.distance = d;\n return interpolate;\n }\n d3.geo.length = function(object) {\n d3_geo_lengthSum = 0;\n d3.geo.stream(object, d3_geo_length);\n return d3_geo_lengthSum;\n };\n var d3_geo_lengthSum;\n var d3_geo_length = {\n sphere: d3_noop,\n point: d3_noop,\n lineStart: d3_geo_lengthLineStart,\n lineEnd: d3_noop,\n polygonStart: d3_noop,\n polygonEnd: d3_noop\n };\n function d3_geo_lengthLineStart() {\n var λ0, sinφ0, cosφ0;\n d3_geo_length.point = function(λ, φ) {\n λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);\n d3_geo_length.point = nextPoint;\n };\n d3_geo_length.lineEnd = function() {\n d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;\n };\n function nextPoint(λ, φ) {\n var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);\n d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);\n λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;\n }\n }\n function d3_geo_azimuthal(scale, angle) {\n function azimuthal(λ, φ) {\n var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);\n return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];\n }\n azimuthal.invert = function(x, y) {\n var Ï = Math.sqrt(x * x + y * y), c = angle(Ï), sinc = Math.sin(c), cosc = Math.cos(c);\n return [ Math.atan2(x * sinc, Ï * cosc), Math.asin(Ï && y * sinc / Ï) ];\n };\n return azimuthal;\n }\n var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {\n return Math.sqrt(2 / (1 + cosλcosφ));\n }, function(Ï) {\n return 2 * Math.asin(Ï / 2);\n });\n (d3.geo.azimuthalEqualArea = function() {\n return d3_geo_projection(d3_geo_azimuthalEqualArea);\n }).raw = d3_geo_azimuthalEqualArea;\n var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {\n var c = Math.acos(cosλcosφ);\n return c && c / Math.sin(c);\n }, d3_identity);\n (d3.geo.azimuthalEquidistant = function() {\n return d3_geo_projection(d3_geo_azimuthalEquidistant);\n }).raw = d3_geo_azimuthalEquidistant;\n function d3_geo_conicConformal(φ0, φ1) {\n var cosφ0 = Math.cos(φ0), t = function(φ) {\n return Math.tan(Ï€ / 4 + φ / 2);\n }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;\n if (!n) return d3_geo_mercator;\n function forward(λ, φ) {\n if (F > 0) {\n if (φ < -halfÏ€ + ε) φ = -halfÏ€ + ε;\n } else {\n if (φ > halfÏ€ - ε) φ = halfÏ€ - ε;\n }\n var Ï = F / Math.pow(t(φ), n);\n return [ Ï * Math.sin(n * λ), F - Ï * Math.cos(n * λ) ];\n }\n forward.invert = function(x, y) {\n var Ï0_y = F - y, Ï = d3_sgn(n) * Math.sqrt(x * x + Ï0_y * Ï0_y);\n return [ Math.atan2(x, Ï0_y) / n, 2 * Math.atan(Math.pow(F / Ï, 1 / n)) - halfÏ€ ];\n };\n return forward;\n }\n (d3.geo.conicConformal = function() {\n return d3_geo_conic(d3_geo_conicConformal);\n }).raw = d3_geo_conicConformal;\n function d3_geo_conicEquidistant(φ0, φ1) {\n var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;\n if (abs(n) < ε) return d3_geo_equirectangular;\n function forward(λ, φ) {\n var Ï = G - φ;\n return [ Ï * Math.sin(n * λ), G - Ï * Math.cos(n * λ) ];\n }\n forward.invert = function(x, y) {\n var Ï0_y = G - y;\n return [ Math.atan2(x, Ï0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + Ï0_y * Ï0_y) ];\n };\n return forward;\n }\n (d3.geo.conicEquidistant = function() {\n return d3_geo_conic(d3_geo_conicEquidistant);\n }).raw = d3_geo_conicEquidistant;\n var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {\n return 1 / cosλcosφ;\n }, Math.atan);\n (d3.geo.gnomonic = function() {\n return d3_geo_projection(d3_geo_gnomonic);\n }).raw = d3_geo_gnomonic;\n function d3_geo_mercator(λ, φ) {\n return [ λ, Math.log(Math.tan(Ï€ / 4 + φ / 2)) ];\n }\n d3_geo_mercator.invert = function(x, y) {\n return [ x, 2 * Math.atan(Math.exp(y)) - halfÏ€ ];\n };\n function d3_geo_mercatorProjection(project) {\n var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;\n m.scale = function() {\n var v = scale.apply(m, arguments);\n return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n };\n m.translate = function() {\n var v = translate.apply(m, arguments);\n return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n };\n m.clipExtent = function(_) {\n var v = clipExtent.apply(m, arguments);\n if (v === m) {\n if (clipAuto = _ == null) {\n var k = Ï€ * scale(), t = translate();\n clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);\n }\n } else if (clipAuto) {\n v = null;\n }\n return v;\n };\n return m.clipExtent(null);\n }\n (d3.geo.mercator = function() {\n return d3_geo_mercatorProjection(d3_geo_mercator);\n }).raw = d3_geo_mercator;\n var d3_geo_orthographic = d3_geo_azimuthal(function() {\n return 1;\n }, Math.asin);\n (d3.geo.orthographic = function() {\n return d3_geo_projection(d3_geo_orthographic);\n }).raw = d3_geo_orthographic;\n var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {\n return 1 / (1 + cosλcosφ);\n }, function(Ï) {\n return 2 * Math.atan(Ï);\n });\n (d3.geo.stereographic = function() {\n return d3_geo_projection(d3_geo_stereographic);\n }).raw = d3_geo_stereographic;\n function d3_geo_transverseMercator(λ, φ) {\n return [ Math.log(Math.tan(Ï€ / 4 + φ / 2)), -λ ];\n }\n d3_geo_transverseMercator.invert = function(x, y) {\n return [ -y, 2 * Math.atan(Math.exp(x)) - halfÏ€ ];\n };\n (d3.geo.transverseMercator = function() {\n var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator), center = projection.center, rotate = projection.rotate;\n projection.center = function(_) {\n return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]);\n };\n projection.rotate = function(_) {\n return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(), \n [ _[0], _[1], _[2] - 90 ]);\n };\n return rotate([ 0, 0, 90 ]);\n }).raw = d3_geo_transverseMercator;\n d3.geom = {};\n function d3_geom_pointX(d) {\n return d[0];\n }\n function d3_geom_pointY(d) {\n return d[1];\n }\n d3.geom.hull = function(vertices) {\n var x = d3_geom_pointX, y = d3_geom_pointY;\n if (arguments.length) return hull(vertices);\n function hull(data) {\n if (data.length < 3) return [];\n var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];\n for (i = 0; i < n; i++) {\n points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]);\n }\n points.sort(d3_geom_hullOrder);\n for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]);\n var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);\n var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];\n for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);\n for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);\n return polygon;\n }\n hull.x = function(_) {\n return arguments.length ? (x = _, hull) : x;\n };\n hull.y = function(_) {\n return arguments.length ? (y = _, hull) : y;\n };\n return hull;\n };\n function d3_geom_hullUpper(points) {\n var n = points.length, hull = [ 0, 1 ], hs = 2;\n for (var i = 2; i < n; i++) {\n while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;\n hull[hs++] = i;\n }\n return hull.slice(0, hs);\n }\n function d3_geom_hullOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n }\n d3.geom.polygon = function(coordinates) {\n d3_subclass(coordinates, d3_geom_polygonPrototype);\n return coordinates;\n };\n var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];\n d3_geom_polygonPrototype.area = function() {\n var i = -1, n = this.length, a, b = this[n - 1], area = 0;\n while (++i < n) {\n a = b;\n b = this[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n return area * .5;\n };\n d3_geom_polygonPrototype.centroid = function(k) {\n var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;\n if (!arguments.length) k = -1 / (6 * this.area());\n while (++i < n) {\n a = b;\n b = this[i];\n c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n return [ x * k, y * k ];\n };\n d3_geom_polygonPrototype.clip = function(subject) {\n var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;\n while (++i < n) {\n input = subject.slice();\n subject.length = 0;\n b = this[i];\n c = input[(m = input.length - closed) - 1];\n j = -1;\n while (++j < m) {\n d = input[j];\n if (d3_geom_polygonInside(d, a, b)) {\n if (!d3_geom_polygonInside(c, a, b)) {\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\n }\n subject.push(d);\n } else if (d3_geom_polygonInside(c, a, b)) {\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\n }\n c = d;\n }\n if (closed) subject.push(subject[0]);\n a = b;\n }\n return subject;\n };\n function d3_geom_polygonInside(p, a, b) {\n return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);\n }\n function d3_geom_polygonIntersect(c, d, a, b) {\n var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n return [ x1 + ua * x21, y1 + ua * y21 ];\n }\n function d3_geom_polygonClosed(coordinates) {\n var a = coordinates[0], b = coordinates[coordinates.length - 1];\n return !(a[0] - b[0] || a[1] - b[1]);\n }\n var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];\n function d3_geom_voronoiBeach() {\n d3_geom_voronoiRedBlackNode(this);\n this.edge = this.site = this.circle = null;\n }\n function d3_geom_voronoiCreateBeach(site) {\n var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();\n beach.site = site;\n return beach;\n }\n function d3_geom_voronoiDetachBeach(beach) {\n d3_geom_voronoiDetachCircle(beach);\n d3_geom_voronoiBeaches.remove(beach);\n d3_geom_voronoiBeachPool.push(beach);\n d3_geom_voronoiRedBlackNode(beach);\n }\n function d3_geom_voronoiRemoveBeach(beach) {\n var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {\n x: x,\n y: y\n }, previous = beach.P, next = beach.N, disappearing = [ beach ];\n d3_geom_voronoiDetachBeach(beach);\n var lArc = previous;\n while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n d3_geom_voronoiDetachBeach(lArc);\n lArc = previous;\n }\n disappearing.unshift(lArc);\n d3_geom_voronoiDetachCircle(lArc);\n var rArc = next;\n while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {\n next = rArc.N;\n disappearing.push(rArc);\n d3_geom_voronoiDetachBeach(rArc);\n rArc = next;\n }\n disappearing.push(rArc);\n d3_geom_voronoiDetachCircle(rArc);\n var nArcs = disappearing.length, iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n }\n function d3_geom_voronoiAddBeach(site) {\n var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;\n while (node) {\n dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;\n if (dxl > ε) node = node.L; else {\n dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);\n if (dxr > ε) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -ε) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -ε) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n var newArc = d3_geom_voronoiCreateBeach(site);\n d3_geom_voronoiBeaches.insert(lArc, newArc);\n if (!lArc && !rArc) return;\n if (lArc === rArc) {\n d3_geom_voronoiDetachCircle(lArc);\n rArc = d3_geom_voronoiCreateBeach(lArc.site);\n d3_geom_voronoiBeaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n return;\n }\n if (!rArc) {\n newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n return;\n }\n d3_geom_voronoiDetachCircle(lArc);\n d3_geom_voronoiDetachCircle(rArc);\n var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {\n x: (cy * hb - by * hc) / d + ax,\n y: (bx * hc - cx * hb) / d + ay\n };\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);\n rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n }\n function d3_geom_voronoiLeftBreakPoint(arc, directrix) {\n var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;\n if (!pby2) return rfocx;\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n site = lArc.site;\n var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;\n if (!plby2) return lfocx;\n var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n return (rfocx + lfocx) / 2;\n }\n function d3_geom_voronoiRightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site.y === directrix ? site.x : Infinity;\n }\n function d3_geom_voronoiCell(site) {\n this.site = site;\n this.edges = [];\n }\n d3_geom_voronoiCell.prototype.prepare = function() {\n var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;\n while (iHalfEdge--) {\n edge = halfEdges[iHalfEdge].edge;\n if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);\n }\n halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);\n return halfEdges.length;\n };\n function d3_geom_voronoiCloseCells(extent) {\n var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;\n while (iCell--) {\n cell = cells[iCell];\n if (!cell || !cell.prepare()) continue;\n halfEdges = cell.edges;\n nHalfEdges = halfEdges.length;\n iHalfEdge = 0;\n while (iHalfEdge < nHalfEdges) {\n end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;\n start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;\n if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {\n halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {\n x: x0,\n y: abs(x2 - x0) < ε ? y2 : y1\n } : abs(y3 - y1) < ε && x1 - x3 > ε ? {\n x: abs(y2 - y1) < ε ? x2 : x1,\n y: y1\n } : abs(x3 - x1) < ε && y3 - y0 > ε ? {\n x: x1,\n y: abs(x2 - x1) < ε ? y2 : y0\n } : abs(y3 - y0) < ε && x3 - x0 > ε ? {\n x: abs(y2 - y0) < ε ? x2 : x0,\n y: y0\n } : null), cell.site, null));\n ++nHalfEdges;\n }\n }\n }\n }\n function d3_geom_voronoiHalfEdgeOrder(a, b) {\n return b.angle - a.angle;\n }\n function d3_geom_voronoiCircle() {\n d3_geom_voronoiRedBlackNode(this);\n this.x = this.y = this.arc = this.site = this.cy = null;\n }\n function d3_geom_voronoiAttachCircle(arc) {\n var lArc = arc.P, rArc = arc.N;\n if (!lArc || !rArc) return;\n var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;\n if (lSite === rSite) return;\n var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -ε2) return;\n var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;\n var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = cy + Math.sqrt(x * x + y * y);\n circle.cy = cy;\n arc.circle = circle;\n var before = null, node = d3_geom_voronoiCircles._;\n while (node) {\n if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {\n if (node.L) node = node.L; else {\n before = node.P;\n break;\n }\n } else {\n if (node.R) node = node.R; else {\n before = node;\n break;\n }\n }\n }\n d3_geom_voronoiCircles.insert(before, circle);\n if (!before) d3_geom_voronoiFirstCircle = circle;\n }\n function d3_geom_voronoiDetachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;\n d3_geom_voronoiCircles.remove(circle);\n d3_geom_voronoiCirclePool.push(circle);\n d3_geom_voronoiRedBlackNode(circle);\n arc.circle = null;\n }\n }\n function d3_geom_voronoiClipEdges(extent) {\n var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;\n while (i--) {\n e = edges[i];\n if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {\n e.a = e.b = null;\n edges.splice(i, 1);\n }\n }\n }\n function d3_geom_voronoiConnectEdge(edge, extent) {\n var vb = edge.b;\n if (vb) return true;\n var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!va) va = {\n x: fx,\n y: y0\n }; else if (va.y >= y1) return;\n vb = {\n x: fx,\n y: y1\n };\n } else {\n if (!va) va = {\n x: fx,\n y: y1\n }; else if (va.y < y0) return;\n vb = {\n x: fx,\n y: y0\n };\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!va) va = {\n x: (y0 - fb) / fm,\n y: y0\n }; else if (va.y >= y1) return;\n vb = {\n x: (y1 - fb) / fm,\n y: y1\n };\n } else {\n if (!va) va = {\n x: (y1 - fb) / fm,\n y: y1\n }; else if (va.y < y0) return;\n vb = {\n x: (y0 - fb) / fm,\n y: y0\n };\n }\n } else {\n if (ly < ry) {\n if (!va) va = {\n x: x0,\n y: fm * x0 + fb\n }; else if (va.x >= x1) return;\n vb = {\n x: x1,\n y: fm * x1 + fb\n };\n } else {\n if (!va) va = {\n x: x1,\n y: fm * x1 + fb\n }; else if (va.x < x0) return;\n vb = {\n x: x0,\n y: fm * x0 + fb\n };\n }\n }\n }\n edge.a = va;\n edge.b = vb;\n return true;\n }\n function d3_geom_voronoiEdge(lSite, rSite) {\n this.l = lSite;\n this.r = rSite;\n this.a = this.b = null;\n }\n function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {\n var edge = new d3_geom_voronoiEdge(lSite, rSite);\n d3_geom_voronoiEdges.push(edge);\n if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);\n if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);\n d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));\n d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));\n return edge;\n }\n function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {\n var edge = new d3_geom_voronoiEdge(lSite, null);\n edge.a = va;\n edge.b = vb;\n d3_geom_voronoiEdges.push(edge);\n return edge;\n }\n function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {\n if (!edge.a && !edge.b) {\n edge.a = vertex;\n edge.l = lSite;\n edge.r = rSite;\n } else if (edge.l === rSite) {\n edge.b = vertex;\n } else {\n edge.a = vertex;\n }\n }\n function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {\n var va = edge.a, vb = edge.b;\n this.edge = edge;\n this.site = lSite;\n this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);\n }\n d3_geom_voronoiHalfEdge.prototype = {\n start: function() {\n return this.edge.l === this.site ? this.edge.a : this.edge.b;\n },\n end: function() {\n return this.edge.l === this.site ? this.edge.b : this.edge.a;\n }\n };\n function d3_geom_voronoiRedBlackTree() {\n this._ = null;\n }\n function d3_geom_voronoiRedBlackNode(node) {\n node.U = node.C = node.L = node.R = node.P = node.N = null;\n }\n d3_geom_voronoiRedBlackTree.prototype = {\n insert: function(after, node) {\n var parent, grandpa, uncle;\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = d3_geom_voronoiRedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n var parent = node.U, sibling, left = node.L, right = node.R, next, red;\n if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);\n if (parent) {\n if (parent.L === node) parent.L = next; else parent.R = next;\n } else {\n this._ = next;\n }\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) {\n node.C = false;\n return;\n }\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n if (node) node.C = false;\n }\n };\n function d3_geom_voronoiRedBlackRotateLeft(tree, node) {\n var p = node, q = node.R, parent = p.U;\n if (parent) {\n if (parent.L === p) parent.L = q; else parent.R = q;\n } else {\n tree._ = q;\n }\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n }\n function d3_geom_voronoiRedBlackRotateRight(tree, node) {\n var p = node, q = node.L, parent = p.U;\n if (parent) {\n if (parent.L === p) parent.L = q; else parent.R = q;\n } else {\n tree._ = q;\n }\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n }\n function d3_geom_voronoiRedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n }\n function d3_geom_voronoi(sites, bbox) {\n var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;\n d3_geom_voronoiEdges = [];\n d3_geom_voronoiCells = new Array(sites.length);\n d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();\n d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();\n while (true) {\n circle = d3_geom_voronoiFirstCircle;\n if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {\n if (site.x !== x0 || site.y !== y0) {\n d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);\n d3_geom_voronoiAddBeach(site);\n x0 = site.x, y0 = site.y;\n }\n site = sites.pop();\n } else if (circle) {\n d3_geom_voronoiRemoveBeach(circle.arc);\n } else {\n break;\n }\n }\n if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);\n var diagram = {\n cells: d3_geom_voronoiCells,\n edges: d3_geom_voronoiEdges\n };\n d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;\n return diagram;\n }\n function d3_geom_voronoiVertexOrder(a, b) {\n return b.y - a.y || b.x - a.x;\n }\n d3.geom.voronoi = function(points) {\n var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;\n if (points) return voronoi(points);\n function voronoi(data) {\n var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];\n d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {\n var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {\n var s = e.start();\n return [ s.x, s.y ];\n }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];\n polygon.point = data[i];\n });\n return polygons;\n }\n function sites(data) {\n return data.map(function(d, i) {\n return {\n x: Math.round(fx(d, i) / ε) * ε,\n y: Math.round(fy(d, i) / ε) * ε,\n i: i\n };\n });\n }\n voronoi.links = function(data) {\n return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {\n return edge.l && edge.r;\n }).map(function(edge) {\n return {\n source: data[edge.l.i],\n target: data[edge.r.i]\n };\n });\n };\n voronoi.triangles = function(data) {\n var triangles = [];\n d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {\n var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;\n while (++j < m) {\n e0 = e1;\n s0 = s1;\n e1 = edges[j].edge;\n s1 = e1.l === site ? e1.r : e1.l;\n if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {\n triangles.push([ data[i], data[s0.i], data[s1.i] ]);\n }\n }\n });\n return triangles;\n };\n voronoi.x = function(_) {\n return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;\n };\n voronoi.y = function(_) {\n return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;\n };\n voronoi.clipExtent = function(_) {\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;\n clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;\n return voronoi;\n };\n voronoi.size = function(_) {\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];\n return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);\n };\n return voronoi;\n };\n var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];\n function d3_geom_voronoiTriangleArea(a, b, c) {\n return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);\n }\n d3.geom.delaunay = function(vertices) {\n return d3.geom.voronoi().triangles(vertices);\n };\n d3.geom.quadtree = function(points, x1, y1, x2, y2) {\n var x = d3_geom_pointX, y = d3_geom_pointY, compat;\n if (compat = arguments.length) {\n x = d3_geom_quadtreeCompatX;\n y = d3_geom_quadtreeCompatY;\n if (compat === 3) {\n y2 = y1;\n x2 = x1;\n y1 = x1 = 0;\n }\n return quadtree(points);\n }\n function quadtree(data) {\n var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;\n if (x1 != null) {\n x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;\n } else {\n x2_ = y2_ = -(x1_ = y1_ = Infinity);\n xs = [], ys = [];\n n = data.length;\n if (compat) for (i = 0; i < n; ++i) {\n d = data[i];\n if (d.x < x1_) x1_ = d.x;\n if (d.y < y1_) y1_ = d.y;\n if (d.x > x2_) x2_ = d.x;\n if (d.y > y2_) y2_ = d.y;\n xs.push(d.x);\n ys.push(d.y);\n } else for (i = 0; i < n; ++i) {\n var x_ = +fx(d = data[i], i), y_ = +fy(d, i);\n if (x_ < x1_) x1_ = x_;\n if (y_ < y1_) y1_ = y_;\n if (x_ > x2_) x2_ = x_;\n if (y_ > y2_) y2_ = y_;\n xs.push(x_);\n ys.push(y_);\n }\n }\n var dx = x2_ - x1_, dy = y2_ - y1_;\n if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;\n function insert(n, d, x, y, x1, y1, x2, y2) {\n if (isNaN(x) || isNaN(y)) return;\n if (n.leaf) {\n var nx = n.x, ny = n.y;\n if (nx != null) {\n if (abs(nx - x) + abs(ny - y) < .01) {\n insertChild(n, d, x, y, x1, y1, x2, y2);\n } else {\n var nPoint = n.point;\n n.x = n.y = n.point = null;\n insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);\n insertChild(n, d, x, y, x1, y1, x2, y2);\n }\n } else {\n n.x = x, n.y = y, n.point = d;\n }\n } else {\n insertChild(n, d, x, y, x1, y1, x2, y2);\n }\n }\n function insertChild(n, d, x, y, x1, y1, x2, y2) {\n var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;\n n.leaf = false;\n n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());\n if (right) x1 = xm; else x2 = xm;\n if (below) y1 = ym; else y2 = ym;\n insert(n, d, x, y, x1, y1, x2, y2);\n }\n var root = d3_geom_quadtreeNode();\n root.add = function(d) {\n insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);\n };\n root.visit = function(f) {\n d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);\n };\n root.find = function(point) {\n return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);\n };\n i = -1;\n if (x1 == null) {\n while (++i < n) {\n insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);\n }\n --i;\n } else data.forEach(root.add);\n xs = ys = data = d = null;\n return root;\n }\n quadtree.x = function(_) {\n return arguments.length ? (x = _, quadtree) : x;\n };\n quadtree.y = function(_) {\n return arguments.length ? (y = _, quadtree) : y;\n };\n quadtree.extent = function(_) {\n if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];\n if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], \n y2 = +_[1][1];\n return quadtree;\n };\n quadtree.size = function(_) {\n if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];\n if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];\n return quadtree;\n };\n return quadtree;\n };\n function d3_geom_quadtreeCompatX(d) {\n return d.x;\n }\n function d3_geom_quadtreeCompatY(d) {\n return d.y;\n }\n function d3_geom_quadtreeNode() {\n return {\n leaf: true,\n nodes: [],\n point: null,\n x: null,\n y: null\n };\n }\n function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {\n if (!f(node, x1, y1, x2, y2)) {\n var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;\n if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);\n if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);\n if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);\n if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);\n }\n }\n function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {\n var minDistance2 = Infinity, closestPoint;\n (function find(node, x1, y1, x2, y2) {\n if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;\n if (point = node.point) {\n var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;\n if (distance2 < minDistance2) {\n var distance = Math.sqrt(minDistance2 = distance2);\n x0 = x - distance, y0 = y - distance;\n x3 = x + distance, y3 = y + distance;\n closestPoint = point;\n }\n }\n var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;\n for (var i = below << 1 | right, j = i + 4; i < j; ++i) {\n if (node = children[i & 3]) switch (i & 3) {\n case 0:\n find(node, x1, y1, xm, ym);\n break;\n\n case 1:\n find(node, xm, y1, x2, ym);\n break;\n\n case 2:\n find(node, x1, ym, xm, y2);\n break;\n\n case 3:\n find(node, xm, ym, x2, y2);\n break;\n }\n }\n })(root, x0, y0, x3, y3);\n return closestPoint;\n }\n d3.interpolateRgb = d3_interpolateRgb;\n function d3_interpolateRgb(a, b) {\n a = d3.rgb(a);\n b = d3.rgb(b);\n var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;\n return function(t) {\n return \"#\" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));\n };\n }\n d3.interpolateObject = d3_interpolateObject;\n function d3_interpolateObject(a, b) {\n var i = {}, c = {}, k;\n for (k in a) {\n if (k in b) {\n i[k] = d3_interpolate(a[k], b[k]);\n } else {\n c[k] = a[k];\n }\n }\n for (k in b) {\n if (!(k in a)) {\n c[k] = b[k];\n }\n }\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n }\n d3.interpolateNumber = d3_interpolateNumber;\n function d3_interpolateNumber(a, b) {\n a = +a, b = +b;\n return function(t) {\n return a * (1 - t) + b * t;\n };\n }\n d3.interpolateString = d3_interpolateString;\n function d3_interpolateString(a, b) {\n var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n a = a + \"\", b = b + \"\";\n while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {\n if ((bs = bm.index) > bi) {\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) {\n if (s[i]) s[i] += bm; else s[++i] = bm;\n } else {\n s[++i] = null;\n q.push({\n i: i,\n x: d3_interpolateNumber(am, bm)\n });\n }\n bi = d3_interpolate_numberB.lastIndex;\n }\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; else s[++i] = bs;\n }\n return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {\n return b(t) + \"\";\n }) : function() {\n return b;\n } : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n }\n var d3_interpolate_numberA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, \"g\");\n d3.interpolate = d3_interpolate;\n function d3_interpolate(a, b) {\n var i = d3.interpolators.length, f;\n while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;\n return f;\n }\n d3.interpolators = [ function(a, b) {\n var t = typeof b;\n return (t === \"string\" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\\(|hsl\\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === \"object\" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);\n } ];\n d3.interpolateArray = d3_interpolateArray;\n function d3_interpolateArray(a, b) {\n var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;\n for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));\n for (;i < na; ++i) c[i] = a[i];\n for (;i < nb; ++i) c[i] = b[i];\n return function(t) {\n for (i = 0; i < n0; ++i) c[i] = x[i](t);\n return c;\n };\n }\n var d3_ease_default = function() {\n return d3_identity;\n };\n var d3_ease = d3.map({\n linear: d3_ease_default,\n poly: d3_ease_poly,\n quad: function() {\n return d3_ease_quad;\n },\n cubic: function() {\n return d3_ease_cubic;\n },\n sin: function() {\n return d3_ease_sin;\n },\n exp: function() {\n return d3_ease_exp;\n },\n circle: function() {\n return d3_ease_circle;\n },\n elastic: d3_ease_elastic,\n back: d3_ease_back,\n bounce: function() {\n return d3_ease_bounce;\n }\n });\n var d3_ease_mode = d3.map({\n \"in\": d3_identity,\n out: d3_ease_reverse,\n \"in-out\": d3_ease_reflect,\n \"out-in\": function(f) {\n return d3_ease_reflect(d3_ease_reverse(f));\n }\n });\n d3.ease = function(name) {\n var i = name.indexOf(\"-\"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : \"in\";\n t = d3_ease.get(t) || d3_ease_default;\n m = d3_ease_mode.get(m) || d3_identity;\n return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));\n };\n function d3_ease_clamp(f) {\n return function(t) {\n return t <= 0 ? 0 : t >= 1 ? 1 : f(t);\n };\n }\n function d3_ease_reverse(f) {\n return function(t) {\n return 1 - f(1 - t);\n };\n }\n function d3_ease_reflect(f) {\n return function(t) {\n return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));\n };\n }\n function d3_ease_quad(t) {\n return t * t;\n }\n function d3_ease_cubic(t) {\n return t * t * t;\n }\n function d3_ease_cubicInOut(t) {\n if (t <= 0) return 0;\n if (t >= 1) return 1;\n var t2 = t * t, t3 = t2 * t;\n return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);\n }\n function d3_ease_poly(e) {\n return function(t) {\n return Math.pow(t, e);\n };\n }\n function d3_ease_sin(t) {\n return 1 - Math.cos(t * halfÏ€);\n }\n function d3_ease_exp(t) {\n return Math.pow(2, 10 * (t - 1));\n }\n function d3_ease_circle(t) {\n return 1 - Math.sqrt(1 - t * t);\n }\n function d3_ease_elastic(a, p) {\n var s;\n if (arguments.length < 2) p = .45;\n if (arguments.length) s = p / Ï„ * Math.asin(1 / a); else a = 1, s = p / 4;\n return function(t) {\n return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * Ï„ / p);\n };\n }\n function d3_ease_back(s) {\n if (!s) s = 1.70158;\n return function(t) {\n return t * t * ((s + 1) * t - s);\n };\n }\n function d3_ease_bounce(t) {\n return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;\n }\n d3.interpolateHcl = d3_interpolateHcl;\n function d3_interpolateHcl(a, b) {\n a = d3.hcl(a);\n b = d3.hcl(b);\n var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;\n if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n return function(t) {\n return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + \"\";\n };\n }\n d3.interpolateHsl = d3_interpolateHsl;\n function d3_interpolateHsl(a, b) {\n a = d3.hsl(a);\n b = d3.hsl(b);\n var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;\n if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n return function(t) {\n return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + \"\";\n };\n }\n d3.interpolateLab = d3_interpolateLab;\n function d3_interpolateLab(a, b) {\n a = d3.lab(a);\n b = d3.lab(b);\n var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;\n return function(t) {\n return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + \"\";\n };\n }\n d3.interpolateRound = d3_interpolateRound;\n function d3_interpolateRound(a, b) {\n b -= a;\n return function(t) {\n return Math.round(a + b * t);\n };\n }\n d3.transform = function(string) {\n var g = d3_document.createElementNS(d3.ns.prefix.svg, \"g\");\n return (d3.transform = function(string) {\n if (string != null) {\n g.setAttribute(\"transform\", string);\n var t = g.transform.baseVal.consolidate();\n }\n return new d3_transform(t ? t.matrix : d3_transformIdentity);\n })(string);\n };\n function d3_transform(m) {\n var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;\n if (r0[0] * r1[1] < r1[0] * r0[1]) {\n r0[0] *= -1;\n r0[1] *= -1;\n kx *= -1;\n kz *= -1;\n }\n this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;\n this.translate = [ m.e, m.f ];\n this.scale = [ kx, ky ];\n this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;\n }\n d3_transform.prototype.toString = function() {\n return \"translate(\" + this.translate + \")rotate(\" + this.rotate + \")skewX(\" + this.skew + \")scale(\" + this.scale + \")\";\n };\n function d3_transformDot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n }\n function d3_transformNormalize(a) {\n var k = Math.sqrt(d3_transformDot(a, a));\n if (k) {\n a[0] /= k;\n a[1] /= k;\n }\n return k;\n }\n function d3_transformCombine(a, b, k) {\n a[0] += k * b[0];\n a[1] += k * b[1];\n return a;\n }\n var d3_transformIdentity = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 0\n };\n d3.interpolateTransform = d3_interpolateTransform;\n function d3_interpolateTransformPop(s) {\n return s.length ? s.pop() + \",\" : \"\";\n }\n function d3_interpolateTranslate(ta, tb, s, q) {\n if (ta[0] !== tb[0] || ta[1] !== tb[1]) {\n var i = s.push(\"translate(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: d3_interpolateNumber(ta[0], tb[0])\n }, {\n i: i - 2,\n x: d3_interpolateNumber(ta[1], tb[1])\n });\n } else if (tb[0] || tb[1]) {\n s.push(\"translate(\" + tb + \")\");\n }\n }\n function d3_interpolateRotate(ra, rb, s, q) {\n if (ra !== rb) {\n if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;\n q.push({\n i: s.push(d3_interpolateTransformPop(s) + \"rotate(\", null, \")\") - 2,\n x: d3_interpolateNumber(ra, rb)\n });\n } else if (rb) {\n s.push(d3_interpolateTransformPop(s) + \"rotate(\" + rb + \")\");\n }\n }\n function d3_interpolateSkew(wa, wb, s, q) {\n if (wa !== wb) {\n q.push({\n i: s.push(d3_interpolateTransformPop(s) + \"skewX(\", null, \")\") - 2,\n x: d3_interpolateNumber(wa, wb)\n });\n } else if (wb) {\n s.push(d3_interpolateTransformPop(s) + \"skewX(\" + wb + \")\");\n }\n }\n function d3_interpolateScale(ka, kb, s, q) {\n if (ka[0] !== kb[0] || ka[1] !== kb[1]) {\n var i = s.push(d3_interpolateTransformPop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: d3_interpolateNumber(ka[0], kb[0])\n }, {\n i: i - 2,\n x: d3_interpolateNumber(ka[1], kb[1])\n });\n } else if (kb[0] !== 1 || kb[1] !== 1) {\n s.push(d3_interpolateTransformPop(s) + \"scale(\" + kb + \")\");\n }\n }\n function d3_interpolateTransform(a, b) {\n var s = [], q = [];\n a = d3.transform(a), b = d3.transform(b);\n d3_interpolateTranslate(a.translate, b.translate, s, q);\n d3_interpolateRotate(a.rotate, b.rotate, s, q);\n d3_interpolateSkew(a.skew, b.skew, s, q);\n d3_interpolateScale(a.scale, b.scale, s, q);\n a = b = null;\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n }\n function d3_uninterpolateNumber(a, b) {\n b = (b -= a = +a) || 1 / b;\n return function(x) {\n return (x - a) / b;\n };\n }\n function d3_uninterpolateClamp(a, b) {\n b = (b -= a = +a) || 1 / b;\n return function(x) {\n return Math.max(0, Math.min(1, (x - a) / b));\n };\n }\n d3.layout = {};\n d3.layout.bundle = function() {\n return function(links) {\n var paths = [], i = -1, n = links.length;\n while (++i < n) paths.push(d3_layout_bundlePath(links[i]));\n return paths;\n };\n };\n function d3_layout_bundlePath(link) {\n var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];\n while (start !== lca) {\n start = start.parent;\n points.push(start);\n }\n var k = points.length;\n while (end !== lca) {\n points.splice(k, 0, end);\n end = end.parent;\n }\n return points;\n }\n function d3_layout_bundleAncestors(node) {\n var ancestors = [], parent = node.parent;\n while (parent != null) {\n ancestors.push(node);\n node = parent;\n parent = parent.parent;\n }\n ancestors.push(node);\n return ancestors;\n }\n function d3_layout_bundleLeastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;\n while (aNode === bNode) {\n sharedNode = aNode;\n aNode = aNodes.pop();\n bNode = bNodes.pop();\n }\n return sharedNode;\n }\n d3.layout.chord = function() {\n var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;\n function relayout() {\n var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;\n chords = [];\n groups = [];\n k = 0, i = -1;\n while (++i < n) {\n x = 0, j = -1;\n while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(d3.range(n));\n k += x;\n }\n if (sortGroups) {\n groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n }\n if (sortSubgroups) {\n subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n }\n k = (Ï„ - padding * n) / k;\n x = 0, i = -1;\n while (++i < n) {\n x0 = x, j = -1;\n while (++j < n) {\n var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;\n subgroups[di + \"-\" + dj] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += padding;\n }\n i = -1;\n while (++i < n) {\n j = i - 1;\n while (++j < n) {\n var source = subgroups[i + \"-\" + j], target = subgroups[j + \"-\" + i];\n if (source.value || target.value) {\n chords.push(source.value < target.value ? {\n source: target,\n target: source\n } : {\n source: source,\n target: target\n });\n }\n }\n }\n if (sortChords) resort();\n }\n function resort() {\n chords.sort(function(a, b) {\n return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);\n });\n }\n chord.matrix = function(x) {\n if (!arguments.length) return matrix;\n n = (matrix = x) && matrix.length;\n chords = groups = null;\n return chord;\n };\n chord.padding = function(x) {\n if (!arguments.length) return padding;\n padding = x;\n chords = groups = null;\n return chord;\n };\n chord.sortGroups = function(x) {\n if (!arguments.length) return sortGroups;\n sortGroups = x;\n chords = groups = null;\n return chord;\n };\n chord.sortSubgroups = function(x) {\n if (!arguments.length) return sortSubgroups;\n sortSubgroups = x;\n chords = null;\n return chord;\n };\n chord.sortChords = function(x) {\n if (!arguments.length) return sortChords;\n sortChords = x;\n if (chords) resort();\n return chord;\n };\n chord.chords = function() {\n if (!chords) relayout();\n return chords;\n };\n chord.groups = function() {\n if (!groups) relayout();\n return groups;\n };\n return chord;\n };\n d3.layout.force = function() {\n var force = {}, event = d3.dispatch(\"start\", \"tick\", \"end\"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;\n function repulse(node) {\n return function(quad, x1, _, x2) {\n if (quad.point !== node) {\n var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;\n if (dw * dw / theta2 < dn) {\n if (dn < chargeDistance2) {\n var k = quad.charge / dn;\n node.px -= dx * k;\n node.py -= dy * k;\n }\n return true;\n }\n if (quad.point && dn && dn < chargeDistance2) {\n var k = quad.pointCharge / dn;\n node.px -= dx * k;\n node.py -= dy * k;\n }\n }\n return !quad.charge;\n };\n }\n force.tick = function() {\n if ((alpha *= .99) < .005) {\n timer = null;\n event.end({\n type: \"end\",\n alpha: alpha = 0\n });\n return true;\n }\n var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;\n for (i = 0; i < m; ++i) {\n o = links[i];\n s = o.source;\n t = o.target;\n x = t.x - s.x;\n y = t.y - s.y;\n if (l = x * x + y * y) {\n l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;\n x *= l;\n y *= l;\n t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);\n t.y -= y * k;\n s.x += x * (k = 1 - k);\n s.y += y * k;\n }\n }\n if (k = alpha * gravity) {\n x = size[0] / 2;\n y = size[1] / 2;\n i = -1;\n if (k) while (++i < n) {\n o = nodes[i];\n o.x += (x - o.x) * k;\n o.y += (y - o.y) * k;\n }\n }\n if (charge) {\n d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);\n i = -1;\n while (++i < n) {\n if (!(o = nodes[i]).fixed) {\n q.visit(repulse(o));\n }\n }\n }\n i = -1;\n while (++i < n) {\n o = nodes[i];\n if (o.fixed) {\n o.x = o.px;\n o.y = o.py;\n } else {\n o.x -= (o.px - (o.px = o.x)) * friction;\n o.y -= (o.py - (o.py = o.y)) * friction;\n }\n }\n event.tick({\n type: \"tick\",\n alpha: alpha\n });\n };\n force.nodes = function(x) {\n if (!arguments.length) return nodes;\n nodes = x;\n return force;\n };\n force.links = function(x) {\n if (!arguments.length) return links;\n links = x;\n return force;\n };\n force.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return force;\n };\n force.linkDistance = function(x) {\n if (!arguments.length) return linkDistance;\n linkDistance = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.distance = force.linkDistance;\n force.linkStrength = function(x) {\n if (!arguments.length) return linkStrength;\n linkStrength = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.friction = function(x) {\n if (!arguments.length) return friction;\n friction = +x;\n return force;\n };\n force.charge = function(x) {\n if (!arguments.length) return charge;\n charge = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.chargeDistance = function(x) {\n if (!arguments.length) return Math.sqrt(chargeDistance2);\n chargeDistance2 = x * x;\n return force;\n };\n force.gravity = function(x) {\n if (!arguments.length) return gravity;\n gravity = +x;\n return force;\n };\n force.theta = function(x) {\n if (!arguments.length) return Math.sqrt(theta2);\n theta2 = x * x;\n return force;\n };\n force.alpha = function(x) {\n if (!arguments.length) return alpha;\n x = +x;\n if (alpha) {\n if (x > 0) {\n alpha = x;\n } else {\n timer.c = null, timer.t = NaN, timer = null;\n event.end({\n type: \"end\",\n alpha: alpha = 0\n });\n }\n } else if (x > 0) {\n event.start({\n type: \"start\",\n alpha: alpha = x\n });\n timer = d3_timer(force.tick);\n }\n return force;\n };\n force.start = function() {\n var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;\n for (i = 0; i < n; ++i) {\n (o = nodes[i]).index = i;\n o.weight = 0;\n }\n for (i = 0; i < m; ++i) {\n o = links[i];\n if (typeof o.source == \"number\") o.source = nodes[o.source];\n if (typeof o.target == \"number\") o.target = nodes[o.target];\n ++o.source.weight;\n ++o.target.weight;\n }\n for (i = 0; i < n; ++i) {\n o = nodes[i];\n if (isNaN(o.x)) o.x = position(\"x\", w);\n if (isNaN(o.y)) o.y = position(\"y\", h);\n if (isNaN(o.px)) o.px = o.x;\n if (isNaN(o.py)) o.py = o.y;\n }\n distances = [];\n if (typeof linkDistance === \"function\") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;\n strengths = [];\n if (typeof linkStrength === \"function\") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;\n charges = [];\n if (typeof charge === \"function\") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;\n function position(dimension, size) {\n if (!neighbors) {\n neighbors = new Array(n);\n for (j = 0; j < n; ++j) {\n neighbors[j] = [];\n }\n for (j = 0; j < m; ++j) {\n var o = links[j];\n neighbors[o.source.index].push(o.target);\n neighbors[o.target.index].push(o.source);\n }\n }\n var candidates = neighbors[i], j = -1, l = candidates.length, x;\n while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x;\n return Math.random() * size;\n }\n return force.resume();\n };\n force.resume = function() {\n return force.alpha(.1);\n };\n force.stop = function() {\n return force.alpha(0);\n };\n force.drag = function() {\n if (!drag) drag = d3.behavior.drag().origin(d3_identity).on(\"dragstart.force\", d3_layout_forceDragstart).on(\"drag.force\", dragmove).on(\"dragend.force\", d3_layout_forceDragend);\n if (!arguments.length) return drag;\n this.on(\"mouseover.force\", d3_layout_forceMouseover).on(\"mouseout.force\", d3_layout_forceMouseout).call(drag);\n };\n function dragmove(d) {\n d.px = d3.event.x, d.py = d3.event.y;\n force.resume();\n }\n return d3.rebind(force, event, \"on\");\n };\n function d3_layout_forceDragstart(d) {\n d.fixed |= 2;\n }\n function d3_layout_forceDragend(d) {\n d.fixed &= ~6;\n }\n function d3_layout_forceMouseover(d) {\n d.fixed |= 4;\n d.px = d.x, d.py = d.y;\n }\n function d3_layout_forceMouseout(d) {\n d.fixed &= ~4;\n }\n function d3_layout_forceAccumulate(quad, alpha, charges) {\n var cx = 0, cy = 0;\n quad.charge = 0;\n if (!quad.leaf) {\n var nodes = quad.nodes, n = nodes.length, i = -1, c;\n while (++i < n) {\n c = nodes[i];\n if (c == null) continue;\n d3_layout_forceAccumulate(c, alpha, charges);\n quad.charge += c.charge;\n cx += c.charge * c.cx;\n cy += c.charge * c.cy;\n }\n }\n if (quad.point) {\n if (!quad.leaf) {\n quad.point.x += Math.random() - .5;\n quad.point.y += Math.random() - .5;\n }\n var k = alpha * charges[quad.point.index];\n quad.charge += quad.pointCharge = k;\n cx += k * quad.point.x;\n cy += k * quad.point.y;\n }\n quad.cx = cx / quad.charge;\n quad.cy = cy / quad.charge;\n }\n var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;\n d3.layout.hierarchy = function() {\n var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;\n function hierarchy(root) {\n var stack = [ root ], nodes = [], node;\n root.depth = 0;\n while ((node = stack.pop()) != null) {\n nodes.push(node);\n if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {\n var n, childs, child;\n while (--n >= 0) {\n stack.push(child = childs[n]);\n child.parent = node;\n child.depth = node.depth + 1;\n }\n if (value) node.value = 0;\n node.children = childs;\n } else {\n if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;\n delete node.children;\n }\n }\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var childs, parent;\n if (sort && (childs = node.children)) childs.sort(sort);\n if (value && (parent = node.parent)) parent.value += node.value;\n });\n return nodes;\n }\n hierarchy.sort = function(x) {\n if (!arguments.length) return sort;\n sort = x;\n return hierarchy;\n };\n hierarchy.children = function(x) {\n if (!arguments.length) return children;\n children = x;\n return hierarchy;\n };\n hierarchy.value = function(x) {\n if (!arguments.length) return value;\n value = x;\n return hierarchy;\n };\n hierarchy.revalue = function(root) {\n if (value) {\n d3_layout_hierarchyVisitBefore(root, function(node) {\n if (node.children) node.value = 0;\n });\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var parent;\n if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;\n if (parent = node.parent) parent.value += node.value;\n });\n }\n return root;\n };\n return hierarchy;\n };\n function d3_layout_hierarchyRebind(object, hierarchy) {\n d3.rebind(object, hierarchy, \"sort\", \"children\", \"value\");\n object.nodes = object;\n object.links = d3_layout_hierarchyLinks;\n return object;\n }\n function d3_layout_hierarchyVisitBefore(node, callback) {\n var nodes = [ node ];\n while ((node = nodes.pop()) != null) {\n callback(node);\n if ((children = node.children) && (n = children.length)) {\n var n, children;\n while (--n >= 0) nodes.push(children[n]);\n }\n }\n }\n function d3_layout_hierarchyVisitAfter(node, callback) {\n var nodes = [ node ], nodes2 = [];\n while ((node = nodes.pop()) != null) {\n nodes2.push(node);\n if ((children = node.children) && (n = children.length)) {\n var i = -1, n, children;\n while (++i < n) nodes.push(children[i]);\n }\n }\n while ((node = nodes2.pop()) != null) {\n callback(node);\n }\n }\n function d3_layout_hierarchyChildren(d) {\n return d.children;\n }\n function d3_layout_hierarchyValue(d) {\n return d.value;\n }\n function d3_layout_hierarchySort(a, b) {\n return b.value - a.value;\n }\n function d3_layout_hierarchyLinks(nodes) {\n return d3.merge(nodes.map(function(parent) {\n return (parent.children || []).map(function(child) {\n return {\n source: parent,\n target: child\n };\n });\n }));\n }\n d3.layout.partition = function() {\n var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];\n function position(node, x, dx, dy) {\n var children = node.children;\n node.x = x;\n node.y = node.depth * dy;\n node.dx = dx;\n node.dy = dy;\n if (children && (n = children.length)) {\n var i = -1, n, c, d;\n dx = node.value ? dx / node.value : 0;\n while (++i < n) {\n position(c = children[i], x, d = c.value * dx, dy);\n x += d;\n }\n }\n }\n function depth(node) {\n var children = node.children, d = 0;\n if (children && (n = children.length)) {\n var i = -1, n;\n while (++i < n) d = Math.max(d, depth(children[i]));\n }\n return 1 + d;\n }\n function partition(d, i) {\n var nodes = hierarchy.call(this, d, i);\n position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));\n return nodes;\n }\n partition.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return partition;\n };\n return d3_layout_hierarchyRebind(partition, hierarchy);\n };\n d3.layout.pie = function() {\n var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = Ï„, padAngle = 0;\n function pie(data) {\n var n = data.length, values = data.map(function(d, i) {\n return +value.call(pie, d, i);\n }), a = +(typeof startAngle === \"function\" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === \"function\" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === \"function\" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;\n if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {\n return values[j] - values[i];\n } : function(i, j) {\n return sort(data[i], data[j]);\n });\n index.forEach(function(i) {\n arcs[i] = {\n data: data[i],\n value: v = values[i],\n startAngle: a,\n endAngle: a += v * k + pa,\n padAngle: p\n };\n });\n return arcs;\n }\n pie.value = function(_) {\n if (!arguments.length) return value;\n value = _;\n return pie;\n };\n pie.sort = function(_) {\n if (!arguments.length) return sort;\n sort = _;\n return pie;\n };\n pie.startAngle = function(_) {\n if (!arguments.length) return startAngle;\n startAngle = _;\n return pie;\n };\n pie.endAngle = function(_) {\n if (!arguments.length) return endAngle;\n endAngle = _;\n return pie;\n };\n pie.padAngle = function(_) {\n if (!arguments.length) return padAngle;\n padAngle = _;\n return pie;\n };\n return pie;\n };\n var d3_layout_pieSortByValue = {};\n d3.layout.stack = function() {\n var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;\n function stack(data, index) {\n if (!(n = data.length)) return data;\n var series = data.map(function(d, i) {\n return values.call(stack, d, i);\n });\n var points = series.map(function(d) {\n return d.map(function(v, i) {\n return [ x.call(stack, v, i), y.call(stack, v, i) ];\n });\n });\n var orders = order.call(stack, points, index);\n series = d3.permute(series, orders);\n points = d3.permute(points, orders);\n var offsets = offset.call(stack, points, index);\n var m = series[0].length, n, i, j, o;\n for (j = 0; j < m; ++j) {\n out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);\n for (i = 1; i < n; ++i) {\n out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);\n }\n }\n return data;\n }\n stack.values = function(x) {\n if (!arguments.length) return values;\n values = x;\n return stack;\n };\n stack.order = function(x) {\n if (!arguments.length) return order;\n order = typeof x === \"function\" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;\n return stack;\n };\n stack.offset = function(x) {\n if (!arguments.length) return offset;\n offset = typeof x === \"function\" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;\n return stack;\n };\n stack.x = function(z) {\n if (!arguments.length) return x;\n x = z;\n return stack;\n };\n stack.y = function(z) {\n if (!arguments.length) return y;\n y = z;\n return stack;\n };\n stack.out = function(z) {\n if (!arguments.length) return out;\n out = z;\n return stack;\n };\n return stack;\n };\n function d3_layout_stackX(d) {\n return d.x;\n }\n function d3_layout_stackY(d) {\n return d.y;\n }\n function d3_layout_stackOut(d, y0, y) {\n d.y0 = y0;\n d.y = y;\n }\n var d3_layout_stackOrders = d3.map({\n \"inside-out\": function(data) {\n var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {\n return max[a] - max[b];\n }), top = 0, bottom = 0, tops = [], bottoms = [];\n for (i = 0; i < n; ++i) {\n j = index[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n return bottoms.reverse().concat(tops);\n },\n reverse: function(data) {\n return d3.range(data.length).reverse();\n },\n \"default\": d3_layout_stackOrderDefault\n });\n var d3_layout_stackOffsets = d3.map({\n silhouette: function(data) {\n var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];\n for (j = 0; j < m; ++j) {\n for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n if (o > max) max = o;\n sums.push(o);\n }\n for (j = 0; j < m; ++j) {\n y0[j] = (max - sums[j]) / 2;\n }\n return y0;\n },\n wiggle: function(data) {\n var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];\n y0[0] = o = o0 = 0;\n for (j = 1; j < m; ++j) {\n for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];\n for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {\n for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {\n s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;\n }\n s2 += s3 * data[i][j][1];\n }\n y0[j] = o -= s1 ? s2 / s1 * dx : 0;\n if (o < o0) o0 = o;\n }\n for (j = 0; j < m; ++j) y0[j] -= o0;\n return y0;\n },\n expand: function(data) {\n var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];\n for (j = 0; j < m; ++j) {\n for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;\n }\n for (j = 0; j < m; ++j) y0[j] = 0;\n return y0;\n },\n zero: d3_layout_stackOffsetZero\n });\n function d3_layout_stackOrderDefault(data) {\n return d3.range(data.length);\n }\n function d3_layout_stackOffsetZero(data) {\n var j = -1, m = data[0].length, y0 = [];\n while (++j < m) y0[j] = 0;\n return y0;\n }\n function d3_layout_stackMaxIndex(array) {\n var i = 1, j = 0, v = array[0][1], k, n = array.length;\n for (;i < n; ++i) {\n if ((k = array[i][1]) > v) {\n j = i;\n v = k;\n }\n }\n return j;\n }\n function d3_layout_stackReduceSum(d) {\n return d.reduce(d3_layout_stackSum, 0);\n }\n function d3_layout_stackSum(p, d) {\n return p + d[1];\n }\n d3.layout.histogram = function() {\n var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;\n function histogram(data, i) {\n var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;\n while (++i < m) {\n bin = bins[i] = [];\n bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);\n bin.y = 0;\n }\n if (m > 0) {\n i = -1;\n while (++i < n) {\n x = values[i];\n if (x >= range[0] && x <= range[1]) {\n bin = bins[d3.bisect(thresholds, x, 1, m) - 1];\n bin.y += k;\n bin.push(data[i]);\n }\n }\n }\n return bins;\n }\n histogram.value = function(x) {\n if (!arguments.length) return valuer;\n valuer = x;\n return histogram;\n };\n histogram.range = function(x) {\n if (!arguments.length) return ranger;\n ranger = d3_functor(x);\n return histogram;\n };\n histogram.bins = function(x) {\n if (!arguments.length) return binner;\n binner = typeof x === \"number\" ? function(range) {\n return d3_layout_histogramBinFixed(range, x);\n } : d3_functor(x);\n return histogram;\n };\n histogram.frequency = function(x) {\n if (!arguments.length) return frequency;\n frequency = !!x;\n return histogram;\n };\n return histogram;\n };\n function d3_layout_histogramBinSturges(range, values) {\n return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));\n }\n function d3_layout_histogramBinFixed(range, n) {\n var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];\n while (++x <= n) f[x] = m * x + b;\n return f;\n }\n function d3_layout_histogramRange(values) {\n return [ d3.min(values), d3.max(values) ];\n }\n d3.layout.pack = function() {\n var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;\n function pack(d, i) {\n var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === \"function\" ? radius : function() {\n return radius;\n };\n root.x = root.y = 0;\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r = +r(d.value);\n });\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n if (padding) {\n var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r += dr;\n });\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r -= dr;\n });\n }\n d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));\n return nodes;\n }\n pack.size = function(_) {\n if (!arguments.length) return size;\n size = _;\n return pack;\n };\n pack.radius = function(_) {\n if (!arguments.length) return radius;\n radius = _ == null || typeof _ === \"function\" ? _ : +_;\n return pack;\n };\n pack.padding = function(_) {\n if (!arguments.length) return padding;\n padding = +_;\n return pack;\n };\n return d3_layout_hierarchyRebind(pack, hierarchy);\n };\n function d3_layout_packSort(a, b) {\n return a.value - b.value;\n }\n function d3_layout_packInsert(a, b) {\n var c = a._pack_next;\n a._pack_next = b;\n b._pack_prev = a;\n b._pack_next = c;\n c._pack_prev = b;\n }\n function d3_layout_packSplice(a, b) {\n a._pack_next = b;\n b._pack_prev = a;\n }\n function d3_layout_packIntersects(a, b) {\n var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;\n return .999 * dr * dr > dx * dx + dy * dy;\n }\n function d3_layout_packSiblings(node) {\n if (!(nodes = node.children) || !(n = nodes.length)) return;\n var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;\n function bound(node) {\n xMin = Math.min(node.x - node.r, xMin);\n xMax = Math.max(node.x + node.r, xMax);\n yMin = Math.min(node.y - node.r, yMin);\n yMax = Math.max(node.y + node.r, yMax);\n }\n nodes.forEach(d3_layout_packLink);\n a = nodes[0];\n a.x = -a.r;\n a.y = 0;\n bound(a);\n if (n > 1) {\n b = nodes[1];\n b.x = b.r;\n b.y = 0;\n bound(b);\n if (n > 2) {\n c = nodes[2];\n d3_layout_packPlace(a, b, c);\n bound(c);\n d3_layout_packInsert(a, c);\n a._pack_prev = c;\n d3_layout_packInsert(c, b);\n b = a._pack_next;\n for (i = 3; i < n; i++) {\n d3_layout_packPlace(a, b, c = nodes[i]);\n var isect = 0, s1 = 1, s2 = 1;\n for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {\n if (d3_layout_packIntersects(j, c)) {\n isect = 1;\n break;\n }\n }\n if (isect == 1) {\n for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {\n if (d3_layout_packIntersects(k, c)) {\n break;\n }\n }\n }\n if (isect) {\n if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);\n i--;\n } else {\n d3_layout_packInsert(a, c);\n b = c;\n bound(c);\n }\n }\n }\n }\n var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;\n for (i = 0; i < n; i++) {\n c = nodes[i];\n c.x -= cx;\n c.y -= cy;\n cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));\n }\n node.r = cr;\n nodes.forEach(d3_layout_packUnlink);\n }\n function d3_layout_packLink(node) {\n node._pack_next = node._pack_prev = node;\n }\n function d3_layout_packUnlink(node) {\n delete node._pack_next;\n delete node._pack_prev;\n }\n function d3_layout_packTransform(node, x, y, k) {\n var children = node.children;\n node.x = x += k * node.x;\n node.y = y += k * node.y;\n node.r *= k;\n if (children) {\n var i = -1, n = children.length;\n while (++i < n) d3_layout_packTransform(children[i], x, y, k);\n }\n }\n function d3_layout_packPlace(a, b, c) {\n var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;\n if (db && (dx || dy)) {\n var da = b.r + c.r, dc = dx * dx + dy * dy;\n da *= da;\n db *= db;\n var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n c.x = a.x + x * dx + y * dy;\n c.y = a.y + x * dy - y * dx;\n } else {\n c.x = a.x + db;\n c.y = a.y;\n }\n }\n d3.layout.tree = function() {\n var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null;\n function tree(d, i) {\n var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);\n d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;\n d3_layout_hierarchyVisitBefore(root1, secondWalk);\n if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else {\n var left = root0, right = root0, bottom = root0;\n d3_layout_hierarchyVisitBefore(root0, function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);\n d3_layout_hierarchyVisitBefore(root0, function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n return nodes;\n }\n function wrapTree(root0) {\n var root1 = {\n A: null,\n children: [ root0 ]\n }, queue = [ root1 ], node1;\n while ((node1 = queue.pop()) != null) {\n for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {\n queue.push((children[i] = child = {\n _: children[i],\n parent: node1,\n children: (child = children[i].children) && child.slice() || [],\n A: null,\n a: null,\n z: 0,\n m: 0,\n c: 0,\n s: 0,\n t: null,\n i: i\n }).a = child);\n }\n }\n return root1.children[0];\n }\n function firstWalk(v) {\n var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;\n if (children.length) {\n d3_layout_treeShift(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;\n while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {\n vom = d3_layout_treeLeft(vom);\n vop = d3_layout_treeRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !d3_layout_treeRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !d3_layout_treeLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n function sizeNode(node) {\n node.x *= size[0];\n node.y = node.depth * size[1];\n }\n tree.separation = function(x) {\n if (!arguments.length) return separation;\n separation = x;\n return tree;\n };\n tree.size = function(x) {\n if (!arguments.length) return nodeSize ? null : size;\n nodeSize = (size = x) == null ? sizeNode : null;\n return tree;\n };\n tree.nodeSize = function(x) {\n if (!arguments.length) return nodeSize ? size : null;\n nodeSize = (size = x) == null ? null : sizeNode;\n return tree;\n };\n return d3_layout_hierarchyRebind(tree, hierarchy);\n };\n function d3_layout_treeSeparation(a, b) {\n return a.parent == b.parent ? 1 : 2;\n }\n function d3_layout_treeLeft(v) {\n var children = v.children;\n return children.length ? children[0] : v.t;\n }\n function d3_layout_treeRight(v) {\n var children = v.children, n;\n return (n = children.length) ? children[n - 1] : v.t;\n }\n function d3_layout_treeMove(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n }\n function d3_layout_treeShift(v) {\n var shift = 0, change = 0, children = v.children, i = children.length, w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n }\n function d3_layout_treeAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n }\n d3.layout.cluster = function() {\n var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;\n function cluster(d, i) {\n var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var children = node.children;\n if (children && children.length) {\n node.x = d3_layout_clusterX(children);\n node.y = d3_layout_clusterY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;\n d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {\n node.x = (node.x - root.x) * size[0];\n node.y = (root.y - node.y) * size[1];\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * size[0];\n node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];\n });\n return nodes;\n }\n cluster.separation = function(x) {\n if (!arguments.length) return separation;\n separation = x;\n return cluster;\n };\n cluster.size = function(x) {\n if (!arguments.length) return nodeSize ? null : size;\n nodeSize = (size = x) == null;\n return cluster;\n };\n cluster.nodeSize = function(x) {\n if (!arguments.length) return nodeSize ? size : null;\n nodeSize = (size = x) != null;\n return cluster;\n };\n return d3_layout_hierarchyRebind(cluster, hierarchy);\n };\n function d3_layout_clusterY(children) {\n return 1 + d3.max(children, function(child) {\n return child.y;\n });\n }\n function d3_layout_clusterX(children) {\n return children.reduce(function(x, child) {\n return x + child.x;\n }, 0) / children.length;\n }\n function d3_layout_clusterLeft(node) {\n var children = node.children;\n return children && children.length ? d3_layout_clusterLeft(children[0]) : node;\n }\n function d3_layout_clusterRight(node) {\n var children = node.children, n;\n return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;\n }\n d3.layout.treemap = function() {\n var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = \"squarify\", ratio = .5 * (1 + Math.sqrt(5));\n function scale(children, k) {\n var i = -1, n = children.length, child, area;\n while (++i < n) {\n area = (child = children[i]).value * (k < 0 ? 0 : k);\n child.area = isNaN(area) || area <= 0 ? 0 : area;\n }\n }\n function squarify(node) {\n var children = node.children;\n if (children && children.length) {\n var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === \"slice\" ? rect.dx : mode === \"dice\" ? rect.dy : mode === \"slice-dice\" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;\n scale(remaining, rect.dx * rect.dy / node.value);\n row.area = 0;\n while ((n = remaining.length) > 0) {\n row.push(child = remaining[n - 1]);\n row.area += child.area;\n if (mode !== \"squarify\" || (score = worst(row, u)) <= best) {\n remaining.pop();\n best = score;\n } else {\n row.area -= row.pop().area;\n position(row, u, rect, false);\n u = Math.min(rect.dx, rect.dy);\n row.length = row.area = 0;\n best = Infinity;\n }\n }\n if (row.length) {\n position(row, u, rect, true);\n row.length = row.area = 0;\n }\n children.forEach(squarify);\n }\n }\n function stickify(node) {\n var children = node.children;\n if (children && children.length) {\n var rect = pad(node), remaining = children.slice(), child, row = [];\n scale(remaining, rect.dx * rect.dy / node.value);\n row.area = 0;\n while (child = remaining.pop()) {\n row.push(child);\n row.area += child.area;\n if (child.z != null) {\n position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);\n row.length = row.area = 0;\n }\n }\n children.forEach(stickify);\n }\n }\n function worst(row, u) {\n var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;\n while (++i < n) {\n if (!(r = row[i].area)) continue;\n if (r < rmin) rmin = r;\n if (r > rmax) rmax = r;\n }\n s *= s;\n u *= u;\n return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;\n }\n function position(row, u, rect, flush) {\n var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;\n if (u == rect.dx) {\n if (flush || v > rect.dy) v = rect.dy;\n while (++i < n) {\n o = row[i];\n o.x = x;\n o.y = y;\n o.dy = v;\n x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);\n }\n o.z = true;\n o.dx += rect.x + rect.dx - x;\n rect.y += v;\n rect.dy -= v;\n } else {\n if (flush || v > rect.dx) v = rect.dx;\n while (++i < n) {\n o = row[i];\n o.x = x;\n o.y = y;\n o.dx = v;\n y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);\n }\n o.z = false;\n o.dy += rect.y + rect.dy - y;\n rect.x += v;\n rect.dx -= v;\n }\n }\n function treemap(d) {\n var nodes = stickies || hierarchy(d), root = nodes[0];\n root.x = root.y = 0;\n if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0;\n if (stickies) hierarchy.revalue(root);\n scale([ root ], root.dx * root.dy / root.value);\n (stickies ? stickify : squarify)(root);\n if (sticky) stickies = nodes;\n return nodes;\n }\n treemap.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return treemap;\n };\n treemap.padding = function(x) {\n if (!arguments.length) return padding;\n function padFunction(node) {\n var p = x.call(treemap, node, node.depth);\n return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === \"number\" ? [ p, p, p, p ] : p);\n }\n function padConstant(node) {\n return d3_layout_treemapPad(node, x);\n }\n var type;\n pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === \"function\" ? padFunction : type === \"number\" ? (x = [ x, x, x, x ], \n padConstant) : padConstant;\n return treemap;\n };\n treemap.round = function(x) {\n if (!arguments.length) return round != Number;\n round = x ? Math.round : Number;\n return treemap;\n };\n treemap.sticky = function(x) {\n if (!arguments.length) return sticky;\n sticky = x;\n stickies = null;\n return treemap;\n };\n treemap.ratio = function(x) {\n if (!arguments.length) return ratio;\n ratio = x;\n return treemap;\n };\n treemap.mode = function(x) {\n if (!arguments.length) return mode;\n mode = x + \"\";\n return treemap;\n };\n return d3_layout_hierarchyRebind(treemap, hierarchy);\n };\n function d3_layout_treemapPadNull(node) {\n return {\n x: node.x,\n y: node.y,\n dx: node.dx,\n dy: node.dy\n };\n }\n function d3_layout_treemapPad(node, padding) {\n var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];\n if (dx < 0) {\n x += dx / 2;\n dx = 0;\n }\n if (dy < 0) {\n y += dy / 2;\n dy = 0;\n }\n return {\n x: x,\n y: y,\n dx: dx,\n dy: dy\n };\n }\n d3.random = {\n normal: function(µ, σ) {\n var n = arguments.length;\n if (n < 2) σ = 1;\n if (n < 1) µ = 0;\n return function() {\n var x, y, r;\n do {\n x = Math.random() * 2 - 1;\n y = Math.random() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);\n };\n },\n logNormal: function() {\n var random = d3.random.normal.apply(d3, arguments);\n return function() {\n return Math.exp(random());\n };\n },\n bates: function(m) {\n var random = d3.random.irwinHall(m);\n return function() {\n return random() / m;\n };\n },\n irwinHall: function(m) {\n return function() {\n for (var s = 0, j = 0; j < m; j++) s += Math.random();\n return s;\n };\n }\n };\n d3.scale = {};\n function d3_scaleExtent(domain) {\n var start = domain[0], stop = domain[domain.length - 1];\n return start < stop ? [ start, stop ] : [ stop, start ];\n }\n function d3_scaleRange(scale) {\n return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());\n }\n function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {\n var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);\n return function(x) {\n return i(u(x));\n };\n }\n function d3_scale_nice(domain, nice) {\n var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;\n if (x1 < x0) {\n dx = i0, i0 = i1, i1 = dx;\n dx = x0, x0 = x1, x1 = dx;\n }\n domain[i0] = nice.floor(x0);\n domain[i1] = nice.ceil(x1);\n return domain;\n }\n function d3_scale_niceStep(step) {\n return step ? {\n floor: function(x) {\n return Math.floor(x / step) * step;\n },\n ceil: function(x) {\n return Math.ceil(x / step) * step;\n }\n } : d3_scale_niceIdentity;\n }\n var d3_scale_niceIdentity = {\n floor: d3_identity,\n ceil: d3_identity\n };\n function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {\n var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;\n if (domain[k] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n while (++j <= k) {\n u.push(uninterpolate(domain[j - 1], domain[j]));\n i.push(interpolate(range[j - 1], range[j]));\n }\n return function(x) {\n var j = d3.bisect(domain, x, 1, k) - 1;\n return i[j](u[j](x));\n };\n }\n d3.scale.linear = function() {\n return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);\n };\n function d3_scale_linear(domain, range, interpolate, clamp) {\n var output, input;\n function rescale() {\n var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;\n output = linear(domain, range, uninterpolate, interpolate);\n input = linear(range, domain, uninterpolate, d3_interpolate);\n return scale;\n }\n function scale(x) {\n return output(x);\n }\n scale.invert = function(y) {\n return input(y);\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(Number);\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.rangeRound = function(x) {\n return scale.range(x).interpolate(d3_interpolateRound);\n };\n scale.clamp = function(x) {\n if (!arguments.length) return clamp;\n clamp = x;\n return rescale();\n };\n scale.interpolate = function(x) {\n if (!arguments.length) return interpolate;\n interpolate = x;\n return rescale();\n };\n scale.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n scale.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n scale.nice = function(m) {\n d3_scale_linearNice(domain, m);\n return rescale();\n };\n scale.copy = function() {\n return d3_scale_linear(domain, range, interpolate, clamp);\n };\n return rescale();\n }\n function d3_scale_linearRebind(scale, linear) {\n return d3.rebind(scale, linear, \"range\", \"rangeRound\", \"interpolate\", \"clamp\");\n }\n function d3_scale_linearNice(domain, m) {\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n return domain;\n }\n function d3_scale_linearTickRange(domain, m) {\n if (m == null) m = 10;\n var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;\n if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;\n extent[0] = Math.ceil(extent[0] / step) * step;\n extent[1] = Math.floor(extent[1] / step) * step + step * .5;\n extent[2] = step;\n return extent;\n }\n function d3_scale_linearTicks(domain, m) {\n return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));\n }\n function d3_scale_linearTickFormat(domain, m, format) {\n var range = d3_scale_linearTickRange(domain, m);\n if (format) {\n var match = d3_format_re.exec(format);\n match.shift();\n if (match[8] === \"s\") {\n var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1])));\n if (!match[7]) match[7] = \".\" + d3_scale_linearPrecision(prefix.scale(range[2]));\n match[8] = \"f\";\n format = d3.format(match.join(\"\"));\n return function(d) {\n return format(prefix.scale(d)) + prefix.symbol;\n };\n }\n if (!match[7]) match[7] = \".\" + d3_scale_linearFormatPrecision(match[8], range);\n format = match.join(\"\");\n } else {\n format = \",.\" + d3_scale_linearPrecision(range[2]) + \"f\";\n }\n return d3.format(format);\n }\n var d3_scale_linearFormatSignificant = {\n s: 1,\n g: 1,\n p: 1,\n r: 1,\n e: 1\n };\n function d3_scale_linearPrecision(value) {\n return -Math.floor(Math.log(value) / Math.LN10 + .01);\n }\n function d3_scale_linearFormatPrecision(type, range) {\n var p = d3_scale_linearPrecision(range[2]);\n return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== \"e\") : p - (type === \"%\") * 2;\n }\n d3.scale.log = function() {\n return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);\n };\n function d3_scale_log(linear, base, positive, domain) {\n function log(x) {\n return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);\n }\n function pow(x) {\n return positive ? Math.pow(base, x) : -Math.pow(base, -x);\n }\n function scale(x) {\n return linear(log(x));\n }\n scale.invert = function(x) {\n return pow(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n positive = x[0] >= 0;\n linear.domain((domain = x.map(Number)).map(log));\n return scale;\n };\n scale.base = function(_) {\n if (!arguments.length) return base;\n base = +_;\n linear.domain(domain.map(log));\n return scale;\n };\n scale.nice = function() {\n var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);\n linear.domain(niced);\n domain = niced.map(pow);\n return scale;\n };\n scale.ticks = function() {\n var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;\n if (isFinite(j - i)) {\n if (positive) {\n for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);\n ticks.push(pow(i));\n } else {\n ticks.push(pow(i));\n for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);\n }\n for (i = 0; ticks[i] < u; i++) {}\n for (j = ticks.length; ticks[j - 1] > v; j--) {}\n ticks = ticks.slice(i, j);\n }\n return ticks;\n };\n scale.tickFormat = function(n, format) {\n if (!arguments.length) return d3_scale_logFormat;\n if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== \"function\") format = d3.format(format);\n var k = Math.max(1, base * n / scale.ticks().length);\n return function(d) {\n var i = d / pow(Math.round(log(d)));\n if (i * base < base - .5) i *= base;\n return i <= k ? format(d) : \"\";\n };\n };\n scale.copy = function() {\n return d3_scale_log(linear.copy(), base, positive, domain);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n var d3_scale_logFormat = d3.format(\".0e\"), d3_scale_logNiceNegative = {\n floor: function(x) {\n return -Math.ceil(-x);\n },\n ceil: function(x) {\n return -Math.floor(-x);\n }\n };\n d3.scale.pow = function() {\n return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);\n };\n function d3_scale_pow(linear, exponent, domain) {\n var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);\n function scale(x) {\n return linear(powp(x));\n }\n scale.invert = function(x) {\n return powb(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n linear.domain((domain = x.map(Number)).map(powp));\n return scale;\n };\n scale.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n scale.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n scale.nice = function(m) {\n return scale.domain(d3_scale_linearNice(domain, m));\n };\n scale.exponent = function(x) {\n if (!arguments.length) return exponent;\n powp = d3_scale_powPow(exponent = x);\n powb = d3_scale_powPow(1 / exponent);\n linear.domain(domain.map(powp));\n return scale;\n };\n scale.copy = function() {\n return d3_scale_pow(linear.copy(), exponent, domain);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n function d3_scale_powPow(e) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);\n };\n }\n d3.scale.sqrt = function() {\n return d3.scale.pow().exponent(.5);\n };\n d3.scale.ordinal = function() {\n return d3_scale_ordinal([], {\n t: \"range\",\n a: [ [] ]\n });\n };\n function d3_scale_ordinal(domain, ranger) {\n var index, range, rangeBand;\n function scale(x) {\n return range[((index.get(x) || (ranger.t === \"range\" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];\n }\n function steps(start, step) {\n return d3.range(domain.length).map(function(i) {\n return start + step * i;\n });\n }\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = [];\n index = new d3_Map();\n var i = -1, n = x.length, xi;\n while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));\n return scale[ranger.t].apply(scale, ranger.a);\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n rangeBand = 0;\n ranger = {\n t: \"range\",\n a: arguments\n };\n return scale;\n };\n scale.rangePoints = function(x, padding) {\n if (arguments.length < 2) padding = 0;\n var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2, \n 0) : (stop - start) / (domain.length - 1 + padding);\n range = steps(start + step * padding / 2, step);\n rangeBand = 0;\n ranger = {\n t: \"rangePoints\",\n a: arguments\n };\n return scale;\n };\n scale.rangeRoundPoints = function(x, padding) {\n if (arguments.length < 2) padding = 0;\n var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), \n 0) : (stop - start) / (domain.length - 1 + padding) | 0;\n range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);\n rangeBand = 0;\n ranger = {\n t: \"rangeRoundPoints\",\n a: arguments\n };\n return scale;\n };\n scale.rangeBands = function(x, padding, outerPadding) {\n if (arguments.length < 2) padding = 0;\n if (arguments.length < 3) outerPadding = padding;\n var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);\n range = steps(start + step * outerPadding, step);\n if (reverse) range.reverse();\n rangeBand = step * (1 - padding);\n ranger = {\n t: \"rangeBands\",\n a: arguments\n };\n return scale;\n };\n scale.rangeRoundBands = function(x, padding, outerPadding) {\n if (arguments.length < 2) padding = 0;\n if (arguments.length < 3) outerPadding = padding;\n var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));\n range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);\n if (reverse) range.reverse();\n rangeBand = Math.round(step * (1 - padding));\n ranger = {\n t: \"rangeRoundBands\",\n a: arguments\n };\n return scale;\n };\n scale.rangeBand = function() {\n return rangeBand;\n };\n scale.rangeExtent = function() {\n return d3_scaleExtent(ranger.a[0]);\n };\n scale.copy = function() {\n return d3_scale_ordinal(domain, ranger);\n };\n return scale.domain(domain);\n }\n d3.scale.category10 = function() {\n return d3.scale.ordinal().range(d3_category10);\n };\n d3.scale.category20 = function() {\n return d3.scale.ordinal().range(d3_category20);\n };\n d3.scale.category20b = function() {\n return d3.scale.ordinal().range(d3_category20b);\n };\n d3.scale.category20c = function() {\n return d3.scale.ordinal().range(d3_category20c);\n };\n var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);\n var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);\n var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);\n var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);\n d3.scale.quantile = function() {\n return d3_scale_quantile([], []);\n };\n function d3_scale_quantile(domain, range) {\n var thresholds;\n function rescale() {\n var k = 0, q = range.length;\n thresholds = [];\n while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);\n return scale;\n }\n function scale(x) {\n if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];\n }\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.quantiles = function() {\n return thresholds;\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];\n };\n scale.copy = function() {\n return d3_scale_quantile(domain, range);\n };\n return rescale();\n }\n d3.scale.quantize = function() {\n return d3_scale_quantize(0, 1, [ 0, 1 ]);\n };\n function d3_scale_quantize(x0, x1, range) {\n var kx, i;\n function scale(x) {\n return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];\n }\n function rescale() {\n kx = range.length / (x1 - x0);\n i = range.length - 1;\n return scale;\n }\n scale.domain = function(x) {\n if (!arguments.length) return [ x0, x1 ];\n x0 = +x[0];\n x1 = +x[x.length - 1];\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n y = y < 0 ? NaN : y / kx + x0;\n return [ y, y + 1 / kx ];\n };\n scale.copy = function() {\n return d3_scale_quantize(x0, x1, range);\n };\n return rescale();\n }\n d3.scale.threshold = function() {\n return d3_scale_threshold([ .5 ], [ 0, 1 ]);\n };\n function d3_scale_threshold(domain, range) {\n function scale(x) {\n if (x <= x) return range[d3.bisect(domain, x)];\n }\n scale.domain = function(_) {\n if (!arguments.length) return domain;\n domain = _;\n return scale;\n };\n scale.range = function(_) {\n if (!arguments.length) return range;\n range = _;\n return scale;\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n return [ domain[y - 1], domain[y] ];\n };\n scale.copy = function() {\n return d3_scale_threshold(domain, range);\n };\n return scale;\n }\n d3.scale.identity = function() {\n return d3_scale_identity([ 0, 1 ]);\n };\n function d3_scale_identity(domain) {\n function identity(x) {\n return +x;\n }\n identity.invert = identity;\n identity.domain = identity.range = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(identity);\n return identity;\n };\n identity.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n identity.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n identity.copy = function() {\n return d3_scale_identity(domain);\n };\n return identity;\n }\n d3.svg = {};\n function d3_zero() {\n return 0;\n }\n d3.svg.arc = function() {\n var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;\n function arc() {\n var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfÏ€, a1 = endAngle.apply(this, arguments) - halfÏ€, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;\n if (r1 < r0) rc = r1, r1 = r0, r0 = rc;\n if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : \"\") + \"Z\";\n var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];\n if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {\n rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);\n if (!cw) p1 *= -1;\n if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));\n if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));\n }\n if (r1) {\n x0 = r1 * Math.cos(a0 + p1);\n y0 = r1 * Math.sin(a0 + p1);\n x1 = r1 * Math.cos(a1 - p1);\n y1 = r1 * Math.sin(a1 - p1);\n var l1 = Math.abs(a1 - a0 - 2 * p1) <= Ï€ ? 0 : 1;\n if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {\n var h1 = (a0 + a1) / 2;\n x0 = r1 * Math.cos(h1);\n y0 = r1 * Math.sin(h1);\n x1 = y1 = null;\n }\n } else {\n x0 = y0 = 0;\n }\n if (r0) {\n x2 = r0 * Math.cos(a1 - p0);\n y2 = r0 * Math.sin(a1 - p0);\n x3 = r0 * Math.cos(a0 + p0);\n y3 = r0 * Math.sin(a0 + p0);\n var l0 = Math.abs(a0 - a1 + 2 * p0) <= Ï€ ? 0 : 1;\n if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {\n var h0 = (a0 + a1) / 2;\n x2 = r0 * Math.cos(h0);\n y2 = r0 * Math.sin(h0);\n x3 = y3 = null;\n }\n } else {\n x2 = y2 = 0;\n }\n if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {\n cr = r0 < r1 ^ cw ? 0 : 1;\n var rc1 = rc, rc0 = rc;\n if (da < Ï€) {\n var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n }\n if (x1 != null) {\n var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);\n if (rc === rc1) {\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t30[1], \"A\", r1, \",\", r1, \" 0 \", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), \",\", cw, \" \", t12[1], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t12[0]);\n } else {\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 1,\", cr, \" \", t12[0]);\n }\n } else {\n path.push(\"M\", x0, \",\", y0);\n }\n if (x3 != null) {\n var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);\n if (rc === rc0) {\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t21[1], \"A\", r0, \",\", r0, \" 0 \", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), \",\", 1 - cw, \" \", t03[1], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n } else {\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n }\n } else {\n path.push(\"L\", x2, \",\", y2);\n }\n } else {\n path.push(\"M\", x0, \",\", y0);\n if (x1 != null) path.push(\"A\", r1, \",\", r1, \" 0 \", l1, \",\", cw, \" \", x1, \",\", y1);\n path.push(\"L\", x2, \",\", y2);\n if (x3 != null) path.push(\"A\", r0, \",\", r0, \" 0 \", l0, \",\", 1 - cw, \" \", x3, \",\", y3);\n }\n path.push(\"Z\");\n return path.join(\"\");\n }\n function circleSegment(r1, cw) {\n return \"M0,\" + r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + -r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + r1;\n }\n arc.innerRadius = function(v) {\n if (!arguments.length) return innerRadius;\n innerRadius = d3_functor(v);\n return arc;\n };\n arc.outerRadius = function(v) {\n if (!arguments.length) return outerRadius;\n outerRadius = d3_functor(v);\n return arc;\n };\n arc.cornerRadius = function(v) {\n if (!arguments.length) return cornerRadius;\n cornerRadius = d3_functor(v);\n return arc;\n };\n arc.padRadius = function(v) {\n if (!arguments.length) return padRadius;\n padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);\n return arc;\n };\n arc.startAngle = function(v) {\n if (!arguments.length) return startAngle;\n startAngle = d3_functor(v);\n return arc;\n };\n arc.endAngle = function(v) {\n if (!arguments.length) return endAngle;\n endAngle = d3_functor(v);\n return arc;\n };\n arc.padAngle = function(v) {\n if (!arguments.length) return padAngle;\n padAngle = d3_functor(v);\n return arc;\n };\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfÏ€;\n return [ Math.cos(a) * r, Math.sin(a) * r ];\n };\n return arc;\n };\n var d3_svg_arcAuto = \"auto\";\n function d3_svg_arcInnerRadius(d) {\n return d.innerRadius;\n }\n function d3_svg_arcOuterRadius(d) {\n return d.outerRadius;\n }\n function d3_svg_arcStartAngle(d) {\n return d.startAngle;\n }\n function d3_svg_arcEndAngle(d) {\n return d.endAngle;\n }\n function d3_svg_arcPadAngle(d) {\n return d && d.padAngle;\n }\n function d3_svg_arcSweep(x0, y0, x1, y1) {\n return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;\n }\n function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {\n var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];\n }\n function d3_svg_line(projection) {\n var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;\n function line(data) {\n var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);\n function segment() {\n segments.push(\"M\", interpolate(projection(points), tension));\n }\n while (++i < n) {\n if (defined.call(this, d = data[i], i)) {\n points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);\n } else if (points.length) {\n segment();\n points = [];\n }\n }\n if (points.length) segment();\n return segments.length ? segments.join(\"\") : null;\n }\n line.x = function(_) {\n if (!arguments.length) return x;\n x = _;\n return line;\n };\n line.y = function(_) {\n if (!arguments.length) return y;\n y = _;\n return line;\n };\n line.defined = function(_) {\n if (!arguments.length) return defined;\n defined = _;\n return line;\n };\n line.interpolate = function(_) {\n if (!arguments.length) return interpolateKey;\n if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n return line;\n };\n line.tension = function(_) {\n if (!arguments.length) return tension;\n tension = _;\n return line;\n };\n return line;\n }\n d3.svg.line = function() {\n return d3_svg_line(d3_identity);\n };\n var d3_svg_lineInterpolators = d3.map({\n linear: d3_svg_lineLinear,\n \"linear-closed\": d3_svg_lineLinearClosed,\n step: d3_svg_lineStep,\n \"step-before\": d3_svg_lineStepBefore,\n \"step-after\": d3_svg_lineStepAfter,\n basis: d3_svg_lineBasis,\n \"basis-open\": d3_svg_lineBasisOpen,\n \"basis-closed\": d3_svg_lineBasisClosed,\n bundle: d3_svg_lineBundle,\n cardinal: d3_svg_lineCardinal,\n \"cardinal-open\": d3_svg_lineCardinalOpen,\n \"cardinal-closed\": d3_svg_lineCardinalClosed,\n monotone: d3_svg_lineMonotone\n });\n d3_svg_lineInterpolators.forEach(function(key, value) {\n value.key = key;\n value.closed = /-closed$/.test(key);\n });\n function d3_svg_lineLinear(points) {\n return points.length > 1 ? points.join(\"L\") : points + \"Z\";\n }\n function d3_svg_lineLinearClosed(points) {\n return points.join(\"L\") + \"Z\";\n }\n function d3_svg_lineStep(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"H\", (p[0] + (p = points[i])[0]) / 2, \"V\", p[1]);\n if (n > 1) path.push(\"H\", p[0]);\n return path.join(\"\");\n }\n function d3_svg_lineStepBefore(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"V\", (p = points[i])[1], \"H\", p[0]);\n return path.join(\"\");\n }\n function d3_svg_lineStepAfter(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"H\", (p = points[i])[0], \"V\", p[1]);\n return path.join(\"\");\n }\n function d3_svg_lineCardinalOpen(points, tension) {\n return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));\n }\n function d3_svg_lineCardinalClosed(points, tension) {\n return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), \n points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));\n }\n function d3_svg_lineCardinal(points, tension) {\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));\n }\n function d3_svg_lineHermite(points, tangents) {\n if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {\n return d3_svg_lineLinear(points);\n }\n var quad = points.length != tangents.length, path = \"\", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;\n if (quad) {\n path += \"Q\" + (p[0] - t0[0] * 2 / 3) + \",\" + (p[1] - t0[1] * 2 / 3) + \",\" + p[0] + \",\" + p[1];\n p0 = points[1];\n pi = 2;\n }\n if (tangents.length > 1) {\n t = tangents[1];\n p = points[pi];\n pi++;\n path += \"C\" + (p0[0] + t0[0]) + \",\" + (p0[1] + t0[1]) + \",\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n for (var i = 2; i < tangents.length; i++, pi++) {\n p = points[pi];\n t = tangents[i];\n path += \"S\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n }\n }\n if (quad) {\n var lp = points[pi];\n path += \"Q\" + (p[0] + t[0] * 2 / 3) + \",\" + (p[1] + t[1] * 2 / 3) + \",\" + lp[0] + \",\" + lp[1];\n }\n return path;\n }\n function d3_svg_lineCardinalTangents(points, tension) {\n var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;\n while (++i < n) {\n p0 = p1;\n p1 = p2;\n p2 = points[i];\n tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);\n }\n return tangents;\n }\n function d3_svg_lineBasis(points) {\n if (points.length < 3) return d3_svg_lineLinear(points);\n var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, \",\", y0, \"L\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n points.push(points[n - 1]);\n while (++i <= n) {\n pi = points[i];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n points.pop();\n path.push(\"L\", pi);\n return path.join(\"\");\n }\n function d3_svg_lineBasisOpen(points) {\n if (points.length < 4) return d3_svg_lineLinear(points);\n var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];\n while (++i < 3) {\n pi = points[i];\n px.push(pi[0]);\n py.push(pi[1]);\n }\n path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + \",\" + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));\n --i;\n while (++i < n) {\n pi = points[i];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n return path.join(\"\");\n }\n function d3_svg_lineBasisClosed(points) {\n var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];\n while (++i < 4) {\n pi = points[i % n];\n px.push(pi[0]);\n py.push(pi[1]);\n }\n path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n --i;\n while (++i < m) {\n pi = points[i % n];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n return path.join(\"\");\n }\n function d3_svg_lineBundle(points, tension) {\n var n = points.length - 1;\n if (n) {\n var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;\n while (++i <= n) {\n p = points[i];\n t = i / n;\n p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);\n p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);\n }\n }\n return d3_svg_lineBasis(points);\n }\n function d3_svg_lineDot4(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n }\n var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];\n function d3_svg_lineBasisBezier(path, x, y) {\n path.push(\"C\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));\n }\n function d3_svg_lineSlope(p0, p1) {\n return (p1[1] - p0[1]) / (p1[0] - p0[0]);\n }\n function d3_svg_lineFiniteDifferences(points) {\n var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);\n while (++i < j) {\n m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;\n }\n m[i] = d;\n return m;\n }\n function d3_svg_lineMonotoneTangents(points) {\n var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;\n while (++i < j) {\n d = d3_svg_lineSlope(points[i], points[i + 1]);\n if (abs(d) < ε) {\n m[i] = m[i + 1] = 0;\n } else {\n a = m[i] / d;\n b = m[i + 1] / d;\n s = a * a + b * b;\n if (s > 9) {\n s = d * 3 / Math.sqrt(s);\n m[i] = s * a;\n m[i + 1] = s * b;\n }\n }\n }\n i = -1;\n while (++i <= j) {\n s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));\n tangents.push([ s || 0, m[i] * s || 0 ]);\n }\n return tangents;\n }\n function d3_svg_lineMonotone(points) {\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));\n }\n d3.svg.line.radial = function() {\n var line = d3_svg_line(d3_svg_lineRadial);\n line.radius = line.x, delete line.x;\n line.angle = line.y, delete line.y;\n return line;\n };\n function d3_svg_lineRadial(points) {\n var point, i = -1, n = points.length, r, a;\n while (++i < n) {\n point = points[i];\n r = point[0];\n a = point[1] - halfÏ€;\n point[0] = r * Math.cos(a);\n point[1] = r * Math.sin(a);\n }\n return points;\n }\n function d3_svg_area(projection) {\n var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = \"L\", tension = .7;\n function area(data) {\n var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {\n return x;\n } : d3_functor(x1), fy1 = y0 === y1 ? function() {\n return y;\n } : d3_functor(y1), x, y;\n function segment() {\n segments.push(\"M\", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), \"Z\");\n }\n while (++i < n) {\n if (defined.call(this, d = data[i], i)) {\n points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);\n points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);\n } else if (points0.length) {\n segment();\n points0 = [];\n points1 = [];\n }\n }\n if (points0.length) segment();\n return segments.length ? segments.join(\"\") : null;\n }\n area.x = function(_) {\n if (!arguments.length) return x1;\n x0 = x1 = _;\n return area;\n };\n area.x0 = function(_) {\n if (!arguments.length) return x0;\n x0 = _;\n return area;\n };\n area.x1 = function(_) {\n if (!arguments.length) return x1;\n x1 = _;\n return area;\n };\n area.y = function(_) {\n if (!arguments.length) return y1;\n y0 = y1 = _;\n return area;\n };\n area.y0 = function(_) {\n if (!arguments.length) return y0;\n y0 = _;\n return area;\n };\n area.y1 = function(_) {\n if (!arguments.length) return y1;\n y1 = _;\n return area;\n };\n area.defined = function(_) {\n if (!arguments.length) return defined;\n defined = _;\n return area;\n };\n area.interpolate = function(_) {\n if (!arguments.length) return interpolateKey;\n if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n interpolateReverse = interpolate.reverse || interpolate;\n L = interpolate.closed ? \"M\" : \"L\";\n return area;\n };\n area.tension = function(_) {\n if (!arguments.length) return tension;\n tension = _;\n return area;\n };\n return area;\n }\n d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;\n d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;\n d3.svg.area = function() {\n return d3_svg_area(d3_identity);\n };\n d3.svg.area.radial = function() {\n var area = d3_svg_area(d3_svg_lineRadial);\n area.radius = area.x, delete area.x;\n area.innerRadius = area.x0, delete area.x0;\n area.outerRadius = area.x1, delete area.x1;\n area.angle = area.y, delete area.y;\n area.startAngle = area.y0, delete area.y0;\n area.endAngle = area.y1, delete area.y1;\n return area;\n };\n d3.svg.chord = function() {\n var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;\n function chord(d, i) {\n var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);\n return \"M\" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + \"Z\";\n }\n function subgroup(self, f, d, i) {\n var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfÏ€, a1 = endAngle.call(self, subgroup, i) - halfÏ€;\n return {\n r: r,\n a0: a0,\n a1: a1,\n p0: [ r * Math.cos(a0), r * Math.sin(a0) ],\n p1: [ r * Math.cos(a1), r * Math.sin(a1) ]\n };\n }\n function equals(a, b) {\n return a.a0 == b.a0 && a.a1 == b.a1;\n }\n function arc(r, p, a) {\n return \"A\" + r + \",\" + r + \" 0 \" + +(a > Ï€) + \",1 \" + p;\n }\n function curve(r0, p0, r1, p1) {\n return \"Q 0,0 \" + p1;\n }\n chord.radius = function(v) {\n if (!arguments.length) return radius;\n radius = d3_functor(v);\n return chord;\n };\n chord.source = function(v) {\n if (!arguments.length) return source;\n source = d3_functor(v);\n return chord;\n };\n chord.target = function(v) {\n if (!arguments.length) return target;\n target = d3_functor(v);\n return chord;\n };\n chord.startAngle = function(v) {\n if (!arguments.length) return startAngle;\n startAngle = d3_functor(v);\n return chord;\n };\n chord.endAngle = function(v) {\n if (!arguments.length) return endAngle;\n endAngle = d3_functor(v);\n return chord;\n };\n return chord;\n };\n function d3_svg_chordRadius(d) {\n return d.radius;\n }\n d3.svg.diagonal = function() {\n var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;\n function diagonal(d, i) {\n var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {\n x: p0.x,\n y: m\n }, {\n x: p3.x,\n y: m\n }, p3 ];\n p = p.map(projection);\n return \"M\" + p[0] + \"C\" + p[1] + \" \" + p[2] + \" \" + p[3];\n }\n diagonal.source = function(x) {\n if (!arguments.length) return source;\n source = d3_functor(x);\n return diagonal;\n };\n diagonal.target = function(x) {\n if (!arguments.length) return target;\n target = d3_functor(x);\n return diagonal;\n };\n diagonal.projection = function(x) {\n if (!arguments.length) return projection;\n projection = x;\n return diagonal;\n };\n return diagonal;\n };\n function d3_svg_diagonalProjection(d) {\n return [ d.x, d.y ];\n }\n d3.svg.diagonal.radial = function() {\n var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;\n diagonal.projection = function(x) {\n return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;\n };\n return diagonal;\n };\n function d3_svg_diagonalRadialProjection(projection) {\n return function() {\n var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfÏ€;\n return [ r * Math.cos(a), r * Math.sin(a) ];\n };\n }\n d3.svg.symbol = function() {\n var type = d3_svg_symbolType, size = d3_svg_symbolSize;\n function symbol(d, i) {\n return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));\n }\n symbol.type = function(x) {\n if (!arguments.length) return type;\n type = d3_functor(x);\n return symbol;\n };\n symbol.size = function(x) {\n if (!arguments.length) return size;\n size = d3_functor(x);\n return symbol;\n };\n return symbol;\n };\n function d3_svg_symbolSize() {\n return 64;\n }\n function d3_svg_symbolType() {\n return \"circle\";\n }\n function d3_svg_symbolCircle(size) {\n var r = Math.sqrt(size / Ï€);\n return \"M0,\" + r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + -r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + r + \"Z\";\n }\n var d3_svg_symbols = d3.map({\n circle: d3_svg_symbolCircle,\n cross: function(size) {\n var r = Math.sqrt(size / 5) / 2;\n return \"M\" + -3 * r + \",\" + -r + \"H\" + -r + \"V\" + -3 * r + \"H\" + r + \"V\" + -r + \"H\" + 3 * r + \"V\" + r + \"H\" + r + \"V\" + 3 * r + \"H\" + -r + \"V\" + r + \"H\" + -3 * r + \"Z\";\n },\n diamond: function(size) {\n var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;\n return \"M0,\" + -ry + \"L\" + rx + \",0\" + \" 0,\" + ry + \" \" + -rx + \",0\" + \"Z\";\n },\n square: function(size) {\n var r = Math.sqrt(size) / 2;\n return \"M\" + -r + \",\" + -r + \"L\" + r + \",\" + -r + \" \" + r + \",\" + r + \" \" + -r + \",\" + r + \"Z\";\n },\n \"triangle-down\": function(size) {\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n return \"M0,\" + ry + \"L\" + rx + \",\" + -ry + \" \" + -rx + \",\" + -ry + \"Z\";\n },\n \"triangle-up\": function(size) {\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n return \"M0,\" + -ry + \"L\" + rx + \",\" + ry + \" \" + -rx + \",\" + ry + \"Z\";\n }\n });\n d3.svg.symbolTypes = d3_svg_symbols.keys();\n var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);\n d3_selectionPrototype.transition = function(name) {\n var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {\n time: Date.now(),\n ease: d3_ease_cubicInOut,\n delay: 0,\n duration: 250\n };\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);\n subgroup.push(node);\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_selectionPrototype.interrupt = function(name) {\n return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));\n };\n var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());\n function d3_selection_interruptNS(ns) {\n return function() {\n var lock, activeId, active;\n if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {\n active.timer.c = null;\n active.timer.t = NaN;\n if (--lock.count) delete lock[activeId]; else delete this[ns];\n lock.active += .5;\n active.event && active.event.interrupt.call(this, this.__data__, active.index);\n }\n };\n }\n function d3_transition(groups, ns, id) {\n d3_subclass(groups, d3_transitionPrototype);\n groups.namespace = ns;\n groups.id = id;\n return groups;\n }\n var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;\n d3_transitionPrototype.call = d3_selectionPrototype.call;\n d3_transitionPrototype.empty = d3_selectionPrototype.empty;\n d3_transitionPrototype.node = d3_selectionPrototype.node;\n d3_transitionPrototype.size = d3_selectionPrototype.size;\n d3.transition = function(selection, name) {\n return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);\n };\n d3.transition.prototype = d3_transitionPrototype;\n d3_transitionPrototype.select = function(selector) {\n var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;\n selector = d3_selection_selector(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n d3_transitionNode(subnode, i, ns, id, node[ns][id]);\n subgroup.push(subnode);\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_transitionPrototype.selectAll = function(selector) {\n var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;\n selector = d3_selection_selectorAll(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n transition = node[ns][id];\n subnodes = selector.call(node, node.__data__, i, j);\n subgroups.push(subgroup = []);\n for (var k = -1, o = subnodes.length; ++k < o; ) {\n if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);\n subgroup.push(subnode);\n }\n }\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_transitionPrototype.filter = function(filter) {\n var subgroups = [], subgroup, group, node;\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n subgroup.push(node);\n }\n }\n }\n return d3_transition(subgroups, this.namespace, this.id);\n };\n d3_transitionPrototype.tween = function(name, tween) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 2) return this.node()[ns][id].tween.get(name);\n return d3_selection_each(this, tween == null ? function(node) {\n node[ns][id].tween.remove(name);\n } : function(node) {\n node[ns][id].tween.set(name, tween);\n });\n };\n function d3_transition_tween(groups, name, value, tween) {\n var id = groups.id, ns = groups.namespace;\n return d3_selection_each(groups, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));\n } : (value = tween(value), function(node) {\n node[ns][id].tween.set(name, value);\n }));\n }\n d3_transitionPrototype.attr = function(nameNS, value) {\n if (arguments.length < 2) {\n for (value in nameNS) this.attr(value, nameNS[value]);\n return this;\n }\n var interpolate = nameNS == \"transform\" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);\n function attrNull() {\n this.removeAttribute(name);\n }\n function attrNullNS() {\n this.removeAttributeNS(name.space, name.local);\n }\n function attrTween(b) {\n return b == null ? attrNull : (b += \"\", function() {\n var a = this.getAttribute(name), i;\n return a !== b && (i = interpolate(a, b), function(t) {\n this.setAttribute(name, i(t));\n });\n });\n }\n function attrTweenNS(b) {\n return b == null ? attrNullNS : (b += \"\", function() {\n var a = this.getAttributeNS(name.space, name.local), i;\n return a !== b && (i = interpolate(a, b), function(t) {\n this.setAttributeNS(name.space, name.local, i(t));\n });\n });\n }\n return d3_transition_tween(this, \"attr.\" + nameNS, value, name.local ? attrTweenNS : attrTween);\n };\n d3_transitionPrototype.attrTween = function(nameNS, tween) {\n var name = d3.ns.qualify(nameNS);\n function attrTween(d, i) {\n var f = tween.call(this, d, i, this.getAttribute(name));\n return f && function(t) {\n this.setAttribute(name, f(t));\n };\n }\n function attrTweenNS(d, i) {\n var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));\n return f && function(t) {\n this.setAttributeNS(name.space, name.local, f(t));\n };\n }\n return this.tween(\"attr.\" + nameNS, name.local ? attrTweenNS : attrTween);\n };\n d3_transitionPrototype.style = function(name, value, priority) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof name !== \"string\") {\n if (n < 2) value = \"\";\n for (priority in name) this.style(priority, name[priority], value);\n return this;\n }\n priority = \"\";\n }\n function styleNull() {\n this.style.removeProperty(name);\n }\n function styleString(b) {\n return b == null ? styleNull : (b += \"\", function() {\n var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;\n return a !== b && (i = d3_interpolate(a, b), function(t) {\n this.style.setProperty(name, i(t), priority);\n });\n });\n }\n return d3_transition_tween(this, \"style.\" + name, value, styleString);\n };\n d3_transitionPrototype.styleTween = function(name, tween, priority) {\n if (arguments.length < 3) priority = \"\";\n function styleTween(d, i) {\n var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));\n return f && function(t) {\n this.style.setProperty(name, f(t), priority);\n };\n }\n return this.tween(\"style.\" + name, styleTween);\n };\n d3_transitionPrototype.text = function(value) {\n return d3_transition_tween(this, \"text\", value, d3_transition_text);\n };\n function d3_transition_text(b) {\n if (b == null) b = \"\";\n return function() {\n this.textContent = b;\n };\n }\n d3_transitionPrototype.remove = function() {\n var ns = this.namespace;\n return this.each(\"end.transition\", function() {\n var p;\n if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);\n });\n };\n d3_transitionPrototype.ease = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].ease;\n if (typeof value !== \"function\") value = d3.ease.apply(d3, arguments);\n return d3_selection_each(this, function(node) {\n node[ns][id].ease = value;\n });\n };\n d3_transitionPrototype.delay = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].delay;\n return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].delay = +value.call(node, node.__data__, i, j);\n } : (value = +value, function(node) {\n node[ns][id].delay = value;\n }));\n };\n d3_transitionPrototype.duration = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].duration;\n return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));\n } : (value = Math.max(1, value), function(node) {\n node[ns][id].duration = value;\n }));\n };\n d3_transitionPrototype.each = function(type, listener) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 2) {\n var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;\n try {\n d3_transitionInheritId = id;\n d3_selection_each(this, function(node, i, j) {\n d3_transitionInherit = node[ns][id];\n type.call(node, node.__data__, i, j);\n });\n } finally {\n d3_transitionInherit = inherit;\n d3_transitionInheritId = inheritId;\n }\n } else {\n d3_selection_each(this, function(node) {\n var transition = node[ns][id];\n (transition.event || (transition.event = d3.dispatch(\"start\", \"end\", \"interrupt\"))).on(type, listener);\n });\n }\n return this;\n };\n d3_transitionPrototype.transition = function() {\n var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n if (node = group[i]) {\n transition = node[ns][id0];\n d3_transitionNode(node, i, ns, id1, {\n time: transition.time,\n ease: transition.ease,\n delay: transition.delay + transition.duration,\n duration: transition.duration\n });\n }\n subgroup.push(node);\n }\n }\n return d3_transition(subgroups, ns, id1);\n };\n function d3_transitionNamespace(name) {\n return name == null ? \"__transition__\" : \"__transition_\" + name + \"__\";\n }\n function d3_transitionNode(node, i, ns, id, inherit) {\n var lock = node[ns] || (node[ns] = {\n active: 0,\n count: 0\n }), transition = lock[id], time, timer, duration, ease, tweens;\n function schedule(elapsed) {\n var delay = transition.delay;\n timer.t = delay + time;\n if (delay <= elapsed) return start(elapsed - delay);\n timer.c = start;\n }\n function start(elapsed) {\n var activeId = lock.active, active = lock[activeId];\n if (active) {\n active.timer.c = null;\n active.timer.t = NaN;\n --lock.count;\n delete lock[activeId];\n active.event && active.event.interrupt.call(node, node.__data__, active.index);\n }\n for (var cancelId in lock) {\n if (+cancelId < id) {\n var cancel = lock[cancelId];\n cancel.timer.c = null;\n cancel.timer.t = NaN;\n --lock.count;\n delete lock[cancelId];\n }\n }\n timer.c = tick;\n d3_timer(function() {\n if (timer.c && tick(elapsed || 1)) {\n timer.c = null;\n timer.t = NaN;\n }\n return 1;\n }, 0, time);\n lock.active = id;\n transition.event && transition.event.start.call(node, node.__data__, i);\n tweens = [];\n transition.tween.forEach(function(key, value) {\n if (value = value.call(node, node.__data__, i)) {\n tweens.push(value);\n }\n });\n ease = transition.ease;\n duration = transition.duration;\n }\n function tick(elapsed) {\n var t = elapsed / duration, e = ease(t), n = tweens.length;\n while (n > 0) {\n tweens[--n].call(node, e);\n }\n if (t >= 1) {\n transition.event && transition.event.end.call(node, node.__data__, i);\n if (--lock.count) delete lock[id]; else delete node[ns];\n return 1;\n }\n }\n if (!transition) {\n time = inherit.time;\n timer = d3_timer(schedule, 0, time);\n transition = lock[id] = {\n tween: new d3_Map(),\n time: time,\n timer: timer,\n delay: inherit.delay,\n duration: inherit.duration,\n ease: inherit.ease,\n index: i\n };\n inherit = null;\n ++lock.count;\n }\n }\n d3.svg.axis = function() {\n var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;\n function axis(g) {\n g.each(function() {\n var g = d3.select(this);\n var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();\n var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(\".tick\").data(ticks, scale1), tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", ε), tickExit = d3.transition(tick.exit()).style(\"opacity\", ε).remove(), tickUpdate = d3.transition(tick.order()).style(\"opacity\", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;\n var range = d3_scaleRange(scale1), path = g.selectAll(\".domain\").data([ 0 ]), pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), \n d3.transition(path));\n tickEnter.append(\"line\");\n tickEnter.append(\"text\");\n var lineEnter = tickEnter.select(\"line\"), lineUpdate = tickUpdate.select(\"line\"), text = tick.select(\"text\").text(tickFormat), textEnter = tickEnter.select(\"text\"), textUpdate = tickUpdate.select(\"text\"), sign = orient === \"top\" || orient === \"left\" ? -1 : 1, x1, x2, y1, y2;\n if (orient === \"bottom\" || orient === \"top\") {\n tickTransform = d3_svg_axisX, x1 = \"x\", y1 = \"y\", x2 = \"x2\", y2 = \"y2\";\n text.attr(\"dy\", sign < 0 ? \"0em\" : \".71em\").style(\"text-anchor\", \"middle\");\n pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize);\n } else {\n tickTransform = d3_svg_axisY, x1 = \"y\", y1 = \"x\", x2 = \"y2\", y2 = \"x2\";\n text.attr(\"dy\", \".32em\").style(\"text-anchor\", sign < 0 ? \"end\" : \"start\");\n pathUpdate.attr(\"d\", \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize);\n }\n lineEnter.attr(y2, sign * innerTickSize);\n textEnter.attr(y1, sign * tickSpacing);\n lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);\n textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);\n if (scale1.rangeBand) {\n var x = scale1, dx = x.rangeBand() / 2;\n scale0 = scale1 = function(d) {\n return x(d) + dx;\n };\n } else if (scale0.rangeBand) {\n scale0 = scale1;\n } else {\n tickExit.call(tickTransform, scale1, scale0);\n }\n tickEnter.call(tickTransform, scale0, scale1);\n tickUpdate.call(tickTransform, scale1, scale1);\n });\n }\n axis.scale = function(x) {\n if (!arguments.length) return scale;\n scale = x;\n return axis;\n };\n axis.orient = function(x) {\n if (!arguments.length) return orient;\n orient = x in d3_svg_axisOrients ? x + \"\" : d3_svg_axisDefaultOrient;\n return axis;\n };\n axis.ticks = function() {\n if (!arguments.length) return tickArguments_;\n tickArguments_ = d3_array(arguments);\n return axis;\n };\n axis.tickValues = function(x) {\n if (!arguments.length) return tickValues;\n tickValues = x;\n return axis;\n };\n axis.tickFormat = function(x) {\n if (!arguments.length) return tickFormat_;\n tickFormat_ = x;\n return axis;\n };\n axis.tickSize = function(x) {\n var n = arguments.length;\n if (!n) return innerTickSize;\n innerTickSize = +x;\n outerTickSize = +arguments[n - 1];\n return axis;\n };\n axis.innerTickSize = function(x) {\n if (!arguments.length) return innerTickSize;\n innerTickSize = +x;\n return axis;\n };\n axis.outerTickSize = function(x) {\n if (!arguments.length) return outerTickSize;\n outerTickSize = +x;\n return axis;\n };\n axis.tickPadding = function(x) {\n if (!arguments.length) return tickPadding;\n tickPadding = +x;\n return axis;\n };\n axis.tickSubdivide = function() {\n return arguments.length && axis;\n };\n return axis;\n };\n var d3_svg_axisDefaultOrient = \"bottom\", d3_svg_axisOrients = {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n };\n function d3_svg_axisX(selection, x0, x1) {\n selection.attr(\"transform\", function(d) {\n var v0 = x0(d);\n return \"translate(\" + (isFinite(v0) ? v0 : x1(d)) + \",0)\";\n });\n }\n function d3_svg_axisY(selection, y0, y1) {\n selection.attr(\"transform\", function(d) {\n var v0 = y0(d);\n return \"translate(0,\" + (isFinite(v0) ? v0 : y1(d)) + \")\";\n });\n }\n d3.svg.brush = function() {\n var event = d3_eventDispatch(brush, \"brushstart\", \"brush\", \"brushend\"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];\n function brush(g) {\n g.each(function() {\n var g = d3.select(this).style(\"pointer-events\", \"all\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\").on(\"mousedown.brush\", brushstart).on(\"touchstart.brush\", brushstart);\n var background = g.selectAll(\".background\").data([ 0 ]);\n background.enter().append(\"rect\").attr(\"class\", \"background\").style(\"visibility\", \"hidden\").style(\"cursor\", \"crosshair\");\n g.selectAll(\".extent\").data([ 0 ]).enter().append(\"rect\").attr(\"class\", \"extent\").style(\"cursor\", \"move\");\n var resize = g.selectAll(\".resize\").data(resizes, d3_identity);\n resize.exit().remove();\n resize.enter().append(\"g\").attr(\"class\", function(d) {\n return \"resize \" + d;\n }).style(\"cursor\", function(d) {\n return d3_svg_brushCursor[d];\n }).append(\"rect\").attr(\"x\", function(d) {\n return /[ew]$/.test(d) ? -3 : null;\n }).attr(\"y\", function(d) {\n return /^[ns]/.test(d) ? -3 : null;\n }).attr(\"width\", 6).attr(\"height\", 6).style(\"visibility\", \"hidden\");\n resize.style(\"display\", brush.empty() ? \"none\" : null);\n var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;\n if (x) {\n range = d3_scaleRange(x);\n backgroundUpdate.attr(\"x\", range[0]).attr(\"width\", range[1] - range[0]);\n redrawX(gUpdate);\n }\n if (y) {\n range = d3_scaleRange(y);\n backgroundUpdate.attr(\"y\", range[0]).attr(\"height\", range[1] - range[0]);\n redrawY(gUpdate);\n }\n redraw(gUpdate);\n });\n }\n brush.event = function(g) {\n g.each(function() {\n var event_ = event.of(this, arguments), extent1 = {\n x: xExtent,\n y: yExtent,\n i: xExtentDomain,\n j: yExtentDomain\n }, extent0 = this.__chart__ || extent1;\n this.__chart__ = extent1;\n if (d3_transitionInheritId) {\n d3.select(this).transition().each(\"start.brush\", function() {\n xExtentDomain = extent0.i;\n yExtentDomain = extent0.j;\n xExtent = extent0.x;\n yExtent = extent0.y;\n event_({\n type: \"brushstart\"\n });\n }).tween(\"brush:brush\", function() {\n var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);\n xExtentDomain = yExtentDomain = null;\n return function(t) {\n xExtent = extent1.x = xi(t);\n yExtent = extent1.y = yi(t);\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n };\n }).each(\"end.brush\", function() {\n xExtentDomain = extent1.i;\n yExtentDomain = extent1.j;\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n event_({\n type: \"brushend\"\n });\n });\n } else {\n event_({\n type: \"brushstart\"\n });\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n event_({\n type: \"brushend\"\n });\n }\n });\n };\n function redraw(g) {\n g.selectAll(\".resize\").attr(\"transform\", function(d) {\n return \"translate(\" + xExtent[+/e$/.test(d)] + \",\" + yExtent[+/^s/.test(d)] + \")\";\n });\n }\n function redrawX(g) {\n g.select(\".extent\").attr(\"x\", xExtent[0]);\n g.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\", xExtent[1] - xExtent[0]);\n }\n function redrawY(g) {\n g.select(\".extent\").attr(\"y\", yExtent[0]);\n g.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\", yExtent[1] - yExtent[0]);\n }\n function brushstart() {\n var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed(\"extent\"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset;\n var w = d3.select(d3_window(target)).on(\"keydown.brush\", keydown).on(\"keyup.brush\", keyup);\n if (d3.event.changedTouches) {\n w.on(\"touchmove.brush\", brushmove).on(\"touchend.brush\", brushend);\n } else {\n w.on(\"mousemove.brush\", brushmove).on(\"mouseup.brush\", brushend);\n }\n g.interrupt().selectAll(\"*\").interrupt();\n if (dragging) {\n origin[0] = xExtent[0] - origin[0];\n origin[1] = yExtent[0] - origin[1];\n } else if (resizing) {\n var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);\n offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];\n origin[0] = xExtent[ex];\n origin[1] = yExtent[ey];\n } else if (d3.event.altKey) center = origin.slice();\n g.style(\"pointer-events\", \"none\").selectAll(\".resize\").style(\"display\", null);\n d3.select(\"body\").style(\"cursor\", eventTarget.style(\"cursor\"));\n event_({\n type: \"brushstart\"\n });\n brushmove();\n function keydown() {\n if (d3.event.keyCode == 32) {\n if (!dragging) {\n center = null;\n origin[0] -= xExtent[1];\n origin[1] -= yExtent[1];\n dragging = 2;\n }\n d3_eventPreventDefault();\n }\n }\n function keyup() {\n if (d3.event.keyCode == 32 && dragging == 2) {\n origin[0] += xExtent[1];\n origin[1] += yExtent[1];\n dragging = 0;\n d3_eventPreventDefault();\n }\n }\n function brushmove() {\n var point = d3.mouse(target), moved = false;\n if (offset) {\n point[0] += offset[0];\n point[1] += offset[1];\n }\n if (!dragging) {\n if (d3.event.altKey) {\n if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];\n origin[0] = xExtent[+(point[0] < center[0])];\n origin[1] = yExtent[+(point[1] < center[1])];\n } else center = null;\n }\n if (resizingX && move1(point, x, 0)) {\n redrawX(g);\n moved = true;\n }\n if (resizingY && move1(point, y, 1)) {\n redrawY(g);\n moved = true;\n }\n if (moved) {\n redraw(g);\n event_({\n type: \"brush\",\n mode: dragging ? \"move\" : \"resize\"\n });\n }\n }\n function move1(point, scale, i) {\n var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;\n if (dragging) {\n r0 -= position;\n r1 -= size + position;\n }\n min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];\n if (dragging) {\n max = (min += position) + size;\n } else {\n if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));\n if (position < min) {\n max = min;\n min = position;\n } else {\n max = position;\n }\n }\n if (extent[0] != min || extent[1] != max) {\n if (i) yExtentDomain = null; else xExtentDomain = null;\n extent[0] = min;\n extent[1] = max;\n return true;\n }\n }\n function brushend() {\n brushmove();\n g.style(\"pointer-events\", \"all\").selectAll(\".resize\").style(\"display\", brush.empty() ? \"none\" : null);\n d3.select(\"body\").style(\"cursor\", null);\n w.on(\"mousemove.brush\", null).on(\"mouseup.brush\", null).on(\"touchmove.brush\", null).on(\"touchend.brush\", null).on(\"keydown.brush\", null).on(\"keyup.brush\", null);\n dragRestore();\n event_({\n type: \"brushend\"\n });\n }\n }\n brush.x = function(z) {\n if (!arguments.length) return x;\n x = z;\n resizes = d3_svg_brushResizes[!x << 1 | !y];\n return brush;\n };\n brush.y = function(z) {\n if (!arguments.length) return y;\n y = z;\n resizes = d3_svg_brushResizes[!x << 1 | !y];\n return brush;\n };\n brush.clamp = function(z) {\n if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;\n if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;\n return brush;\n };\n brush.extent = function(z) {\n var x0, x1, y0, y1, t;\n if (!arguments.length) {\n if (x) {\n if (xExtentDomain) {\n x0 = xExtentDomain[0], x1 = xExtentDomain[1];\n } else {\n x0 = xExtent[0], x1 = xExtent[1];\n if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\n }\n }\n if (y) {\n if (yExtentDomain) {\n y0 = yExtentDomain[0], y1 = yExtentDomain[1];\n } else {\n y0 = yExtent[0], y1 = yExtent[1];\n if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\n }\n }\n return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];\n }\n if (x) {\n x0 = z[0], x1 = z[1];\n if (y) x0 = x0[0], x1 = x1[0];\n xExtentDomain = [ x0, x1 ];\n if (x.invert) x0 = x(x0), x1 = x(x1);\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\n if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];\n }\n if (y) {\n y0 = z[0], y1 = z[1];\n if (x) y0 = y0[1], y1 = y1[1];\n yExtentDomain = [ y0, y1 ];\n if (y.invert) y0 = y(y0), y1 = y(y1);\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\n if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];\n }\n return brush;\n };\n brush.clear = function() {\n if (!brush.empty()) {\n xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];\n xExtentDomain = yExtentDomain = null;\n }\n return brush;\n };\n brush.empty = function() {\n return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];\n };\n return d3.rebind(brush, event, \"on\");\n };\n var d3_svg_brushCursor = {\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n };\n var d3_svg_brushResizes = [ [ \"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\" ], [ \"e\", \"w\" ], [ \"n\", \"s\" ], [] ];\n var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat;\n var d3_time_formatUtc = d3_time_format.utc;\n var d3_time_formatIso = d3_time_formatUtc(\"%Y-%m-%dT%H:%M:%S.%LZ\");\n d3_time_format.iso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\") ? d3_time_formatIsoNative : d3_time_formatIso;\n function d3_time_formatIsoNative(date) {\n return date.toISOString();\n }\n d3_time_formatIsoNative.parse = function(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n };\n d3_time_formatIsoNative.toString = d3_time_formatIso.toString;\n d3_time.second = d3_time_interval(function(date) {\n return new d3_date(Math.floor(date / 1e3) * 1e3);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 1e3);\n }, function(date) {\n return date.getSeconds();\n });\n d3_time.seconds = d3_time.second.range;\n d3_time.seconds.utc = d3_time.second.utc.range;\n d3_time.minute = d3_time_interval(function(date) {\n return new d3_date(Math.floor(date / 6e4) * 6e4);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 6e4);\n }, function(date) {\n return date.getMinutes();\n });\n d3_time.minutes = d3_time.minute.range;\n d3_time.minutes.utc = d3_time.minute.utc.range;\n d3_time.hour = d3_time_interval(function(date) {\n var timezone = date.getTimezoneOffset() / 60;\n return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 36e5);\n }, function(date) {\n return date.getHours();\n });\n d3_time.hours = d3_time.hour.range;\n d3_time.hours.utc = d3_time.hour.utc.range;\n d3_time.month = d3_time_interval(function(date) {\n date = d3_time.day(date);\n date.setDate(1);\n return date;\n }, function(date, offset) {\n date.setMonth(date.getMonth() + offset);\n }, function(date) {\n return date.getMonth();\n });\n d3_time.months = d3_time.month.range;\n d3_time.months.utc = d3_time.month.utc.range;\n function d3_time_scale(linear, methods, format) {\n function scale(x) {\n return linear(x);\n }\n scale.invert = function(x) {\n return d3_time_scaleDate(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return linear.domain().map(d3_time_scaleDate);\n linear.domain(x);\n return scale;\n };\n function tickMethod(extent, count) {\n var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);\n return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {\n return d / 31536e6;\n }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];\n }\n scale.nice = function(interval, skip) {\n var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" && tickMethod(extent, interval);\n if (method) interval = method[0], skip = method[1];\n function skipped(date) {\n return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;\n }\n return scale.domain(d3_scale_nice(domain, skip > 1 ? {\n floor: function(date) {\n while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);\n return date;\n },\n ceil: function(date) {\n while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);\n return date;\n }\n } : interval));\n };\n scale.ticks = function(interval, skip) {\n var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" ? tickMethod(extent, interval) : !interval.range && [ {\n range: interval\n }, skip ];\n if (method) interval = method[0], skip = method[1];\n return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);\n };\n scale.tickFormat = function() {\n return format;\n };\n scale.copy = function() {\n return d3_time_scale(linear.copy(), methods, format);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n function d3_time_scaleDate(t) {\n return new Date(t);\n }\n var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];\n var d3_time_scaleLocalMethods = [ [ d3_time.second, 1 ], [ d3_time.second, 5 ], [ d3_time.second, 15 ], [ d3_time.second, 30 ], [ d3_time.minute, 1 ], [ d3_time.minute, 5 ], [ d3_time.minute, 15 ], [ d3_time.minute, 30 ], [ d3_time.hour, 1 ], [ d3_time.hour, 3 ], [ d3_time.hour, 6 ], [ d3_time.hour, 12 ], [ d3_time.day, 1 ], [ d3_time.day, 2 ], [ d3_time.week, 1 ], [ d3_time.month, 1 ], [ d3_time.month, 3 ], [ d3_time.year, 1 ] ];\n var d3_time_scaleLocalFormat = d3_time_format.multi([ [ \".%L\", function(d) {\n return d.getMilliseconds();\n } ], [ \":%S\", function(d) {\n return d.getSeconds();\n } ], [ \"%I:%M\", function(d) {\n return d.getMinutes();\n } ], [ \"%I %p\", function(d) {\n return d.getHours();\n } ], [ \"%a %d\", function(d) {\n return d.getDay() && d.getDate() != 1;\n } ], [ \"%b %d\", function(d) {\n return d.getDate() != 1;\n } ], [ \"%B\", function(d) {\n return d.getMonth();\n } ], [ \"%Y\", d3_true ] ]);\n var d3_time_scaleMilliseconds = {\n range: function(start, stop, step) {\n return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate);\n },\n floor: d3_identity,\n ceil: d3_identity\n };\n d3_time_scaleLocalMethods.year = d3_time.year;\n d3_time.scale = function() {\n return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);\n };\n var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function(m) {\n return [ m[0].utc, m[1] ];\n });\n var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([ [ \".%L\", function(d) {\n return d.getUTCMilliseconds();\n } ], [ \":%S\", function(d) {\n return d.getUTCSeconds();\n } ], [ \"%I:%M\", function(d) {\n return d.getUTCMinutes();\n } ], [ \"%I %p\", function(d) {\n return d.getUTCHours();\n } ], [ \"%a %d\", function(d) {\n return d.getUTCDay() && d.getUTCDate() != 1;\n } ], [ \"%b %d\", function(d) {\n return d.getUTCDate() != 1;\n } ], [ \"%B\", function(d) {\n return d.getUTCMonth();\n } ], [ \"%Y\", d3_true ] ]);\n d3_time_scaleUtcMethods.year = d3_time.year.utc;\n d3_time.scale.utc = function() {\n return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat);\n };\n d3.text = d3_xhrType(function(request) {\n return request.responseText;\n });\n d3.json = function(url, callback) {\n return d3_xhr(url, \"application/json\", d3_json, callback);\n };\n function d3_json(request) {\n return JSON.parse(request.responseText);\n }\n d3.html = function(url, callback) {\n return d3_xhr(url, \"text/html\", d3_html, callback);\n };\n function d3_html(request) {\n var range = d3_document.createRange();\n range.selectNode(d3_document.body);\n return range.createContextualFragment(request.responseText);\n }\n d3.xml = d3_xhrType(function(request) {\n return request.responseXML;\n });\n if (typeof define === \"function\" && define.amd) this.d3 = d3, define(d3); else if (typeof module === \"object\" && module.exports) module.exports = d3; else this.d3 = d3;\n}();","L.Control.Fullscreen = L.Control.extend({\n options: {\n position: 'topleft',\n title: {\n 'false': 'View Fullscreen',\n 'true': 'Exit Fullscreen'\n }\n },\n\n onAdd: function (map) {\n var container = L.DomUtil.create('div', 'leaflet-control-fullscreen leaflet-bar leaflet-control');\n\n this.link = L.DomUtil.create('a', 'leaflet-control-fullscreen-button leaflet-bar-part', container);\n this.link.href = '#';\n\n this._map = map;\n this._map.on('fullscreenchange', this._toggleTitle, this);\n this._toggleTitle();\n\n L.DomEvent.on(this.link, 'click', this._click, this);\n\n return container;\n },\n\n _click: function (e) {\n L.DomEvent.stopPropagation(e);\n L.DomEvent.preventDefault(e);\n this._map.toggleFullscreen(this.options);\n },\n\n _toggleTitle: function() {\n this.link.title = this.options.title[this._map.isFullscreen()];\n }\n});\n\nL.Map.include({\n isFullscreen: function () {\n return this._isFullscreen || false;\n },\n\n toggleFullscreen: function (options) {\n var container = this.getContainer();\n if (this.isFullscreen()) {\n if (options && options.pseudoFullscreen) {\n this._disablePseudoFullscreen(container);\n } else if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.webkitCancelFullScreen) {\n document.webkitCancelFullScreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n } else {\n this._disablePseudoFullscreen(container);\n }\n } else {\n if (options && options.pseudoFullscreen) {\n this._enablePseudoFullscreen(container);\n } else if (container.requestFullscreen) {\n container.requestFullscreen();\n } else if (container.mozRequestFullScreen) {\n container.mozRequestFullScreen();\n } else if (container.webkitRequestFullscreen) {\n container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);\n } else if (container.msRequestFullscreen) {\n container.msRequestFullscreen();\n } else {\n this._enablePseudoFullscreen(container);\n }\n }\n\n },\n\n _enablePseudoFullscreen: function (container) {\n L.DomUtil.addClass(container, 'leaflet-pseudo-fullscreen');\n this._setFullscreen(true);\n this.fire('fullscreenchange');\n },\n\n _disablePseudoFullscreen: function (container) {\n L.DomUtil.removeClass(container, 'leaflet-pseudo-fullscreen');\n this._setFullscreen(false);\n this.fire('fullscreenchange');\n },\n\n _setFullscreen: function(fullscreen) {\n this._isFullscreen = fullscreen;\n var container = this.getContainer();\n if (fullscreen) {\n L.DomUtil.addClass(container, 'leaflet-fullscreen-on');\n } else {\n L.DomUtil.removeClass(container, 'leaflet-fullscreen-on');\n }\n this.invalidateSize();\n },\n\n _onFullscreenChange: function (e) {\n var fullscreenElement =\n document.fullscreenElement ||\n document.mozFullScreenElement ||\n document.webkitFullscreenElement ||\n document.msFullscreenElement;\n\n if (fullscreenElement === this.getContainer() && !this._isFullscreen) {\n this._setFullscreen(true);\n this.fire('fullscreenchange');\n } else if (fullscreenElement !== this.getContainer() && this._isFullscreen) {\n this._setFullscreen(false);\n this.fire('fullscreenchange');\n }\n }\n});\n\nL.Map.mergeOptions({\n fullscreenControl: false\n});\n\nL.Map.addInitHook(function () {\n if (this.options.fullscreenControl) {\n this.fullscreenControl = new L.Control.Fullscreen(this.options.fullscreenControl);\n this.addControl(this.fullscreenControl);\n }\n\n var fullscreenchange;\n\n if ('onfullscreenchange' in document) {\n fullscreenchange = 'fullscreenchange';\n } else if ('onmozfullscreenchange' in document) {\n fullscreenchange = 'mozfullscreenchange';\n } else if ('onwebkitfullscreenchange' in document) {\n fullscreenchange = 'webkitfullscreenchange';\n } else if ('onmsfullscreenchange' in document) {\n fullscreenchange = 'MSFullscreenChange';\n }\n\n if (fullscreenchange) {\n var onFullscreenChange = L.bind(this._onFullscreenChange, this);\n\n this.whenReady(function () {\n L.DomEvent.on(document, fullscreenchange, onFullscreenChange);\n });\n\n this.on('unload', function () {\n L.DomEvent.off(document, fullscreenchange, onFullscreenChange);\n });\n }\n});\n\nL.control.fullscreen = function (options) {\n return new L.Control.Fullscreen(options);\n};\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t(((e=e||self).Leaflet=e.Leaflet||{},e.Leaflet.markercluster={}))}(this,function(e){\"use strict\";var t=L.MarkerClusterGroup=L.FeatureGroup.extend({options:{maxClusterRadius:80,iconCreateFunction:null,clusterPane:L.Marker.prototype.options.pane,spiderfyOnEveryZoom:!1,spiderfyOnMaxZoom:!0,showCoverageOnHover:!0,zoomToBoundsOnClick:!0,singleMarkerMode:!1,disableClusteringAtZoom:null,removeOutsideVisibleBounds:!0,animate:!0,animateAddingMarkers:!1,spiderfyShapePositions:null,spiderfyDistanceMultiplier:1,spiderLegPolylineOptions:{weight:1.5,color:\"#222\",opacity:.5},chunkedLoading:!1,chunkInterval:200,chunkDelay:50,chunkProgress:null,polygonOptions:{}},initialize:function(e){L.Util.setOptions(this,e),this.options.iconCreateFunction||(this.options.iconCreateFunction=this._defaultIconCreateFunction),this._featureGroup=L.featureGroup(),this._featureGroup.addEventParent(this),this._nonPointGroup=L.featureGroup(),this._nonPointGroup.addEventParent(this),this._inZoomAnimation=0,this._needsClustering=[],this._needsRemoving=[],this._currentShownBounds=null,this._queue=[],this._childMarkerEventHandlers={dragstart:this._childMarkerDragStart,move:this._childMarkerMoved,dragend:this._childMarkerDragEnd};var t=L.DomUtil.TRANSITION&&this.options.animate;L.extend(this,t?this._withAnimation:this._noAnimation),this._markerCluster=t?L.MarkerCluster:L.MarkerClusterNonAnimated},addLayer:function(e){if(e instanceof L.LayerGroup)return this.addLayers([e]);if(!e.getLatLng)return this._nonPointGroup.addLayer(e),this.fire(\"layeradd\",{layer:e}),this;if(!this._map)return this._needsClustering.push(e),this.fire(\"layeradd\",{layer:e}),this;if(this.hasLayer(e))return this;this._unspiderfy&&this._unspiderfy(),this._addLayer(e,this._maxZoom),this.fire(\"layeradd\",{layer:e}),this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons();var t=e,i=this._zoom;if(e.__parent)for(;t.__parent._zoom>=i;)t=t.__parent;return this._currentShownBounds.contains(t.getLatLng())&&(this.options.animateAddingMarkers?this._animationAddLayer(e,t):this._animationAddLayerNonAnimated(e,t)),this},removeLayer:function(e){return e instanceof L.LayerGroup?this.removeLayers([e]):(e.getLatLng?this._map?e.__parent&&(this._unspiderfy&&(this._unspiderfy(),this._unspiderfyLayer(e)),this._removeLayer(e,!0),this.fire(\"layerremove\",{layer:e}),this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),e.off(this._childMarkerEventHandlers,this),this._featureGroup.hasLayer(e)&&(this._featureGroup.removeLayer(e),e.clusterShow&&e.clusterShow())):(!this._arraySplice(this._needsClustering,e)&&this.hasLayer(e)&&this._needsRemoving.push({layer:e,latlng:e._latlng}),this.fire(\"layerremove\",{layer:e})):(this._nonPointGroup.removeLayer(e),this.fire(\"layerremove\",{layer:e})),this)},addLayers:function(n,s){if(!L.Util.isArray(n))return this.addLayer(n);var o,a=this._featureGroup,h=this._nonPointGroup,l=this.options.chunkedLoading,u=this.options.chunkInterval,_=this.options.chunkProgress,d=n.length,p=0,c=!0;if(this._map){var f=(new Date).getTime(),m=L.bind(function(){var e=(new Date).getTime();for(this._map&&this._unspiderfy&&this._unspiderfy();p<d;p++){if(l&&p%200==0){var t=(new Date).getTime()-e;if(u<t)break}if((o=n[p])instanceof L.LayerGroup)c&&(n=n.slice(),c=!1),this._extractNonGroupLayers(o,n),d=n.length;else if(o.getLatLng){if(!this.hasLayer(o)&&(this._addLayer(o,this._maxZoom),s||this.fire(\"layeradd\",{layer:o}),o.__parent&&2===o.__parent.getChildCount())){var i=o.__parent.getAllChildMarkers(),r=i[0]===o?i[1]:i[0];a.removeLayer(r)}}else h.addLayer(o),s||this.fire(\"layeradd\",{layer:o})}_&&_(p,d,(new Date).getTime()-f),p===d?(this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,this._currentShownBounds)):setTimeout(m,this.options.chunkDelay)},this);m()}else for(var e=this._needsClustering;p<d;p++)(o=n[p])instanceof L.LayerGroup?(c&&(n=n.slice(),c=!1),this._extractNonGroupLayers(o,n),d=n.length):o.getLatLng?this.hasLayer(o)||e.push(o):h.addLayer(o);return this},removeLayers:function(e){var t,i,r=e.length,n=this._featureGroup,s=this._nonPointGroup,o=!0;if(!this._map){for(t=0;t<r;t++)(i=e[t])instanceof L.LayerGroup?(o&&(e=e.slice(),o=!1),this._extractNonGroupLayers(i,e),r=e.length):(this._arraySplice(this._needsClustering,i),s.removeLayer(i),this.hasLayer(i)&&this._needsRemoving.push({layer:i,latlng:i._latlng}),this.fire(\"layerremove\",{layer:i}));return this}if(this._unspiderfy){this._unspiderfy();var a=e.slice(),h=r;for(t=0;t<h;t++)(i=a[t])instanceof L.LayerGroup?(this._extractNonGroupLayers(i,a),h=a.length):this._unspiderfyLayer(i)}for(t=0;t<r;t++)(i=e[t])instanceof L.LayerGroup?(o&&(e=e.slice(),o=!1),this._extractNonGroupLayers(i,e),r=e.length):i.__parent?(this._removeLayer(i,!0,!0),this.fire(\"layerremove\",{layer:i}),n.hasLayer(i)&&(n.removeLayer(i),i.clusterShow&&i.clusterShow())):(s.removeLayer(i),this.fire(\"layerremove\",{layer:i}));return this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,this._currentShownBounds),this},clearLayers:function(){return this._map||(this._needsClustering=[],this._needsRemoving=[],delete this._gridClusters,delete this._gridUnclustered),this._noanimationUnspiderfy&&this._noanimationUnspiderfy(),this._featureGroup.clearLayers(),this._nonPointGroup.clearLayers(),this.eachLayer(function(e){e.off(this._childMarkerEventHandlers,this),delete e.__parent},this),this._map&&this._generateInitialClusters(),this},getBounds:function(){var e=new L.LatLngBounds;this._topClusterLevel&&e.extend(this._topClusterLevel._bounds);for(var t=this._needsClustering.length-1;0<=t;t--)e.extend(this._needsClustering[t].getLatLng());return e.extend(this._nonPointGroup.getBounds()),e},eachLayer:function(e,t){var i,r,n,s=this._needsClustering.slice(),o=this._needsRemoving;for(this._topClusterLevel&&this._topClusterLevel.getAllChildMarkers(s),r=s.length-1;0<=r;r--){for(i=!0,n=o.length-1;0<=n;n--)if(o[n].layer===s[r]){i=!1;break}i&&e.call(t,s[r])}this._nonPointGroup.eachLayer(e,t)},getLayers:function(){var t=[];return this.eachLayer(function(e){t.push(e)}),t},getLayer:function(t){var i=null;return t=parseInt(t,10),this.eachLayer(function(e){L.stamp(e)===t&&(i=e)}),i},hasLayer:function(e){if(!e)return!1;var t,i=this._needsClustering;for(t=i.length-1;0<=t;t--)if(i[t]===e)return!0;for(t=(i=this._needsRemoving).length-1;0<=t;t--)if(i[t].layer===e)return!1;return!(!e.__parent||e.__parent._group!==this)||this._nonPointGroup.hasLayer(e)},zoomToShowLayer:function(e,t){var i=this._map;\"function\"!=typeof t&&(t=function(){});var r=function(){!i.hasLayer(e)&&!i.hasLayer(e.__parent)||this._inZoomAnimation||(this._map.off(\"moveend\",r,this),this.off(\"animationend\",r,this),i.hasLayer(e)?t():e.__parent._icon&&(this.once(\"spiderfied\",t,this),e.__parent.spiderfy()))};e._icon&&this._map.getBounds().contains(e.getLatLng())?t():e.__parent._zoom<Math.round(this._map._zoom)?(this._map.on(\"moveend\",r,this),this._map.panTo(e.getLatLng())):(this._map.on(\"moveend\",r,this),this.on(\"animationend\",r,this),e.__parent.zoomToBounds())},onAdd:function(e){var t,i,r;if(this._map=e,!isFinite(this._map.getMaxZoom()))throw\"Map has no maxZoom specified\";for(this._featureGroup.addTo(e),this._nonPointGroup.addTo(e),this._gridClusters||this._generateInitialClusters(),this._maxLat=e.options.crs.projection.MAX_LATITUDE,t=0,i=this._needsRemoving.length;t<i;t++)(r=this._needsRemoving[t]).newlatlng=r.layer._latlng,r.layer._latlng=r.latlng;for(t=0,i=this._needsRemoving.length;t<i;t++)r=this._needsRemoving[t],this._removeLayer(r.layer,!0),r.layer._latlng=r.newlatlng;this._needsRemoving=[],this._zoom=Math.round(this._map._zoom),this._currentShownBounds=this._getExpandedVisibleBounds(),this._map.on(\"zoomend\",this._zoomEnd,this),this._map.on(\"moveend\",this._moveEnd,this),this._spiderfierOnAdd&&this._spiderfierOnAdd(),this._bindEvents(),i=this._needsClustering,this._needsClustering=[],this.addLayers(i,!0)},onRemove:function(e){e.off(\"zoomend\",this._zoomEnd,this),e.off(\"moveend\",this._moveEnd,this),this._unbindEvents(),this._map._mapPane.className=this._map._mapPane.className.replace(\" leaflet-cluster-anim\",\"\"),this._spiderfierOnRemove&&this._spiderfierOnRemove(),delete this._maxLat,this._hideCoverage(),this._featureGroup.remove(),this._nonPointGroup.remove(),this._featureGroup.clearLayers(),this._map=null},getVisibleParent:function(e){for(var t=e;t&&!t._icon;)t=t.__parent;return t||null},_arraySplice:function(e,t){for(var i=e.length-1;0<=i;i--)if(e[i]===t)return e.splice(i,1),!0},_removeFromGridUnclustered:function(e,t){for(var i=this._map,r=this._gridUnclustered,n=Math.floor(this._map.getMinZoom());n<=t&&r[t].removeObject(e,i.project(e.getLatLng(),t));t--);},_childMarkerDragStart:function(e){e.target.__dragStart=e.target._latlng},_childMarkerMoved:function(e){if(!this._ignoreMove&&!e.target.__dragStart){var t=e.target._popup&&e.target._popup.isOpen();this._moveChild(e.target,e.oldLatLng,e.latlng),t&&e.target.openPopup()}},_moveChild:function(e,t,i){e._latlng=t,this.removeLayer(e),e._latlng=i,this.addLayer(e)},_childMarkerDragEnd:function(e){var t=e.target.__dragStart;delete e.target.__dragStart,t&&this._moveChild(e.target,t,e.target._latlng)},_removeLayer:function(e,t,i){var r=this._gridClusters,n=this._gridUnclustered,s=this._featureGroup,o=this._map,a=Math.floor(this._map.getMinZoom());t&&this._removeFromGridUnclustered(e,this._maxZoom);var h,l=e.__parent,u=l._markers;for(this._arraySplice(u,e);l&&(l._childCount--,l._boundsNeedUpdate=!0,!(l._zoom<a));)t&&l._childCount<=1?(h=l._markers[0]===e?l._markers[1]:l._markers[0],r[l._zoom].removeObject(l,o.project(l._cLatLng,l._zoom)),n[l._zoom].addObject(h,o.project(h.getLatLng(),l._zoom)),this._arraySplice(l.__parent._childClusters,l),l.__parent._markers.push(h),h.__parent=l.__parent,l._icon&&(s.removeLayer(l),i||s.addLayer(h))):l._iconNeedsUpdate=!0,l=l.__parent;delete e.__parent},_isOrIsParent:function(e,t){for(;t;){if(e===t)return!0;t=t.parentNode}return!1},fire:function(e,t,i){if(t&&t.layer instanceof L.MarkerCluster){if(t.originalEvent&&this._isOrIsParent(t.layer._icon,t.originalEvent.relatedTarget))return;e=\"cluster\"+e}L.FeatureGroup.prototype.fire.call(this,e,t,i)},listens:function(e,t){return L.FeatureGroup.prototype.listens.call(this,e,t)||L.FeatureGroup.prototype.listens.call(this,\"cluster\"+e,t)},_defaultIconCreateFunction:function(e){var t=e.getChildCount(),i=\" marker-cluster-\";return i+=t<10?\"small\":t<100?\"medium\":\"large\",new L.DivIcon({html:\"<div><span>\"+t+\"</span></div>\",className:\"marker-cluster\"+i,iconSize:new L.Point(40,40)})},_bindEvents:function(){var e=this._map,t=this.options.spiderfyOnMaxZoom,i=this.options.showCoverageOnHover,r=this.options.zoomToBoundsOnClick,n=this.options.spiderfyOnEveryZoom;(t||r||n)&&this.on(\"clusterclick clusterkeypress\",this._zoomOrSpiderfy,this),i&&(this.on(\"clustermouseover\",this._showCoverage,this),this.on(\"clustermouseout\",this._hideCoverage,this),e.on(\"zoomend\",this._hideCoverage,this))},_zoomOrSpiderfy:function(e){var t=e.layer,i=t;if(\"clusterkeypress\"!==e.type||!e.originalEvent||13===e.originalEvent.keyCode){for(;1===i._childClusters.length;)i=i._childClusters[0];i._zoom===this._maxZoom&&i._childCount===t._childCount&&this.options.spiderfyOnMaxZoom?t.spiderfy():this.options.zoomToBoundsOnClick&&t.zoomToBounds(),this.options.spiderfyOnEveryZoom&&t.spiderfy(),e.originalEvent&&13===e.originalEvent.keyCode&&this._map._container.focus()}},_showCoverage:function(e){var t=this._map;this._inZoomAnimation||(this._shownPolygon&&t.removeLayer(this._shownPolygon),2<e.layer.getChildCount()&&e.layer!==this._spiderfied&&(this._shownPolygon=new L.Polygon(e.layer.getConvexHull(),this.options.polygonOptions),t.addLayer(this._shownPolygon)))},_hideCoverage:function(){this._shownPolygon&&(this._map.removeLayer(this._shownPolygon),this._shownPolygon=null)},_unbindEvents:function(){var e=this.options.spiderfyOnMaxZoom,t=this.options.showCoverageOnHover,i=this.options.zoomToBoundsOnClick,r=this.options.spiderfyOnEveryZoom,n=this._map;(e||i||r)&&this.off(\"clusterclick clusterkeypress\",this._zoomOrSpiderfy,this),t&&(this.off(\"clustermouseover\",this._showCoverage,this),this.off(\"clustermouseout\",this._hideCoverage,this),n.off(\"zoomend\",this._hideCoverage,this))},_zoomEnd:function(){this._map&&(this._mergeSplitClusters(),this._zoom=Math.round(this._map._zoom),this._currentShownBounds=this._getExpandedVisibleBounds())},_moveEnd:function(){if(!this._inZoomAnimation){var e=this._getExpandedVisibleBounds();this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),this._zoom,e),this._topClusterLevel._recursivelyAddChildrenToMap(null,Math.round(this._map._zoom),e),this._currentShownBounds=e}},_generateInitialClusters:function(){var e=Math.ceil(this._map.getMaxZoom()),t=Math.floor(this._map.getMinZoom()),i=this.options.maxClusterRadius,r=i;\"function\"!=typeof i&&(r=function(){return i}),null!==this.options.disableClusteringAtZoom&&(e=this.options.disableClusteringAtZoom-1),this._maxZoom=e,this._gridClusters={},this._gridUnclustered={};for(var n=e;t<=n;n--)this._gridClusters[n]=new L.DistanceGrid(r(n)),this._gridUnclustered[n]=new L.DistanceGrid(r(n));this._topClusterLevel=new this._markerCluster(this,t-1)},_addLayer:function(e,t){var i,r,n=this._gridClusters,s=this._gridUnclustered,o=Math.floor(this._map.getMinZoom());for(this.options.singleMarkerMode&&this._overrideMarkerIcon(e),e.on(this._childMarkerEventHandlers,this);o<=t;t--){i=this._map.project(e.getLatLng(),t);var a=n[t].getNearObject(i);if(a)return a._addChild(e),void(e.__parent=a);if(a=s[t].getNearObject(i)){var h=a.__parent;h&&this._removeLayer(a,!1);var l=new this._markerCluster(this,t,a,e);n[t].addObject(l,this._map.project(l._cLatLng,t)),a.__parent=l;var u=e.__parent=l;for(r=t-1;r>h._zoom;r--)u=new this._markerCluster(this,r,u),n[r].addObject(u,this._map.project(a.getLatLng(),r));return h._addChild(u),void this._removeFromGridUnclustered(a,t)}s[t].addObject(e,i)}this._topClusterLevel._addChild(e),e.__parent=this._topClusterLevel},_refreshClustersIcons:function(){this._featureGroup.eachLayer(function(e){e instanceof L.MarkerCluster&&e._iconNeedsUpdate&&e._updateIcon()})},_enqueue:function(e){this._queue.push(e),this._queueTimeout||(this._queueTimeout=setTimeout(L.bind(this._processQueue,this),300))},_processQueue:function(){for(var e=0;e<this._queue.length;e++)this._queue[e].call(this);this._queue.length=0,clearTimeout(this._queueTimeout),this._queueTimeout=null},_mergeSplitClusters:function(){var e=Math.round(this._map._zoom);this._processQueue(),this._zoom<e&&this._currentShownBounds.intersects(this._getExpandedVisibleBounds())?(this._animationStart(),this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),this._zoom,this._getExpandedVisibleBounds()),this._animationZoomIn(this._zoom,e)):this._zoom>e?(this._animationStart(),this._animationZoomOut(this._zoom,e)):this._moveEnd()},_getExpandedVisibleBounds:function(){return this.options.removeOutsideVisibleBounds?L.Browser.mobile?this._checkBoundsMaxLat(this._map.getBounds()):this._checkBoundsMaxLat(this._map.getBounds().pad(1)):this._mapBoundsInfinite},_checkBoundsMaxLat:function(e){var t=this._maxLat;return void 0!==t&&(e.getNorth()>=t&&(e._northEast.lat=1/0),e.getSouth()<=-t&&(e._southWest.lat=-1/0)),e},_animationAddLayerNonAnimated:function(e,t){if(t===e)this._featureGroup.addLayer(e);else if(2===t._childCount){t._addToMap();var i=t.getAllChildMarkers();this._featureGroup.removeLayer(i[0]),this._featureGroup.removeLayer(i[1])}else t._updateIcon()},_extractNonGroupLayers:function(e,t){var i,r=e.getLayers(),n=0;for(t=t||[];n<r.length;n++)(i=r[n])instanceof L.LayerGroup?this._extractNonGroupLayers(i,t):t.push(i);return t},_overrideMarkerIcon:function(e){return e.options.icon=this.options.iconCreateFunction({getChildCount:function(){return 1},getAllChildMarkers:function(){return[e]}})}});L.MarkerClusterGroup.include({_mapBoundsInfinite:new L.LatLngBounds(new L.LatLng(-1/0,-1/0),new L.LatLng(1/0,1/0))}),L.MarkerClusterGroup.include({_noAnimation:{_animationStart:function(){},_animationZoomIn:function(e,t){this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),e),this._topClusterLevel._recursivelyAddChildrenToMap(null,t,this._getExpandedVisibleBounds()),this.fire(\"animationend\")},_animationZoomOut:function(e,t){this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),e),this._topClusterLevel._recursivelyAddChildrenToMap(null,t,this._getExpandedVisibleBounds()),this.fire(\"animationend\")},_animationAddLayer:function(e,t){this._animationAddLayerNonAnimated(e,t)}},_withAnimation:{_animationStart:function(){this._map._mapPane.className+=\" leaflet-cluster-anim\",this._inZoomAnimation++},_animationZoomIn:function(n,s){var o,a=this._getExpandedVisibleBounds(),h=this._featureGroup,e=Math.floor(this._map.getMinZoom());this._ignoreMove=!0,this._topClusterLevel._recursively(a,n,e,function(e){var t,i=e._latlng,r=e._markers;for(a.contains(i)||(i=null),e._isSingleParent()&&n+1===s?(h.removeLayer(e),e._recursivelyAddChildrenToMap(null,s,a)):(e.clusterHide(),e._recursivelyAddChildrenToMap(i,s,a)),o=r.length-1;0<=o;o--)t=r[o],a.contains(t._latlng)||h.removeLayer(t)}),this._forceLayout(),this._topClusterLevel._recursivelyBecomeVisible(a,s),h.eachLayer(function(e){e instanceof L.MarkerCluster||!e._icon||e.clusterShow()}),this._topClusterLevel._recursively(a,n,s,function(e){e._recursivelyRestoreChildPositions(s)}),this._ignoreMove=!1,this._enqueue(function(){this._topClusterLevel._recursively(a,n,e,function(e){h.removeLayer(e),e.clusterShow()}),this._animationEnd()})},_animationZoomOut:function(e,t){this._animationZoomOutSingle(this._topClusterLevel,e-1,t),this._topClusterLevel._recursivelyAddChildrenToMap(null,t,this._getExpandedVisibleBounds()),this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),e,this._getExpandedVisibleBounds())},_animationAddLayer:function(e,t){var i=this,r=this._featureGroup;r.addLayer(e),t!==e&&(2<t._childCount?(t._updateIcon(),this._forceLayout(),this._animationStart(),e._setPos(this._map.latLngToLayerPoint(t.getLatLng())),e.clusterHide(),this._enqueue(function(){r.removeLayer(e),e.clusterShow(),i._animationEnd()})):(this._forceLayout(),i._animationStart(),i._animationZoomOutSingle(t,this._map.getMaxZoom(),this._zoom)))}},_animationZoomOutSingle:function(t,i,r){var n=this._getExpandedVisibleBounds(),s=Math.floor(this._map.getMinZoom());t._recursivelyAnimateChildrenInAndAddSelfToMap(n,s,i+1,r);var o=this;this._forceLayout(),t._recursivelyBecomeVisible(n,r),this._enqueue(function(){if(1===t._childCount){var e=t._markers[0];this._ignoreMove=!0,e.setLatLng(e.getLatLng()),this._ignoreMove=!1,e.clusterShow&&e.clusterShow()}else t._recursively(n,r,s,function(e){e._recursivelyRemoveChildrenFromMap(n,s,i+1)});o._animationEnd()})},_animationEnd:function(){this._map&&(this._map._mapPane.className=this._map._mapPane.className.replace(\" leaflet-cluster-anim\",\"\")),this._inZoomAnimation--,this.fire(\"animationend\")},_forceLayout:function(){L.Util.falseFn(document.body.offsetWidth)}}),L.markerClusterGroup=function(e){return new L.MarkerClusterGroup(e)};var i=L.MarkerCluster=L.Marker.extend({options:L.Icon.prototype.options,initialize:function(e,t,i,r){L.Marker.prototype.initialize.call(this,i?i._cLatLng||i.getLatLng():new L.LatLng(0,0),{icon:this,pane:e.options.clusterPane}),this._group=e,this._zoom=t,this._markers=[],this._childClusters=[],this._childCount=0,this._iconNeedsUpdate=!0,this._boundsNeedUpdate=!0,this._bounds=new L.LatLngBounds,i&&this._addChild(i),r&&this._addChild(r)},getAllChildMarkers:function(e,t){e=e||[];for(var i=this._childClusters.length-1;0<=i;i--)this._childClusters[i].getAllChildMarkers(e,t);for(var r=this._markers.length-1;0<=r;r--)t&&this._markers[r].__dragStart||e.push(this._markers[r]);return e},getChildCount:function(){return this._childCount},zoomToBounds:function(e){for(var t,i=this._childClusters.slice(),r=this._group._map,n=r.getBoundsZoom(this._bounds),s=this._zoom+1,o=r.getZoom();0<i.length&&s<n;){s++;var a=[];for(t=0;t<i.length;t++)a=a.concat(i[t]._childClusters);i=a}s<n?this._group._map.setView(this._latlng,s):n<=o?this._group._map.setView(this._latlng,o+1):this._group._map.fitBounds(this._bounds,e)},getBounds:function(){var e=new L.LatLngBounds;return e.extend(this._bounds),e},_updateIcon:function(){this._iconNeedsUpdate=!0,this._icon&&this.setIcon(this)},createIcon:function(){return this._iconNeedsUpdate&&(this._iconObj=this._group.options.iconCreateFunction(this),this._iconNeedsUpdate=!1),this._iconObj.createIcon()},createShadow:function(){return this._iconObj.createShadow()},_addChild:function(e,t){this._iconNeedsUpdate=!0,this._boundsNeedUpdate=!0,this._setClusterCenter(e),e instanceof L.MarkerCluster?(t||(this._childClusters.push(e),e.__parent=this),this._childCount+=e._childCount):(t||this._markers.push(e),this._childCount++),this.__parent&&this.__parent._addChild(e,!0)},_setClusterCenter:function(e){this._cLatLng||(this._cLatLng=e._cLatLng||e._latlng)},_resetBounds:function(){var e=this._bounds;e._southWest&&(e._southWest.lat=1/0,e._southWest.lng=1/0),e._northEast&&(e._northEast.lat=-1/0,e._northEast.lng=-1/0)},_recalculateBounds:function(){var e,t,i,r,n=this._markers,s=this._childClusters,o=0,a=0,h=this._childCount;if(0!==h){for(this._resetBounds(),e=0;e<n.length;e++)i=n[e]._latlng,this._bounds.extend(i),o+=i.lat,a+=i.lng;for(e=0;e<s.length;e++)(t=s[e])._boundsNeedUpdate&&t._recalculateBounds(),this._bounds.extend(t._bounds),i=t._wLatLng,r=t._childCount,o+=i.lat*r,a+=i.lng*r;this._latlng=this._wLatLng=new L.LatLng(o/h,a/h),this._boundsNeedUpdate=!1}},_addToMap:function(e){e&&(this._backupLatlng=this._latlng,this.setLatLng(e)),this._group._featureGroup.addLayer(this)},_recursivelyAnimateChildrenIn:function(e,n,t){this._recursively(e,this._group._map.getMinZoom(),t-1,function(e){var t,i,r=e._markers;for(t=r.length-1;0<=t;t--)(i=r[t])._icon&&(i._setPos(n),i.clusterHide())},function(e){var t,i,r=e._childClusters;for(t=r.length-1;0<=t;t--)(i=r[t])._icon&&(i._setPos(n),i.clusterHide())})},_recursivelyAnimateChildrenInAndAddSelfToMap:function(t,i,r,n){this._recursively(t,n,i,function(e){e._recursivelyAnimateChildrenIn(t,e._group._map.latLngToLayerPoint(e.getLatLng()).round(),r),e._isSingleParent()&&r-1===n?(e.clusterShow(),e._recursivelyRemoveChildrenFromMap(t,i,r)):e.clusterHide(),e._addToMap()})},_recursivelyBecomeVisible:function(e,t){this._recursively(e,this._group._map.getMinZoom(),t,null,function(e){e.clusterShow()})},_recursivelyAddChildrenToMap:function(r,n,s){this._recursively(s,this._group._map.getMinZoom()-1,n,function(e){if(n!==e._zoom)for(var t=e._markers.length-1;0<=t;t--){var i=e._markers[t];s.contains(i._latlng)&&(r&&(i._backupLatlng=i.getLatLng(),i.setLatLng(r),i.clusterHide&&i.clusterHide()),e._group._featureGroup.addLayer(i))}},function(e){e._addToMap(r)})},_recursivelyRestoreChildPositions:function(e){for(var t=this._markers.length-1;0<=t;t--){var i=this._markers[t];i._backupLatlng&&(i.setLatLng(i._backupLatlng),delete i._backupLatlng)}if(e-1===this._zoom)for(var r=this._childClusters.length-1;0<=r;r--)this._childClusters[r]._restorePosition();else for(var n=this._childClusters.length-1;0<=n;n--)this._childClusters[n]._recursivelyRestoreChildPositions(e)},_restorePosition:function(){this._backupLatlng&&(this.setLatLng(this._backupLatlng),delete this._backupLatlng)},_recursivelyRemoveChildrenFromMap:function(e,t,i,r){var n,s;this._recursively(e,t-1,i-1,function(e){for(s=e._markers.length-1;0<=s;s--)n=e._markers[s],r&&r.contains(n._latlng)||(e._group._featureGroup.removeLayer(n),n.clusterShow&&n.clusterShow())},function(e){for(s=e._childClusters.length-1;0<=s;s--)n=e._childClusters[s],r&&r.contains(n._latlng)||(e._group._featureGroup.removeLayer(n),n.clusterShow&&n.clusterShow())})},_recursively:function(e,t,i,r,n){var s,o,a=this._childClusters,h=this._zoom;if(t<=h&&(r&&r(this),n&&h===i&&n(this)),h<t||h<i)for(s=a.length-1;0<=s;s--)(o=a[s])._boundsNeedUpdate&&o._recalculateBounds(),e.intersects(o._bounds)&&o._recursively(e,t,i,r,n)},_isSingleParent:function(){return 0<this._childClusters.length&&this._childClusters[0]._childCount===this._childCount}});L.Marker.include({clusterHide:function(){var e=this.options.opacity;return this.setOpacity(0),this.options.opacity=e,this},clusterShow:function(){return this.setOpacity(this.options.opacity)}}),L.DistanceGrid=function(e){this._cellSize=e,this._sqCellSize=e*e,this._grid={},this._objectPoint={}},L.DistanceGrid.prototype={addObject:function(e,t){var i=this._getCoord(t.x),r=this._getCoord(t.y),n=this._grid,s=n[r]=n[r]||{},o=s[i]=s[i]||[],a=L.Util.stamp(e);this._objectPoint[a]=t,o.push(e)},updateObject:function(e,t){this.removeObject(e),this.addObject(e,t)},removeObject:function(e,t){var i,r,n=this._getCoord(t.x),s=this._getCoord(t.y),o=this._grid,a=o[s]=o[s]||{},h=a[n]=a[n]||[];for(delete this._objectPoint[L.Util.stamp(e)],i=0,r=h.length;i<r;i++)if(h[i]===e)return h.splice(i,1),1===r&&delete a[n],!0},eachObject:function(e,t){var i,r,n,s,o,a,h=this._grid;for(i in h)for(r in o=h[i])for(n=0,s=(a=o[r]).length;n<s;n++)e.call(t,a[n])&&(n--,s--)},getNearObject:function(e){var t,i,r,n,s,o,a,h,l=this._getCoord(e.x),u=this._getCoord(e.y),_=this._objectPoint,d=this._sqCellSize,p=null;for(t=u-1;t<=u+1;t++)if(n=this._grid[t])for(i=l-1;i<=l+1;i++)if(s=n[i])for(r=0,o=s.length;r<o;r++)a=s[r],((h=this._sqDist(_[L.Util.stamp(a)],e))<d||h<=d&&null===p)&&(d=h,p=a);return p},_getCoord:function(e){var t=Math.floor(e/this._cellSize);return isFinite(t)?t:e},_sqDist:function(e,t){var i=t.x-e.x,r=t.y-e.y;return i*i+r*r}},L.QuickHull={getDistant:function(e,t){var i=t[1].lat-t[0].lat;return(t[0].lng-t[1].lng)*(e.lat-t[0].lat)+i*(e.lng-t[0].lng)},findMostDistantPointFromBaseLine:function(e,t){var i,r,n,s=0,o=null,a=[];for(i=t.length-1;0<=i;i--)r=t[i],0<(n=this.getDistant(r,e))&&(a.push(r),s<n&&(s=n,o=r));return{maxPoint:o,newPoints:a}},buildConvexHull:function(e,t){var i=[],r=this.findMostDistantPointFromBaseLine(e,t);return r.maxPoint?i=(i=i.concat(this.buildConvexHull([e[0],r.maxPoint],r.newPoints))).concat(this.buildConvexHull([r.maxPoint,e[1]],r.newPoints)):[e[0]]},getConvexHull:function(e){var t,i=!1,r=!1,n=!1,s=!1,o=null,a=null,h=null,l=null,u=null,_=null;for(t=e.length-1;0<=t;t--){var d=e[t];(!1===i||d.lat>i)&&(i=(o=d).lat),(!1===r||d.lat<r)&&(r=(a=d).lat),(!1===n||d.lng>n)&&(n=(h=d).lng),(!1===s||d.lng<s)&&(s=(l=d).lng)}return u=r!==i?(_=a,o):(_=l,h),[].concat(this.buildConvexHull([_,u],e),this.buildConvexHull([u,_],e))}},L.MarkerCluster.include({getConvexHull:function(){var e,t,i=this.getAllChildMarkers(),r=[];for(t=i.length-1;0<=t;t--)e=i[t].getLatLng(),r.push(e);return L.QuickHull.getConvexHull(r)}}),L.MarkerCluster.include({_2PI:2*Math.PI,_circleFootSeparation:25,_circleStartAngle:0,_spiralFootSeparation:28,_spiralLengthStart:11,_spiralLengthFactor:5,_circleSpiralSwitchover:9,spiderfy:function(){if(this._group._spiderfied!==this&&!this._group._inZoomAnimation){var e,t=this.getAllChildMarkers(null,!0),i=this._group._map.latLngToLayerPoint(this._latlng);this._group._unspiderfy(),e=(this._group._spiderfied=this)._group.options.spiderfyShapePositions?this._group.options.spiderfyShapePositions(t.length,i):t.length>=this._circleSpiralSwitchover?this._generatePointsSpiral(t.length,i):(i.y+=10,this._generatePointsCircle(t.length,i)),this._animationSpiderfy(t,e)}},unspiderfy:function(e){this._group._inZoomAnimation||(this._animationUnspiderfy(e),this._group._spiderfied=null)},_generatePointsCircle:function(e,t){var i,r,n=this._group.options.spiderfyDistanceMultiplier*this._circleFootSeparation*(2+e)/this._2PI,s=this._2PI/e,o=[];for(n=Math.max(n,35),o.length=e,i=0;i<e;i++)r=this._circleStartAngle+i*s,o[i]=new L.Point(t.x+n*Math.cos(r),t.y+n*Math.sin(r))._round();return o},_generatePointsSpiral:function(e,t){var i,r=this._group.options.spiderfyDistanceMultiplier,n=r*this._spiralLengthStart,s=r*this._spiralFootSeparation,o=r*this._spiralLengthFactor*this._2PI,a=0,h=[];for(i=h.length=e;0<=i;i--)i<e&&(h[i]=new L.Point(t.x+n*Math.cos(a),t.y+n*Math.sin(a))._round()),n+=o/(a+=s/n+5e-4*i);return h},_noanimationUnspiderfy:function(){var e,t,i=this._group,r=i._map,n=i._featureGroup,s=this.getAllChildMarkers(null,!0);for(i._ignoreMove=!0,this.setOpacity(1),t=s.length-1;0<=t;t--)e=s[t],n.removeLayer(e),e._preSpiderfyLatlng&&(e.setLatLng(e._preSpiderfyLatlng),delete e._preSpiderfyLatlng),e.setZIndexOffset&&e.setZIndexOffset(0),e._spiderLeg&&(r.removeLayer(e._spiderLeg),delete e._spiderLeg);i.fire(\"unspiderfied\",{cluster:this,markers:s}),i._ignoreMove=!1,i._spiderfied=null}}),L.MarkerClusterNonAnimated=L.MarkerCluster.extend({_animationSpiderfy:function(e,t){var i,r,n,s,o=this._group,a=o._map,h=o._featureGroup,l=this._group.options.spiderLegPolylineOptions;for(o._ignoreMove=!0,i=0;i<e.length;i++)s=a.layerPointToLatLng(t[i]),r=e[i],n=new L.Polyline([this._latlng,s],l),a.addLayer(n),r._spiderLeg=n,r._preSpiderfyLatlng=r._latlng,r.setLatLng(s),r.setZIndexOffset&&r.setZIndexOffset(1e6),h.addLayer(r);this.setOpacity(.3),o._ignoreMove=!1,o.fire(\"spiderfied\",{cluster:this,markers:e})},_animationUnspiderfy:function(){this._noanimationUnspiderfy()}}),L.MarkerCluster.include({_animationSpiderfy:function(e,t){var i,r,n,s,o,a,h=this,l=this._group,u=l._map,_=l._featureGroup,d=this._latlng,p=u.latLngToLayerPoint(d),c=L.Path.SVG,f=L.extend({},this._group.options.spiderLegPolylineOptions),m=f.opacity;for(void 0===m&&(m=L.MarkerClusterGroup.prototype.options.spiderLegPolylineOptions.opacity),c?(f.opacity=0,f.className=(f.className||\"\")+\" leaflet-cluster-spider-leg\"):f.opacity=m,l._ignoreMove=!0,i=0;i<e.length;i++)r=e[i],a=u.layerPointToLatLng(t[i]),n=new L.Polyline([d,a],f),u.addLayer(n),r._spiderLeg=n,c&&(o=(s=n._path).getTotalLength()+.1,s.style.strokeDasharray=o,s.style.strokeDashoffset=o),r.setZIndexOffset&&r.setZIndexOffset(1e6),r.clusterHide&&r.clusterHide(),_.addLayer(r),r._setPos&&r._setPos(p);for(l._forceLayout(),l._animationStart(),i=e.length-1;0<=i;i--)a=u.layerPointToLatLng(t[i]),(r=e[i])._preSpiderfyLatlng=r._latlng,r.setLatLng(a),r.clusterShow&&r.clusterShow(),c&&((s=(n=r._spiderLeg)._path).style.strokeDashoffset=0,n.setStyle({opacity:m}));this.setOpacity(.3),l._ignoreMove=!1,setTimeout(function(){l._animationEnd(),l.fire(\"spiderfied\",{cluster:h,markers:e})},200)},_animationUnspiderfy:function(e){var t,i,r,n,s,o,a=this,h=this._group,l=h._map,u=h._featureGroup,_=e?l._latLngToNewLayerPoint(this._latlng,e.zoom,e.center):l.latLngToLayerPoint(this._latlng),d=this.getAllChildMarkers(null,!0),p=L.Path.SVG;for(h._ignoreMove=!0,h._animationStart(),this.setOpacity(1),i=d.length-1;0<=i;i--)(t=d[i])._preSpiderfyLatlng&&(t.closePopup(),t.setLatLng(t._preSpiderfyLatlng),delete t._preSpiderfyLatlng,o=!0,t._setPos&&(t._setPos(_),o=!1),t.clusterHide&&(t.clusterHide(),o=!1),o&&u.removeLayer(t),p&&(s=(n=(r=t._spiderLeg)._path).getTotalLength()+.1,n.style.strokeDashoffset=s,r.setStyle({opacity:0})));h._ignoreMove=!1,setTimeout(function(){var e=0;for(i=d.length-1;0<=i;i--)(t=d[i])._spiderLeg&&e++;for(i=d.length-1;0<=i;i--)(t=d[i])._spiderLeg&&(t.clusterShow&&t.clusterShow(),t.setZIndexOffset&&t.setZIndexOffset(0),1<e&&u.removeLayer(t),l.removeLayer(t._spiderLeg),delete t._spiderLeg);h._animationEnd(),h.fire(\"unspiderfied\",{cluster:a,markers:d})},200)}}),L.MarkerClusterGroup.include({_spiderfied:null,unspiderfy:function(){this._unspiderfy.apply(this,arguments)},_spiderfierOnAdd:function(){this._map.on(\"click\",this._unspiderfyWrapper,this),this._map.options.zoomAnimation&&this._map.on(\"zoomstart\",this._unspiderfyZoomStart,this),this._map.on(\"zoomend\",this._noanimationUnspiderfy,this),L.Browser.touch||this._map.getRenderer(this)},_spiderfierOnRemove:function(){this._map.off(\"click\",this._unspiderfyWrapper,this),this._map.off(\"zoomstart\",this._unspiderfyZoomStart,this),this._map.off(\"zoomanim\",this._unspiderfyZoomAnim,this),this._map.off(\"zoomend\",this._noanimationUnspiderfy,this),this._noanimationUnspiderfy()},_unspiderfyZoomStart:function(){this._map&&this._map.on(\"zoomanim\",this._unspiderfyZoomAnim,this)},_unspiderfyZoomAnim:function(e){L.DomUtil.hasClass(this._map._mapPane,\"leaflet-touching\")||(this._map.off(\"zoomanim\",this._unspiderfyZoomAnim,this),this._unspiderfy(e))},_unspiderfyWrapper:function(){this._unspiderfy()},_unspiderfy:function(e){this._spiderfied&&this._spiderfied.unspiderfy(e)},_noanimationUnspiderfy:function(){this._spiderfied&&this._spiderfied._noanimationUnspiderfy()},_unspiderfyLayer:function(e){e._spiderLeg&&(this._featureGroup.removeLayer(e),e.clusterShow&&e.clusterShow(),e.setZIndexOffset&&e.setZIndexOffset(0),this._map.removeLayer(e._spiderLeg),delete e._spiderLeg)}}),L.MarkerClusterGroup.include({refreshClusters:function(e){return e?e instanceof L.MarkerClusterGroup?e=e._topClusterLevel.getAllChildMarkers():e instanceof L.LayerGroup?e=e._layers:e instanceof L.MarkerCluster?e=e.getAllChildMarkers():e instanceof L.Marker&&(e=[e]):e=this._topClusterLevel.getAllChildMarkers(),this._flagParentsIconsNeedUpdate(e),this._refreshClustersIcons(),this.options.singleMarkerMode&&this._refreshSingleMarkerModeMarkers(e),this},_flagParentsIconsNeedUpdate:function(e){var t,i;for(t in e)for(i=e[t].__parent;i;)i._iconNeedsUpdate=!0,i=i.__parent},_refreshSingleMarkerModeMarkers:function(e){var t,i;for(t in e)i=e[t],this.hasLayer(i)&&i.setIcon(this._overrideMarkerIcon(i))}}),L.Marker.include({refreshIconOptions:function(e,t){var i=this.options.icon;return L.setOptions(i,e),this.setIcon(i),t&&this.__parent&&this.__parent._group.refreshClusters(this),this}}),e.MarkerClusterGroup=t,e.MarkerCluster=i,Object.defineProperty(e,\"__esModule\",{value:!0})});\n//# sourceMappingURL=leaflet.markercluster.js.map","/* @preserve\n * Leaflet 1.8.0, a JS library for interactive maps. https://leafletjs.com\n * (c) 2010-2022 Vladimir Agafonkin, (c) 2010-2011 CloudMade\n */\n!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?i(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],i):i((t=\"undefined\"!=typeof globalThis?globalThis:t||self).leaflet={})}(this,function(t){\"use strict\";function l(t){for(var i,e,n=1,o=arguments.length;n<o;n++)for(i in e=arguments[n])t[i]=e[i];return t}var R=Object.create||function(t){return N.prototype=t,new N};function N(){}function a(t,i){var e=Array.prototype.slice;if(t.bind)return t.bind.apply(t,e.call(arguments,1));var n=e.call(arguments,2);return function(){return t.apply(i,n.length?n.concat(e.call(arguments)):arguments)}}var D=0;function h(t){return\"_leaflet_id\"in t||(t._leaflet_id=++D),t._leaflet_id}function j(t,i,e){var n,o,s=function(){n=!1,o&&(r.apply(e,o),o=!1)},r=function(){n?o=arguments:(t.apply(e,arguments),setTimeout(s,i),n=!0)};return r}function H(t,i,e){var n=i[1],i=i[0],o=n-i;return t===n&&e?t:((t-i)%o+o)%o+i}function u(){return!1}function e(t,i){if(!1===i)return t;i=Math.pow(10,void 0===i?6:i);return Math.round(t*i)/i}function W(t){return t.trim?t.trim():t.replace(/^\\s+|\\s+$/g,\"\")}function F(t){return W(t).split(/\\s+/)}function c(t,i){for(var e in Object.prototype.hasOwnProperty.call(t,\"options\")||(t.options=t.options?R(t.options):{}),i)t.options[e]=i[e];return t.options}function U(t,i,e){var n,o=[];for(n in t)o.push(encodeURIComponent(e?n.toUpperCase():n)+\"=\"+encodeURIComponent(t[n]));return(i&&-1!==i.indexOf(\"?\")?\"&\":\"?\")+o.join(\"&\")}var V=/\\{ *([\\w_ -]+) *\\}/g;function q(t,e){return t.replace(V,function(t,i){i=e[i];if(void 0===i)throw new Error(\"No value provided for variable \"+t);return i=\"function\"==typeof i?i(e):i})}var d=Array.isArray||function(t){return\"[object Array]\"===Object.prototype.toString.call(t)};function G(t,i){for(var e=0;e<t.length;e++)if(t[e]===i)return e;return-1}var K=\"data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=\";function Y(t){return window[\"webkit\"+t]||window[\"moz\"+t]||window[\"ms\"+t]}var X=0;function J(t){var i=+new Date,e=Math.max(0,16-(i-X));return X=i+e,window.setTimeout(t,e)}var $=window.requestAnimationFrame||Y(\"RequestAnimationFrame\")||J,Q=window.cancelAnimationFrame||Y(\"CancelAnimationFrame\")||Y(\"CancelRequestAnimationFrame\")||function(t){window.clearTimeout(t)};function x(t,i,e){if(!e||$!==J)return $.call(window,a(t,i));t.call(i)}function r(t){t&&Q.call(window,t)}var tt={__proto__:null,extend:l,create:R,bind:a,get lastId(){return D},stamp:h,throttle:j,wrapNum:H,falseFn:u,formatNum:e,trim:W,splitWords:F,setOptions:c,getParamString:U,template:q,isArray:d,indexOf:G,emptyImageUrl:K,requestFn:$,cancelFn:Q,requestAnimFrame:x,cancelAnimFrame:r};function it(){}it.extend=function(t){function i(){c(this),this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()}var e,n=i.__super__=this.prototype,o=R(n);for(e in(o.constructor=i).prototype=o,this)Object.prototype.hasOwnProperty.call(this,e)&&\"prototype\"!==e&&\"__super__\"!==e&&(i[e]=this[e]);if(t.statics&&l(i,t.statics),t.includes){var s=t.includes;if(\"undefined\"!=typeof L&&L&&L.Mixin){s=d(s)?s:[s];for(var r=0;r<s.length;r++)s[r]===L.Mixin.Events&&console.warn(\"Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.\",(new Error).stack)}l.apply(null,[o].concat(t.includes))}return l(o,t),delete o.statics,delete o.includes,o.options&&(o.options=n.options?R(n.options):{},l(o.options,t.options)),o._initHooks=[],o.callInitHooks=function(){if(!this._initHooksCalled){n.callInitHooks&&n.callInitHooks.call(this),this._initHooksCalled=!0;for(var t=0,i=o._initHooks.length;t<i;t++)o._initHooks[t].call(this)}},i},it.include=function(t){var i=this.prototype.options;return l(this.prototype,t),t.options&&(this.prototype.options=i,this.mergeOptions(t.options)),this},it.mergeOptions=function(t){return l(this.prototype.options,t),this},it.addInitHook=function(t){var i=Array.prototype.slice.call(arguments,1),e=\"function\"==typeof t?t:function(){this[t].apply(this,i)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(e),this};var i={on:function(t,i,e){if(\"object\"==typeof t)for(var n in t)this._on(n,t[n],i);else for(var o=0,s=(t=F(t)).length;o<s;o++)this._on(t[o],i,e);return this},off:function(t,i,e){if(arguments.length)if(\"object\"==typeof t)for(var n in t)this._off(n,t[n],i);else{t=F(t);for(var o=1===arguments.length,s=0,r=t.length;s<r;s++)o?this._off(t[s]):this._off(t[s],i,e)}else delete this._events;return this},_on:function(t,i,e){if(\"function\"!=typeof i)console.warn(\"wrong listener type: \"+typeof i);else{this._events=this._events||{};for(var n=this._events[t],t=(n||(this._events[t]=n=[]),{fn:i,ctx:e=e===this?void 0:e}),o=n,s=0,r=o.length;s<r;s++)if(o[s].fn===i&&o[s].ctx===e)return;o.push(t)}},_off:function(t,i,e){var n,o,s;if(this._events&&(n=this._events[t]))if(1===arguments.length){if(this._firingCount)for(o=0,s=n.length;o<s;o++)n[o].fn=u;delete this._events[t]}else if(e===this&&(e=void 0),\"function\"!=typeof i)console.warn(\"wrong listener type: \"+typeof i);else{for(o=0,s=n.length;o<s;o++){var r=n[o];if(r.ctx===e&&r.fn===i)return this._firingCount&&(r.fn=u,this._events[t]=n=n.slice()),void n.splice(o,1)}console.warn(\"listener not found\")}},fire:function(t,i,e){if(!this.listens(t,e))return this;var n=l({},i,{type:t,target:this,sourceTarget:i&&i.sourceTarget||this});if(this._events){var o=this._events[t];if(o){this._firingCount=this._firingCount+1||1;for(var s=0,r=o.length;s<r;s++){var a=o[s];a.fn.call(a.ctx||this,n)}this._firingCount--}}return e&&this._propagateEvent(n),this},listens:function(t,i){\"string\"!=typeof t&&console.warn('\"string\" type argument expected');var e=this._events&&this._events[t];if(e&&e.length)return!0;if(i)for(var n in this._eventParents)if(this._eventParents[n].listens(t,i))return!0;return!1},once:function(t,i,e){if(\"object\"==typeof t){for(var n in t)this.once(n,t[n],i);return this}var o=a(function(){this.off(t,i,e).off(t,o,e)},this);return this.on(t,i,e).on(t,o,e)},addEventParent:function(t){return this._eventParents=this._eventParents||{},this._eventParents[h(t)]=t,this},removeEventParent:function(t){return this._eventParents&&delete this._eventParents[h(t)],this},_propagateEvent:function(t){for(var i in this._eventParents)this._eventParents[i].fire(t.type,l({layer:t.target,propagatedFrom:t.target},t),!0)}},et=(i.addEventListener=i.on,i.removeEventListener=i.clearAllEventListeners=i.off,i.addOneTimeEventListener=i.once,i.fireEvent=i.fire,i.hasEventListeners=i.listens,it.extend(i));function p(t,i,e){this.x=e?Math.round(t):t,this.y=e?Math.round(i):i}var nt=Math.trunc||function(t){return 0<t?Math.floor(t):Math.ceil(t)};function _(t,i,e){return t instanceof p?t:d(t)?new p(t[0],t[1]):null==t?t:\"object\"==typeof t&&\"x\"in t&&\"y\"in t?new p(t.x,t.y):new p(t,i,e)}function m(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function f(t,i){return!t||t instanceof m?t:new m(t,i)}function s(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function g(t,i){return t instanceof s?t:new s(t,i)}function v(t,i,e){if(isNaN(t)||isNaN(i))throw new Error(\"Invalid LatLng object: (\"+t+\", \"+i+\")\");this.lat=+t,this.lng=+i,void 0!==e&&(this.alt=+e)}function w(t,i,e){return t instanceof v?t:d(t)&&\"object\"!=typeof t[0]?3===t.length?new v(t[0],t[1],t[2]):2===t.length?new v(t[0],t[1]):null:null==t?t:\"object\"==typeof t&&\"lat\"in t?new v(t.lat,\"lng\"in t?t.lng:t.lon,t.alt):void 0===i?null:new v(t,i,e)}p.prototype={clone:function(){return new p(this.x,this.y)},add:function(t){return this.clone()._add(_(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(_(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},scaleBy:function(t){return new p(this.x*t.x,this.y*t.y)},unscaleBy:function(t){return new p(this.x/t.x,this.y/t.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=nt(this.x),this.y=nt(this.y),this},distanceTo:function(t){var i=(t=_(t)).x-this.x,t=t.y-this.y;return Math.sqrt(i*i+t*t)},equals:function(t){return(t=_(t)).x===this.x&&t.y===this.y},contains:function(t){return t=_(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return\"Point(\"+e(this.x)+\", \"+e(this.y)+\")\"}},m.prototype={extend:function(t){return t=_(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new p((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new p(this.min.x,this.max.y)},getTopRight:function(){return new p(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var i,e;return(t=(\"number\"==typeof t[0]||t instanceof p?_:f)(t))instanceof m?(i=t.min,e=t.max):i=e=t,i.x>=this.min.x&&e.x<=this.max.x&&i.y>=this.min.y&&e.y<=this.max.y},intersects:function(t){t=f(t);var i=this.min,e=this.max,n=t.min,t=t.max,o=t.x>=i.x&&n.x<=e.x,t=t.y>=i.y&&n.y<=e.y;return o&&t},overlaps:function(t){t=f(t);var i=this.min,e=this.max,n=t.min,t=t.max,o=t.x>i.x&&n.x<e.x,t=t.y>i.y&&n.y<e.y;return o&&t},isValid:function(){return!(!this.min||!this.max)}},s.prototype={extend:function(t){var i,e,n=this._southWest,o=this._northEast;if(t instanceof v)e=i=t;else{if(!(t instanceof s))return t?this.extend(w(t)||g(t)):this;if(i=t._southWest,e=t._northEast,!i||!e)return this}return n||o?(n.lat=Math.min(i.lat,n.lat),n.lng=Math.min(i.lng,n.lng),o.lat=Math.max(e.lat,o.lat),o.lng=Math.max(e.lng,o.lng)):(this._southWest=new v(i.lat,i.lng),this._northEast=new v(e.lat,e.lng)),this},pad:function(t){var i=this._southWest,e=this._northEast,n=Math.abs(i.lat-e.lat)*t,t=Math.abs(i.lng-e.lng)*t;return new s(new v(i.lat-n,i.lng-t),new v(e.lat+n,e.lng+t))},getCenter:function(){return new v((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new v(this.getNorth(),this.getWest())},getSouthEast:function(){return new v(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(t){t=(\"number\"==typeof t[0]||t instanceof v||\"lat\"in t?w:g)(t);var i,e,n=this._southWest,o=this._northEast;return t instanceof s?(i=t.getSouthWest(),e=t.getNorthEast()):i=e=t,i.lat>=n.lat&&e.lat<=o.lat&&i.lng>=n.lng&&e.lng<=o.lng},intersects:function(t){t=g(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),t=t.getNorthEast(),o=t.lat>=i.lat&&n.lat<=e.lat,t=t.lng>=i.lng&&n.lng<=e.lng;return o&&t},overlaps:function(t){t=g(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),t=t.getNorthEast(),o=t.lat>i.lat&&n.lat<e.lat,t=t.lng>i.lng&&n.lng<e.lng;return o&&t},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(\",\")},equals:function(t,i){return!!t&&(t=g(t),this._southWest.equals(t.getSouthWest(),i)&&this._northEast.equals(t.getNorthEast(),i))},isValid:function(){return!(!this._southWest||!this._northEast)}};var ot={latLngToPoint:function(t,i){t=this.projection.project(t),i=this.scale(i);return this.transformation._transform(t,i)},pointToLatLng:function(t,i){i=this.scale(i),t=this.transformation.untransform(t,i);return this.projection.unproject(t)},project:function(t){return this.projection.project(t)},unproject:function(t){return this.projection.unproject(t)},scale:function(t){return 256*Math.pow(2,t)},zoom:function(t){return Math.log(t/256)/Math.LN2},getProjectedBounds:function(t){if(this.infinite)return null;var i=this.projection.bounds,t=this.scale(t);return new m(this.transformation.transform(i.min,t),this.transformation.transform(i.max,t))},infinite:!(v.prototype={equals:function(t,i){return!!t&&(t=w(t),Math.max(Math.abs(this.lat-t.lat),Math.abs(this.lng-t.lng))<=(void 0===i?1e-9:i))},toString:function(t){return\"LatLng(\"+e(this.lat,t)+\", \"+e(this.lng,t)+\")\"},distanceTo:function(t){return st.distance(this,w(t))},wrap:function(){return st.wrapLatLng(this)},toBounds:function(t){var t=180*t/40075017,i=t/Math.cos(Math.PI/180*this.lat);return g([this.lat-t,this.lng-i],[this.lat+t,this.lng+i])},clone:function(){return new v(this.lat,this.lng,this.alt)}}),wrapLatLng:function(t){var i=this.wrapLng?H(t.lng,this.wrapLng,!0):t.lng;return new v(this.wrapLat?H(t.lat,this.wrapLat,!0):t.lat,i,t.alt)},wrapLatLngBounds:function(t){var i=t.getCenter(),e=this.wrapLatLng(i),n=i.lat-e.lat,i=i.lng-e.lng;if(0==n&&0==i)return t;e=t.getSouthWest(),t=t.getNorthEast();return new s(new v(e.lat-n,e.lng-i),new v(t.lat-n,t.lng-i))}},st=l({},ot,{wrapLng:[-180,180],R:6371e3,distance:function(t,i){var e=Math.PI/180,n=t.lat*e,o=i.lat*e,s=Math.sin((i.lat-t.lat)*e/2),i=Math.sin((i.lng-t.lng)*e/2),t=s*s+Math.cos(n)*Math.cos(o)*i*i,e=2*Math.atan2(Math.sqrt(t),Math.sqrt(1-t));return this.R*e}}),rt=6378137,rt={R:rt,MAX_LATITUDE:85.0511287798,project:function(t){var i=Math.PI/180,e=this.MAX_LATITUDE,e=Math.max(Math.min(e,t.lat),-e),e=Math.sin(e*i);return new p(this.R*t.lng*i,this.R*Math.log((1+e)/(1-e))/2)},unproject:function(t){var i=180/Math.PI;return new v((2*Math.atan(Math.exp(t.y/this.R))-Math.PI/2)*i,t.x*i/this.R)},bounds:new m([-(rt=rt*Math.PI),-rt],[rt,rt])};function at(t,i,e,n){if(d(t))return this._a=t[0],this._b=t[1],this._c=t[2],void(this._d=t[3]);this._a=t,this._b=i,this._c=e,this._d=n}function ht(t,i,e,n){return new at(t,i,e,n)}at.prototype={transform:function(t,i){return this._transform(t.clone(),i)},_transform:function(t,i){return t.x=(i=i||1)*(this._a*t.x+this._b),t.y=i*(this._c*t.y+this._d),t},untransform:function(t,i){return new p((t.x/(i=i||1)-this._b)/this._a,(t.y/i-this._d)/this._c)}};var lt=l({},st,{code:\"EPSG:3857\",projection:rt,transformation:ht(lt=.5/(Math.PI*rt.R),.5,-lt,.5)}),ut=l({},lt,{code:\"EPSG:900913\"});function ct(t){return document.createElementNS(\"http://www.w3.org/2000/svg\",t)}function dt(t,i){for(var e,n,o,s,r=\"\",a=0,h=t.length;a<h;a++){for(e=0,n=(o=t[a]).length;e<n;e++)r+=(e?\"L\":\"M\")+(s=o[e]).x+\" \"+s.y;r+=i?P.svg?\"z\":\"x\":\"\"}return r||\"M0 0\"}var _t=document.documentElement.style,pt=\"ActiveXObject\"in window,mt=pt&&!document.addEventListener,n=\"msLaunchUri\"in navigator&&!(\"documentMode\"in document),ft=y(\"webkit\"),gt=y(\"android\"),vt=y(\"android 2\")||y(\"android 3\"),yt=parseInt(/WebKit\\/([0-9]+)|$/.exec(navigator.userAgent)[1],10),yt=gt&&y(\"Google\")&&yt<537&&!(\"AudioNode\"in window),xt=!!window.opera,wt=!n&&y(\"chrome\"),Pt=y(\"gecko\")&&!ft&&!xt&&!pt,bt=!wt&&y(\"safari\"),Lt=y(\"phantom\"),o=\"OTransition\"in _t,Tt=0===navigator.platform.indexOf(\"Win\"),zt=pt&&\"transition\"in _t,Mt=\"WebKitCSSMatrix\"in window&&\"m11\"in new window.WebKitCSSMatrix&&!vt,_t=\"MozPerspective\"in _t,Ct=!window.L_DISABLE_3D&&(zt||Mt||_t)&&!o&&!Lt,Zt=\"undefined\"!=typeof orientation||y(\"mobile\"),St=Zt&&ft,kt=Zt&&Mt,Et=!window.PointerEvent&&window.MSPointerEvent,Bt=!(!window.PointerEvent&&!Et),At=\"ontouchstart\"in window||!!window.TouchEvent,It=!window.L_NO_TOUCH&&(At||Bt),Ot=Zt&&xt,Rt=Zt&&Pt,Nt=1<(window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI),Dt=function(){var t=!1;try{var i=Object.defineProperty({},\"passive\",{get:function(){t=!0}});window.addEventListener(\"testPassiveEventSupport\",u,i),window.removeEventListener(\"testPassiveEventSupport\",u,i)}catch(t){}return t}(),jt=!!document.createElement(\"canvas\").getContext,Ht=!(!document.createElementNS||!ct(\"svg\").createSVGRect),Wt=!!Ht&&((Wt=document.createElement(\"div\")).innerHTML=\"<svg/>\",\"http://www.w3.org/2000/svg\"===(Wt.firstChild&&Wt.firstChild.namespaceURI));function y(t){return 0<=navigator.userAgent.toLowerCase().indexOf(t)}var P={ie:pt,ielt9:mt,edge:n,webkit:ft,android:gt,android23:vt,androidStock:yt,opera:xt,chrome:wt,gecko:Pt,safari:bt,phantom:Lt,opera12:o,win:Tt,ie3d:zt,webkit3d:Mt,gecko3d:_t,any3d:Ct,mobile:Zt,mobileWebkit:St,mobileWebkit3d:kt,msPointer:Et,pointer:Bt,touch:It,touchNative:At,mobileOpera:Ot,mobileGecko:Rt,retina:Nt,passiveEvents:Dt,canvas:jt,svg:Ht,vml:!Ht&&function(){try{var t=document.createElement(\"div\"),i=(t.innerHTML='<v:shape adj=\"1\"/>',t.firstChild);return i.style.behavior=\"url(#default#VML)\",i&&\"object\"==typeof i.adj}catch(t){return!1}}(),inlineSvg:Wt},Ft=P.msPointer?\"MSPointerDown\":\"pointerdown\",Ut=P.msPointer?\"MSPointerMove\":\"pointermove\",Vt=P.msPointer?\"MSPointerUp\":\"pointerup\",qt=P.msPointer?\"MSPointerCancel\":\"pointercancel\",Gt={touchstart:Ft,touchmove:Ut,touchend:Vt,touchcancel:qt},Kt={touchstart:function(t,i){i.MSPOINTER_TYPE_TOUCH&&i.pointerType===i.MSPOINTER_TYPE_TOUCH&&B(i);ii(t,i)},touchmove:ii,touchend:ii,touchcancel:ii},Yt={},Xt=!1;function Jt(t,i,e){return\"touchstart\"!==i||Xt||(document.addEventListener(Ft,$t,!0),document.addEventListener(Ut,Qt,!0),document.addEventListener(Vt,ti,!0),document.addEventListener(qt,ti,!0),Xt=!0),Kt[i]?(e=Kt[i].bind(this,e),t.addEventListener(Gt[i],e,!1),e):(console.warn(\"wrong event specified:\",i),L.Util.falseFn)}function $t(t){Yt[t.pointerId]=t}function Qt(t){Yt[t.pointerId]&&(Yt[t.pointerId]=t)}function ti(t){delete Yt[t.pointerId]}function ii(t,i){if(i.pointerType!==(i.MSPOINTER_TYPE_MOUSE||\"mouse\")){for(var e in i.touches=[],Yt)i.touches.push(Yt[e]);i.changedTouches=[i],t(i)}}var ei=200;function ni(t,e){t.addEventListener(\"dblclick\",e);var n,o=0;function i(t){var i;1!==t.detail?n=t.detail:\"mouse\"===t.pointerType||t.sourceCapabilities&&!t.sourceCapabilities.firesTouchEvents||((i=Date.now())-o<=ei?2===++n&&e(function(t){var i,e,n={};for(e in t)i=t[e],n[e]=i&&i.bind?i.bind(t):i;return(t=n).type=\"dblclick\",n.detail=2,n.isTrusted=!1,n._simulated=!0,n}(t)):n=1,o=i)}return t.addEventListener(\"click\",i),{dblclick:e,simDblclick:i}}var oi,si,ri,ai,hi,li,ui=wi([\"transform\",\"webkitTransform\",\"OTransform\",\"MozTransform\",\"msTransform\"]),ci=wi([\"webkitTransition\",\"transition\",\"OTransition\",\"MozTransition\",\"msTransition\"]),di=\"webkitTransition\"===ci||\"OTransition\"===ci?ci+\"End\":\"transitionend\";function _i(t){return\"string\"==typeof t?document.getElementById(t):t}function pi(t,i){var e=t.style[i]||t.currentStyle&&t.currentStyle[i];return\"auto\"===(e=e&&\"auto\"!==e||!document.defaultView?e:(t=document.defaultView.getComputedStyle(t,null))?t[i]:null)?null:e}function b(t,i,e){t=document.createElement(t);return t.className=i||\"\",e&&e.appendChild(t),t}function T(t){var i=t.parentNode;i&&i.removeChild(t)}function mi(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function fi(t){var i=t.parentNode;i&&i.lastChild!==t&&i.appendChild(t)}function gi(t){var i=t.parentNode;i&&i.firstChild!==t&&i.insertBefore(t,i.firstChild)}function vi(t,i){if(void 0!==t.classList)return t.classList.contains(i);t=xi(t);return 0<t.length&&new RegExp(\"(^|\\\\s)\"+i+\"(\\\\s|$)\").test(t)}function z(t,i){var e;if(void 0!==t.classList)for(var n=F(i),o=0,s=n.length;o<s;o++)t.classList.add(n[o]);else vi(t,i)||yi(t,((e=xi(t))?e+\" \":\"\")+i)}function M(t,i){void 0!==t.classList?t.classList.remove(i):yi(t,W((\" \"+xi(t)+\" \").replace(\" \"+i+\" \",\" \")))}function yi(t,i){void 0===t.className.baseVal?t.className=i:t.className.baseVal=i}function xi(t){return void 0===(t=t.correspondingElement?t.correspondingElement:t).className.baseVal?t.className:t.className.baseVal}function C(t,i){if(\"opacity\"in t.style)t.style.opacity=i;else if(\"filter\"in t.style){var e=!1,n=\"DXImageTransform.Microsoft.Alpha\";try{e=t.filters.item(n)}catch(t){if(1===i)return}i=Math.round(100*i),e?(e.Enabled=100!==i,e.Opacity=i):t.style.filter+=\" progid:\"+n+\"(opacity=\"+i+\")\"}}function wi(t){for(var i=document.documentElement.style,e=0;e<t.length;e++)if(t[e]in i)return t[e];return!1}function Pi(t,i,e){i=i||new p(0,0);t.style[ui]=(P.ie3d?\"translate(\"+i.x+\"px,\"+i.y+\"px)\":\"translate3d(\"+i.x+\"px,\"+i.y+\"px,0)\")+(e?\" scale(\"+e+\")\":\"\")}function Z(t,i){t._leaflet_pos=i,P.any3d?Pi(t,i):(t.style.left=i.x+\"px\",t.style.top=i.y+\"px\")}function bi(t){return t._leaflet_pos||new p(0,0)}function Li(){S(window,\"dragstart\",B)}function Ti(){E(window,\"dragstart\",B)}function zi(t){for(;-1===t.tabIndex;)t=t.parentNode;t.style&&(Mi(),li=(hi=t).style.outline,t.style.outline=\"none\",S(window,\"keydown\",Mi))}function Mi(){hi&&(hi.style.outline=li,li=hi=void 0,E(window,\"keydown\",Mi))}function Ci(t){for(;!((t=t.parentNode).offsetWidth&&t.offsetHeight||t===document.body););return t}function Zi(t){var i=t.getBoundingClientRect();return{x:i.width/t.offsetWidth||1,y:i.height/t.offsetHeight||1,boundingClientRect:i}}ai=\"onselectstart\"in document?(ri=function(){S(window,\"selectstart\",B)},function(){E(window,\"selectstart\",B)}):(si=wi([\"userSelect\",\"WebkitUserSelect\",\"OUserSelect\",\"MozUserSelect\",\"msUserSelect\"]),ri=function(){var t;si&&(t=document.documentElement.style,oi=t[si],t[si]=\"none\")},function(){si&&(document.documentElement.style[si]=oi,oi=void 0)});pt={__proto__:null,TRANSFORM:ui,TRANSITION:ci,TRANSITION_END:di,get:_i,getStyle:pi,create:b,remove:T,empty:mi,toFront:fi,toBack:gi,hasClass:vi,addClass:z,removeClass:M,setClass:yi,getClass:xi,setOpacity:C,testProp:wi,setTransform:Pi,setPosition:Z,getPosition:bi,get disableTextSelection(){return ri},get enableTextSelection(){return ai},disableImageDrag:Li,enableImageDrag:Ti,preventOutline:zi,restoreOutline:Mi,getSizedParentNode:Ci,getScale:Zi};function S(t,i,e,n){if(i&&\"object\"==typeof i)for(var o in i)Ei(t,o,i[o],e);else for(var s=0,r=(i=F(i)).length;s<r;s++)Ei(t,i[s],e,n);return this}var k=\"_leaflet_events\";function E(t,i,e,n){if(1===arguments.length)Si(t),delete t[k];else if(i&&\"object\"==typeof i)for(var o in i)Bi(t,o,i[o],e);else if(i=F(i),2===arguments.length)Si(t,function(t){return-1!==G(i,t)});else for(var s=0,r=i.length;s<r;s++)Bi(t,i[s],e,n);return this}function Si(t,i){for(var e in t[k]){var n=e.split(/\\d/)[0];i&&!i(n)||Bi(t,n,null,null,e)}}var ki={mouseenter:\"mouseover\",mouseleave:\"mouseout\",wheel:!(\"onwheel\"in window)&&\"mousewheel\"};function Ei(i,t,e,n){var o,s,r=t+h(e)+(n?\"_\"+h(n):\"\");i[k]&&i[k][r]||(s=o=function(t){return e.call(n||i,t||window.event)},!P.touchNative&&P.pointer&&0===t.indexOf(\"touch\")?o=Jt(i,t,o):P.touch&&\"dblclick\"===t?o=ni(i,o):\"addEventListener\"in i?\"touchstart\"===t||\"touchmove\"===t||\"wheel\"===t||\"mousewheel\"===t?i.addEventListener(ki[t]||t,o,!!P.passiveEvents&&{passive:!1}):\"mouseenter\"===t||\"mouseleave\"===t?i.addEventListener(ki[t],o=function(t){t=t||window.event,Hi(i,t)&&s(t)},!1):i.addEventListener(t,s,!1):i.attachEvent(\"on\"+t,o),i[k]=i[k]||{},i[k][r]=o)}function Bi(t,i,e,n,o){o=o||i+h(e)+(n?\"_\"+h(n):\"\");var s,r,e=t[k]&&t[k][o];e&&(!P.touchNative&&P.pointer&&0===i.indexOf(\"touch\")?(n=t,r=e,Gt[s=i]?n.removeEventListener(Gt[s],r,!1):console.warn(\"wrong event specified:\",s)):P.touch&&\"dblclick\"===i?(n=e,(r=t).removeEventListener(\"dblclick\",n.dblclick),r.removeEventListener(\"click\",n.simDblclick)):\"removeEventListener\"in t?t.removeEventListener(ki[i]||i,e,!1):t.detachEvent(\"on\"+i,e),t[k][o]=null)}function Ai(t){return t.stopPropagation?t.stopPropagation():t.originalEvent?t.originalEvent._stopped=!0:t.cancelBubble=!0,this}function Ii(t){return Ei(t,\"wheel\",Ai),this}function Oi(t){return S(t,\"mousedown touchstart dblclick contextmenu\",Ai),t._leaflet_disable_click=!0,this}function B(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this}function Ri(t){return B(t),Ai(t),this}function Ni(t,i){if(!i)return new p(t.clientX,t.clientY);var e=Zi(i),n=e.boundingClientRect;return new p((t.clientX-n.left)/e.x-i.clientLeft,(t.clientY-n.top)/e.y-i.clientTop)}var Di=P.win&&P.chrome?2*window.devicePixelRatio:P.gecko?window.devicePixelRatio:1;function ji(t){return P.edge?t.wheelDeltaY/2:t.deltaY&&0===t.deltaMode?-t.deltaY/Di:t.deltaY&&1===t.deltaMode?20*-t.deltaY:t.deltaY&&2===t.deltaMode?60*-t.deltaY:t.deltaX||t.deltaZ?0:t.wheelDelta?(t.wheelDeltaY||t.wheelDelta)/2:t.detail&&Math.abs(t.detail)<32765?20*-t.detail:t.detail?t.detail/-32765*60:0}function Hi(t,i){var e=i.relatedTarget;if(!e)return!0;try{for(;e&&e!==t;)e=e.parentNode}catch(t){return!1}return e!==t}var mt={__proto__:null,on:S,off:E,stopPropagation:Ai,disableScrollPropagation:Ii,disableClickPropagation:Oi,preventDefault:B,stop:Ri,getMousePosition:Ni,getWheelDelta:ji,isExternalTarget:Hi,addListener:S,removeListener:E},Wi=et.extend({run:function(t,i,e,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=e||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=bi(t),this._offset=i.subtract(this._startPos),this._startTime=+new Date,this.fire(\"start\"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=x(this._animate,this),this._step()},_step:function(t){var i=+new Date-this._startTime,e=1e3*this._duration;i<e?this._runFrame(this._easeOut(i/e),t):(this._runFrame(1),this._complete())},_runFrame:function(t,i){t=this._startPos.add(this._offset.multiplyBy(t));i&&t._round(),Z(this._el,t),this.fire(\"step\")},_complete:function(){r(this._animId),this._inProgress=!1,this.fire(\"end\")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),A=et.extend({options:{crs:lt,center:void 0,zoom:void 0,minZoom:void 0,maxZoom:void 0,layers:[],maxBounds:void 0,renderer:void 0,zoomAnimation:!0,zoomAnimationThreshold:4,fadeAnimation:!0,markerZoomAnimation:!0,transform3DLimit:8388608,zoomSnap:1,zoomDelta:1,trackResize:!0},initialize:function(t,i){i=c(this,i),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._sizeChanged=!0,this._initContainer(t),this._initLayout(),this._onResize=a(this._onResize,this),this._initEvents(),i.maxBounds&&this.setMaxBounds(i.maxBounds),void 0!==i.zoom&&(this._zoom=this._limitZoom(i.zoom)),i.center&&void 0!==i.zoom&&this.setView(w(i.center),i.zoom,{reset:!0}),this.callInitHooks(),this._zoomAnimated=ci&&P.any3d&&!P.mobileOpera&&this.options.zoomAnimation,this._zoomAnimated&&(this._createAnimProxy(),S(this._proxy,di,this._catchTransitionEnd,this)),this._addLayers(this.options.layers)},setView:function(t,i,e){if((i=void 0===i?this._zoom:this._limitZoom(i),t=this._limitCenter(w(t),i,this.options.maxBounds),e=e||{},this._stop(),this._loaded&&!e.reset&&!0!==e)&&(void 0!==e.animate&&(e.zoom=l({animate:e.animate},e.zoom),e.pan=l({animate:e.animate,duration:e.duration},e.pan)),this._zoom!==i?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,i,e.zoom):this._tryAnimatedPan(t,e.pan)))return clearTimeout(this._sizeTimer),this;return this._resetView(t,i),this},setZoom:function(t,i){return this._loaded?this.setView(this.getCenter(),t,{zoom:i}):(this._zoom=t,this)},zoomIn:function(t,i){return t=t||(P.any3d?this.options.zoomDelta:1),this.setZoom(this._zoom+t,i)},zoomOut:function(t,i){return t=t||(P.any3d?this.options.zoomDelta:1),this.setZoom(this._zoom-t,i)},setZoomAround:function(t,i,e){var n=this.getZoomScale(i),o=this.getSize().divideBy(2),t=(t instanceof p?t:this.latLngToContainerPoint(t)).subtract(o).multiplyBy(1-1/n),n=this.containerPointToLatLng(o.add(t));return this.setView(n,i,{zoom:e})},_getBoundsCenterZoom:function(t,i){i=i||{},t=t.getBounds?t.getBounds():g(t);var e=_(i.paddingTopLeft||i.padding||[0,0]),n=_(i.paddingBottomRight||i.padding||[0,0]),o=this.getBoundsZoom(t,!1,e.add(n));if((o=\"number\"==typeof i.maxZoom?Math.min(i.maxZoom,o):o)===1/0)return{center:t.getCenter(),zoom:o};i=n.subtract(e).divideBy(2),n=this.project(t.getSouthWest(),o),e=this.project(t.getNorthEast(),o);return{center:this.unproject(n.add(e).divideBy(2).add(i),o),zoom:o}},fitBounds:function(t,i){if(!(t=g(t)).isValid())throw new Error(\"Bounds are not valid.\");t=this._getBoundsCenterZoom(t,i);return this.setView(t.center,t.zoom,i)},fitWorld:function(t){return this.fitBounds([[-90,-180],[90,180]],t)},panTo:function(t,i){return this.setView(t,this._zoom,{pan:i})},panBy:function(t,i){return i=i||{},(t=_(t).round()).x||t.y?(!0===i.animate||this.getSize().contains(t)?(this._panAnim||(this._panAnim=new Wi,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),i.noMoveStart||this.fire(\"movestart\"),!1!==i.animate?(z(this._mapPane,\"leaflet-pan-anim\"),e=this._getMapPanePos().subtract(t).round(),this._panAnim.run(this._mapPane,e,i.duration||.25,i.easeLinearity)):(this._rawPanBy(t),this.fire(\"move\").fire(\"moveend\"))):this._resetView(this.unproject(this.project(this.getCenter()).add(t)),this.getZoom()),this):this.fire(\"moveend\");var e},flyTo:function(n,o,t){if(!1===(t=t||{}).animate||!P.any3d)return this.setView(n,o,t);this._stop();var s=this.project(this.getCenter()),r=this.project(n),i=this.getSize(),a=this._zoom,h=(n=w(n),o=void 0===o?a:o,Math.max(i.x,i.y)),e=h*this.getZoomScale(a,o),l=r.distanceTo(s)||1,u=1.42,c=u*u;function d(t){t=(e*e-h*h+(t?-1:1)*c*c*l*l)/(2*(t?e:h)*c*l),t=Math.sqrt(t*t+1)-t;return t<1e-9?-18:Math.log(t)}function _(t){return(Math.exp(t)-Math.exp(-t))/2}function p(t){return(Math.exp(t)+Math.exp(-t))/2}var m=d(0);function f(t){return h*(p(m)*(_(t=m+u*t)/p(t))-_(m))/c}var g=Date.now(),v=(d(1)-m)/u,y=t.duration?1e3*t.duration:1e3*v*.8;return this._moveStart(!0,t.noMoveStart),function t(){var i=(Date.now()-g)/y,e=(1-Math.pow(1-i,1.5))*v;i<=1?(this._flyToFrame=x(t,this),this._move(this.unproject(s.add(r.subtract(s).multiplyBy(f(e)/l)),a),this.getScaleZoom(h/(i=e,h*(p(m)/p(m+u*i))),a),{flyTo:!0})):this._move(n,o)._moveEnd(!0)}.call(this),this},flyToBounds:function(t,i){t=this._getBoundsCenterZoom(t,i);return this.flyTo(t.center,t.zoom,i)},setMaxBounds:function(t){return(t=g(t)).isValid()?(this.options.maxBounds&&this.off(\"moveend\",this._panInsideMaxBounds),this.options.maxBounds=t,this._loaded&&this._panInsideMaxBounds(),this.on(\"moveend\",this._panInsideMaxBounds)):(this.options.maxBounds=null,this.off(\"moveend\",this._panInsideMaxBounds))},setMinZoom:function(t){var i=this.options.minZoom;return this.options.minZoom=t,this._loaded&&i!==t&&(this.fire(\"zoomlevelschange\"),this.getZoom()<this.options.minZoom)?this.setZoom(t):this},setMaxZoom:function(t){var i=this.options.maxZoom;return this.options.maxZoom=t,this._loaded&&i!==t&&(this.fire(\"zoomlevelschange\"),this.getZoom()>this.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,i){this._enforcingBounds=!0;var e=this.getCenter(),t=this._limitCenter(e,this._zoom,g(t));return e.equals(t)||this.panTo(t,i),this._enforcingBounds=!1,this},panInside:function(t,i){var e=_((i=i||{}).paddingTopLeft||i.padding||[0,0]),n=_(i.paddingBottomRight||i.padding||[0,0]),o=this.project(this.getCenter()),t=this.project(t),s=this.getPixelBounds(),e=f([s.min.add(e),s.max.subtract(n)]),s=e.getSize();return e.contains(t)||(this._enforcingBounds=!0,n=t.subtract(e.getCenter()),e=e.extend(t).getSize().subtract(s),o.x+=n.x<0?-e.x:e.x,o.y+=n.y<0?-e.y:e.y,this.panTo(this.unproject(o),i),this._enforcingBounds=!1),this},invalidateSize:function(t){if(!this._loaded)return this;t=l({animate:!1,pan:!0},!0===t?{animate:!0}:t);var i=this.getSize(),e=(this._sizeChanged=!0,this._lastCenter=null,this.getSize()),n=i.divideBy(2).round(),o=e.divideBy(2).round(),n=n.subtract(o);return n.x||n.y?(t.animate&&t.pan?this.panBy(n):(t.pan&&this._rawPanBy(n),this.fire(\"move\"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(a(this.fire,this,\"moveend\"),200)):this.fire(\"moveend\")),this.fire(\"resize\",{oldSize:i,newSize:e})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire(\"viewreset\"),this._stop()},locate:function(t){if(t=this._locateOptions=l({timeout:1e4,watch:!1},t),!(\"geolocation\"in navigator))return this._handleGeolocationError({code:0,message:\"Geolocation not supported.\"}),this;var i=a(this._handleGeolocationResponse,this),e=a(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(i,e,t):navigator.geolocation.getCurrentPosition(i,e,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var i;this._container._leaflet_id&&(i=t.code,t=t.message||(1===i?\"permission denied\":2===i?\"position unavailable\":\"timeout\"),this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire(\"locationerror\",{code:i,message:\"Geolocation error: \"+t+\".\"}))},_handleGeolocationResponse:function(t){if(this._container._leaflet_id){var i,e,n=new v(t.coords.latitude,t.coords.longitude),o=n.toBounds(2*t.coords.accuracy),s=this._locateOptions,r=(s.setView&&(i=this.getBoundsZoom(o),this.setView(n,s.maxZoom?Math.min(i,s.maxZoom):i)),{latlng:n,bounds:o,timestamp:t.timestamp});for(e in t.coords)\"number\"==typeof t.coords[e]&&(r[e]=t.coords[e]);this.fire(\"locationfound\",r)}},addHandler:function(t,i){if(!i)return this;i=this[t]=new i(this);return this._handlers.push(i),this.options[t]&&i.enable(),this},remove:function(){if(this._initEvents(!0),this.options.maxBounds&&this.off(\"moveend\",this._panInsideMaxBounds),this._containerId!==this._container._leaflet_id)throw new Error(\"Map container is being reused by another instance\");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}for(var t in void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),T(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(r(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire(\"unload\"),this._layers)this._layers[t].remove();for(t in this._panes)T(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,i){i=b(\"div\",\"leaflet-pane\"+(t?\" leaflet-\"+t.replace(\"Pane\",\"\")+\"-pane\":\"\"),i||this._mapPane);return t&&(this._panes[t]=i),i},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new s(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,i,e){t=g(t),e=_(e||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),t=t.getSouthEast(),e=this.getSize().subtract(e),t=f(this.project(t,n),this.project(r,n)).getSize(),r=P.any3d?this.options.zoomSnap:1,a=e.x/t.x,e=e.y/t.y,t=i?Math.max(a,e):Math.min(a,e),n=this.getScaleZoom(t,n);return r&&(n=Math.round(n/(r/100))*(r/100),n=i?Math.ceil(n/r)*r:Math.floor(n/r)*r),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new p(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,i){t=this._getTopLeftPoint(t,i);return new m(t,t.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return\"string\"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,i){var e=this.options.crs;return i=void 0===i?this._zoom:i,e.scale(t)/e.scale(i)},getScaleZoom:function(t,i){var e=this.options.crs,t=(i=void 0===i?this._zoom:i,e.zoom(t*e.scale(i)));return isNaN(t)?1/0:t},project:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.latLngToPoint(w(t),i)},unproject:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.pointToLatLng(_(t),i)},layerPointToLatLng:function(t){t=_(t).add(this.getPixelOrigin());return this.unproject(t)},latLngToLayerPoint:function(t){return this.project(w(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(w(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(g(t))},distance:function(t,i){return this.options.crs.distance(w(t),w(i))},containerPointToLayerPoint:function(t){return _(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return _(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){t=this.containerPointToLayerPoint(_(t));return this.layerPointToLatLng(t)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(w(t)))},mouseEventToContainerPoint:function(t){return Ni(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){t=this._container=_i(t);if(!t)throw new Error(\"Map container not found.\");if(t._leaflet_id)throw new Error(\"Map container is already initialized.\");S(t,\"scroll\",this._onScroll,this),this._containerId=h(t)},_initLayout:function(){var t=this._container,i=(this._fadeAnimated=this.options.fadeAnimation&&P.any3d,z(t,\"leaflet-container\"+(P.touch?\" leaflet-touch\":\"\")+(P.retina?\" leaflet-retina\":\"\")+(P.ielt9?\" leaflet-oldie\":\"\")+(P.safari?\" leaflet-safari\":\"\")+(this._fadeAnimated?\" leaflet-fade-anim\":\"\")),pi(t,\"position\"));\"absolute\"!==i&&\"relative\"!==i&&\"fixed\"!==i&&(t.style.position=\"relative\"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane(\"mapPane\",this._container),Z(this._mapPane,new p(0,0)),this.createPane(\"tilePane\"),this.createPane(\"overlayPane\"),this.createPane(\"shadowPane\"),this.createPane(\"markerPane\"),this.createPane(\"tooltipPane\"),this.createPane(\"popupPane\"),this.options.markerZoomAnimation||(z(t.markerPane,\"leaflet-zoom-hide\"),z(t.shadowPane,\"leaflet-zoom-hide\"))},_resetView:function(t,i){Z(this._mapPane,new p(0,0));var e=!this._loaded,n=(this._loaded=!0,i=this._limitZoom(i),this.fire(\"viewprereset\"),this._zoom!==i);this._moveStart(n,!1)._move(t,i)._moveEnd(n),this.fire(\"viewreset\"),e&&this.fire(\"load\")},_moveStart:function(t,i){return t&&this.fire(\"zoomstart\"),i||this.fire(\"movestart\"),this},_move:function(t,i,e,n){void 0===i&&(i=this._zoom);var o=this._zoom!==i;return this._zoom=i,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),n?e&&e.pinch&&this.fire(\"zoom\",e):((o||e&&e.pinch)&&this.fire(\"zoom\",e),this.fire(\"move\",e)),this},_moveEnd:function(t){return t&&this.fire(\"zoomend\"),this.fire(\"moveend\")},_stop:function(){return r(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Z(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error(\"Set map center and zoom first.\")},_initEvents:function(t){this._targets={};var i=t?E:S;i((this._targets[h(this._container)]=this)._container,\"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup\",this._handleDOMEvent,this),this.options.trackResize&&i(window,\"resize\",this._onResize,this),P.any3d&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,\"moveend\",this._onMoveEnd)},_onResize:function(){r(this._resizeRequest),this._resizeRequest=x(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,i){for(var e,n=[],o=\"mouseout\"===i||\"mouseover\"===i,s=t.target||t.srcElement,r=!1;s;){if((e=this._targets[h(s)])&&(\"click\"===i||\"preclick\"===i)&&this._draggableMoved(e)){r=!0;break}if(e&&e.listens(i,!0)){if(o&&!Hi(s,t))break;if(n.push(e),o)break}if(s===this._container)break;s=s.parentNode}return n=n.length||r||o||!this.listens(i,!0)?n:[this]},_isClickDisabled:function(t){for(;t!==this._container;){if(t._leaflet_disable_click)return!0;t=t.parentNode}},_handleDOMEvent:function(t){var i,e=t.target||t.srcElement;!this._loaded||e._leaflet_disable_events||\"click\"===t.type&&this._isClickDisabled(e)||(\"mousedown\"===(i=t.type)&&zi(e),this._fireDOMEvent(t,i))},_mouseEvents:[\"click\",\"dblclick\",\"mouseover\",\"mouseout\",\"contextmenu\"],_fireDOMEvent:function(t,i,e){\"click\"===t.type&&((a=l({},t)).type=\"preclick\",this._fireDOMEvent(a,a.type,e));var n=this._findEventTargets(t,i);if(e){for(var o=[],s=0;s<e.length;s++)e[s].listens(i,!0)&&o.push(e[s]);n=o.concat(n)}if(n.length){\"contextmenu\"===i&&B(t);var r,a=n[0],h={originalEvent:t};for(\"keypress\"!==t.type&&\"keydown\"!==t.type&&\"keyup\"!==t.type&&(r=a.getLatLng&&(!a._radius||a._radius<=10),h.containerPoint=r?this.latLngToContainerPoint(a.getLatLng()):this.mouseEventToContainerPoint(t),h.layerPoint=this.containerPointToLayerPoint(h.containerPoint),h.latlng=r?a.getLatLng():this.layerPointToLatLng(h.layerPoint)),s=0;s<n.length;s++)if(n[s].fire(i,h,!0),h.originalEvent._stopped||!1===n[s].options.bubblingMouseEvents&&-1!==G(this._mouseEvents,i))return}},_draggableMoved:function(t){return(t=t.dragging&&t.dragging.enabled()?t:this).dragging&&t.dragging.moved()||this.boxZoom&&this.boxZoom.moved()},_clearHandlers:function(){for(var t=0,i=this._handlers.length;t<i;t++)this._handlers[t].disable()},whenReady:function(t,i){return this._loaded?t.call(i||this,{target:this}):this.on(\"load\",t,i),this},_getMapPanePos:function(){return bi(this._mapPane)||new p(0,0)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(t,i){return(t&&void 0!==i?this._getNewPixelOrigin(t,i):this.getPixelOrigin()).subtract(this._getMapPanePos())},_getNewPixelOrigin:function(t,i){var e=this.getSize()._divideBy(2);return this.project(t,i)._subtract(e)._add(this._getMapPanePos())._round()},_latLngToNewLayerPoint:function(t,i,e){e=this._getNewPixelOrigin(e,i);return this.project(t,i)._subtract(e)},_latLngBoundsToNewLayerBounds:function(t,i,e){e=this._getNewPixelOrigin(e,i);return f([this.project(t.getSouthWest(),i)._subtract(e),this.project(t.getNorthWest(),i)._subtract(e),this.project(t.getSouthEast(),i)._subtract(e),this.project(t.getNorthEast(),i)._subtract(e)])},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,i,e){if(!e)return t;var n=this.project(t,i),o=this.getSize().divideBy(2),o=new m(n.subtract(o),n.add(o)),o=this._getBoundsOffset(o,e,i);return o.round().equals([0,0])?t:this.unproject(n.add(o),i)},_limitOffset:function(t,i){if(!i)return t;var e=this.getPixelBounds(),e=new m(e.min.add(t),e.max.add(t));return t.add(this._getBoundsOffset(e,i))},_getBoundsOffset:function(t,i,e){i=f(this.project(i.getNorthEast(),e),this.project(i.getSouthWest(),e)),e=i.min.subtract(t.min),i=i.max.subtract(t.max);return new p(this._rebound(e.x,-i.x),this._rebound(e.y,-i.y))},_rebound:function(t,i){return 0<t+i?Math.round(t-i)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(i))},_limitZoom:function(t){var i=this.getMinZoom(),e=this.getMaxZoom(),n=P.any3d?this.options.zoomSnap:1;return n&&(t=Math.round(t/n)*n),Math.max(i,Math.min(e,t))},_onPanTransitionStep:function(){this.fire(\"move\")},_onPanTransitionEnd:function(){M(this._mapPane,\"leaflet-pan-anim\"),this.fire(\"moveend\")},_tryAnimatedPan:function(t,i){t=this._getCenterOffset(t)._trunc();return!(!0!==(i&&i.animate)&&!this.getSize().contains(t))&&(this.panBy(t,i),!0)},_createAnimProxy:function(){var t=this._proxy=b(\"div\",\"leaflet-proxy leaflet-zoom-animated\");this._panes.mapPane.appendChild(t),this.on(\"zoomanim\",function(t){var i=ui,e=this._proxy.style[i];Pi(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),e===this._proxy.style[i]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on(\"load moveend\",this._animMoveEnd,this),this._on(\"unload\",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){T(this._proxy),this.off(\"load moveend\",this._animMoveEnd,this),delete this._proxy},_animMoveEnd:function(){var t=this.getCenter(),i=this.getZoom();Pi(this._proxy,this.project(t,i),this.getZoomScale(i,1))},_catchTransitionEnd:function(t){this._animatingZoom&&0<=t.propertyName.indexOf(\"transform\")&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName(\"leaflet-zoom-animated\").length},_tryAnimatedZoom:function(t,i,e){if(this._animatingZoom)return!0;if(e=e||{},!this._zoomAnimated||!1===e.animate||this._nothingToAnimate()||Math.abs(i-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(i),n=this._getCenterOffset(t)._divideBy(1-1/n);return!(!0!==e.animate&&!this.getSize().contains(n))&&(x(function(){this._moveStart(!0,!1)._animateZoom(t,i,!0)},this),!0)},_animateZoom:function(t,i,e,n){this._mapPane&&(e&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=i,z(this._mapPane,\"leaflet-zoom-anim\")),this.fire(\"zoomanim\",{center:t,zoom:i,noUpdate:n}),this._tempFireZoomEvent||(this._tempFireZoomEvent=this._zoom!==this._animateToZoom),this._move(this._animateToCenter,this._animateToZoom,void 0,!0),setTimeout(a(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&M(this._mapPane,\"leaflet-zoom-anim\"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom,void 0,!0),this._tempFireZoomEvent&&this.fire(\"zoom\"),delete this._tempFireZoomEvent,this.fire(\"move\"),this._moveEnd(!0))}});function Fi(t){return new I(t)}var Ui,I=it.extend({options:{position:\"topright\"},initialize:function(t){c(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var i=this._map;return i&&i.removeControl(this),this.options.position=t,i&&i.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var i=this._container=this.onAdd(t),e=this.getPosition(),t=t._controlCorners[e];return z(i,\"leaflet-control\"),-1!==e.indexOf(\"bottom\")?t.insertBefore(i,t.firstChild):t.appendChild(i),this._map.on(\"unload\",this.remove,this),this},remove:function(){return this._map&&(T(this._container),this.onRemove&&this.onRemove(this._map),this._map.off(\"unload\",this.remove,this),this._map=null),this},_refocusOnMap:function(t){this._map&&t&&0<t.screenX&&0<t.screenY&&this._map.getContainer().focus()}}),Vi=(A.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){var e=this._controlCorners={},n=\"leaflet-\",o=this._controlContainer=b(\"div\",n+\"control-container\",this._container);function t(t,i){e[t+i]=b(\"div\",n+t+\" \"+n+i,o)}t(\"top\",\"left\"),t(\"top\",\"right\"),t(\"bottom\",\"left\"),t(\"bottom\",\"right\")},_clearControlPos:function(){for(var t in this._controlCorners)T(this._controlCorners[t]);T(this._controlContainer),delete this._controlCorners,delete this._controlContainer}}),I.extend({options:{collapsed:!0,position:\"topright\",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,i,e,n){return e<n?-1:n<e?1:0}},initialize:function(t,i,e){for(var n in c(this,e),this._layerControlInputs=[],this._layers=[],this._lastZIndex=0,this._handlingClick=!1,t)this._addLayer(t[n],n);for(n in i)this._addLayer(i[n],n,!0)},onAdd:function(t){this._initLayout(),this._update(),(this._map=t).on(\"zoomend\",this._checkDisabledLayers,this);for(var i=0;i<this._layers.length;i++)this._layers[i].layer.on(\"add remove\",this._onLayerChange,this);return this._container},addTo:function(t){return I.prototype.addTo.call(this,t),this._expandIfNotCollapsed()},onRemove:function(){this._map.off(\"zoomend\",this._checkDisabledLayers,this);for(var t=0;t<this._layers.length;t++)this._layers[t].layer.off(\"add remove\",this._onLayerChange,this)},addBaseLayer:function(t,i){return this._addLayer(t,i),this._map?this._update():this},addOverlay:function(t,i){return this._addLayer(t,i,!0),this._map?this._update():this},removeLayer:function(t){t.off(\"add remove\",this._onLayerChange,this);t=this._getLayer(h(t));return t&&this._layers.splice(this._layers.indexOf(t),1),this._map?this._update():this},expand:function(){z(this._container,\"leaflet-control-layers-expanded\"),this._section.style.height=null;var t=this._map.getSize().y-(this._container.offsetTop+50);return t<this._section.clientHeight?(z(this._section,\"leaflet-control-layers-scrollbar\"),this._section.style.height=t+\"px\"):M(this._section,\"leaflet-control-layers-scrollbar\"),this._checkDisabledLayers(),this},collapse:function(){return M(this._container,\"leaflet-control-layers-expanded\"),this},_initLayout:function(){var t=\"leaflet-control-layers\",i=this._container=b(\"div\",t),e=this.options.collapsed,n=(i.setAttribute(\"aria-haspopup\",!0),Oi(i),Ii(i),this._section=b(\"section\",t+\"-list\")),o=(e&&(this._map.on(\"click\",this.collapse,this),S(i,{mouseenter:function(){S(n,\"click\",B),this.expand(),setTimeout(function(){E(n,\"click\",B)})},mouseleave:this.collapse},this)),this._layersLink=b(\"a\",t+\"-toggle\",i));o.href=\"#\",o.title=\"Layers\",o.setAttribute(\"role\",\"button\"),S(o,\"click\",B),S(o,\"focus\",this.expand,this),e||this.expand(),this._baseLayersList=b(\"div\",t+\"-base\",n),this._separator=b(\"div\",t+\"-separator\",n),this._overlaysList=b(\"div\",t+\"-overlays\",n),i.appendChild(n)},_getLayer:function(t){for(var i=0;i<this._layers.length;i++)if(this._layers[i]&&h(this._layers[i].layer)===t)return this._layers[i]},_addLayer:function(t,i,e){this._map&&t.on(\"add remove\",this._onLayerChange,this),this._layers.push({layer:t,name:i,overlay:e}),this.options.sortLayers&&this._layers.sort(a(function(t,i){return this.options.sortFunction(t.layer,i.layer,t.name,i.name)},this)),this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex)),this._expandIfNotCollapsed()},_update:function(){if(!this._container)return this;mi(this._baseLayersList),mi(this._overlaysList),this._layerControlInputs=[];for(var t,i,e,n=0,o=0;o<this._layers.length;o++)e=this._layers[o],this._addItem(e),i=i||e.overlay,t=t||!e.overlay,n+=e.overlay?0:1;return this.options.hideSingleBase&&(this._baseLayersList.style.display=(t=t&&1<n)?\"\":\"none\"),this._separator.style.display=i&&t?\"\":\"none\",this},_onLayerChange:function(t){this._handlingClick||this._update();var i=this._getLayer(h(t.target)),t=i.overlay?\"add\"===t.type?\"overlayadd\":\"overlayremove\":\"add\"===t.type?\"baselayerchange\":null;t&&this._map.fire(t,i)},_createRadioElement:function(t,i){t='<input type=\"radio\" class=\"leaflet-control-layers-selector\" name=\"'+t+'\"'+(i?' checked=\"checked\"':\"\")+\"/>\",i=document.createElement(\"div\");return i.innerHTML=t,i.firstChild},_addItem:function(t){var i,e=document.createElement(\"label\"),n=this._map.hasLayer(t.layer),n=(t.overlay?((i=document.createElement(\"input\")).type=\"checkbox\",i.className=\"leaflet-control-layers-selector\",i.defaultChecked=n):i=this._createRadioElement(\"leaflet-base-layers_\"+h(this),n),this._layerControlInputs.push(i),i.layerId=h(t.layer),S(i,\"click\",this._onInputClick,this),document.createElement(\"span\")),o=(n.innerHTML=\" \"+t.name,document.createElement(\"span\"));return e.appendChild(o),o.appendChild(i),o.appendChild(n),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(e),this._checkDisabledLayers(),e},_onInputClick:function(){var t,i,e=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=e.length-1;0<=s;s--)t=e[s],i=this._getLayer(t.layerId).layer,t.checked?n.push(i):t.checked||o.push(i);for(s=0;s<o.length;s++)this._map.hasLayer(o[s])&&this._map.removeLayer(o[s]);for(s=0;s<n.length;s++)this._map.hasLayer(n[s])||this._map.addLayer(n[s]);this._handlingClick=!1,this._refocusOnMap()},_checkDisabledLayers:function(){for(var t,i,e=this._layerControlInputs,n=this._map.getZoom(),o=e.length-1;0<=o;o--)t=e[o],i=this._getLayer(t.layerId).layer,t.disabled=void 0!==i.options.minZoom&&n<i.options.minZoom||void 0!==i.options.maxZoom&&n>i.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this}})),qi=I.extend({options:{position:\"topleft\",zoomInText:'<span aria-hidden=\"true\">+</span>',zoomInTitle:\"Zoom in\",zoomOutText:'<span aria-hidden=\"true\">−</span>',zoomOutTitle:\"Zoom out\"},onAdd:function(t){var i=\"leaflet-control-zoom\",e=b(\"div\",i+\" leaflet-bar\"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,i+\"-in\",e,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,i+\"-out\",e,this._zoomOut),this._updateDisabled(),t.on(\"zoomend zoomlevelschange\",this._updateDisabled,this),e},onRemove:function(t){t.off(\"zoomend zoomlevelschange\",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoom<this._map.getMaxZoom()&&this._map.zoomIn(this._map.options.zoomDelta*(t.shiftKey?3:1))},_zoomOut:function(t){!this._disabled&&this._map._zoom>this._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,i,e,n,o){e=b(\"a\",e,n);return e.innerHTML=t,e.href=\"#\",e.title=i,e.setAttribute(\"role\",\"button\"),e.setAttribute(\"aria-label\",i),Oi(e),S(e,\"click\",Ri),S(e,\"click\",o,this),S(e,\"click\",this._refocusOnMap,this),e},_updateDisabled:function(){var t=this._map,i=\"leaflet-disabled\";M(this._zoomInButton,i),M(this._zoomOutButton,i),this._zoomInButton.setAttribute(\"aria-disabled\",\"false\"),this._zoomOutButton.setAttribute(\"aria-disabled\",\"false\"),!this._disabled&&t._zoom!==t.getMinZoom()||(z(this._zoomOutButton,i),this._zoomOutButton.setAttribute(\"aria-disabled\",\"true\")),!this._disabled&&t._zoom!==t.getMaxZoom()||(z(this._zoomInButton,i),this._zoomInButton.setAttribute(\"aria-disabled\",\"true\"))}}),Gi=(A.mergeOptions({zoomControl:!0}),A.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new qi,this.addControl(this.zoomControl))}),I.extend({options:{position:\"bottomleft\",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var i=\"leaflet-control-scale\",e=b(\"div\",i),n=this.options;return this._addScales(n,i+\"-line\",e),t.on(n.updateWhenIdle?\"moveend\":\"move\",this._update,this),t.whenReady(this._update,this),e},onRemove:function(t){t.off(this.options.updateWhenIdle?\"moveend\":\"move\",this._update,this)},_addScales:function(t,i,e){t.metric&&(this._mScale=b(\"div\",i,e)),t.imperial&&(this._iScale=b(\"div\",i,e))},_update:function(){var t=this._map,i=t.getSize().y/2,t=t.distance(t.containerPointToLatLng([0,i]),t.containerPointToLatLng([this.options.maxWidth,i]));this._updateScales(t)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var i=this._getRoundNum(t);this._updateScale(this._mScale,i<1e3?i+\" m\":i/1e3+\" km\",i/t)},_updateImperial:function(t){var i,e,t=3.2808399*t;5280<t?(e=this._getRoundNum(i=t/5280),this._updateScale(this._iScale,e+\" mi\",e/i)):(e=this._getRoundNum(t),this._updateScale(this._iScale,e+\" ft\",e/t))},_updateScale:function(t,i,e){t.style.width=Math.round(this.options.maxWidth*e)+\"px\",t.innerHTML=i},_getRoundNum:function(t){var i=Math.pow(10,(Math.floor(t)+\"\").length-1),t=t/i;return i*(t=10<=t?10:5<=t?5:3<=t?3:2<=t?2:1)}})),Ki=I.extend({options:{position:\"bottomright\",prefix:'<a href=\"https://leafletjs.com\" title=\"A JavaScript library for interactive maps\">'+(P.inlineSvg?'<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"8\"><path fill=\"#4C7BE1\" d=\"M0 0h12v4H0z\"/><path fill=\"#FFD500\" d=\"M0 4h12v3H0z\"/><path fill=\"#E0BC00\" d=\"M0 7h12v1H0z\"/></svg> ':\"\")+\"Leaflet</a>\"},initialize:function(t){c(this,t),this._attributions={}},onAdd:function(t){for(var i in(t.attributionControl=this)._container=b(\"div\",\"leaflet-control-attribution\"),Oi(this._container),t._layers)t._layers[i].getAttribution&&this.addAttribution(t._layers[i].getAttribution());return this._update(),t.on(\"layeradd\",this._addAttribution,this),this._container},onRemove:function(t){t.off(\"layeradd\",this._addAttribution,this)},_addAttribution:function(t){t.layer.getAttribution&&(this.addAttribution(t.layer.getAttribution()),t.layer.once(\"remove\",function(){this.removeAttribution(t.layer.getAttribution())},this))},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t&&(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update()),this},removeAttribution:function(t){return t&&this._attributions[t]&&(this._attributions[t]--,this._update()),this},_update:function(){if(this._map){var t,i=[];for(t in this._attributions)this._attributions[t]&&i.push(t);var e=[];this.options.prefix&&e.push(this.options.prefix),i.length&&e.push(i.join(\", \")),this._container.innerHTML=e.join(' <span aria-hidden=\"true\">|</span> ')}}}),n=(A.mergeOptions({attributionControl:!0}),A.addInitHook(function(){this.options.attributionControl&&(new Ki).addTo(this)}),I.Layers=Vi,I.Zoom=qi,I.Scale=Gi,I.Attribution=Ki,Fi.layers=function(t,i,e){return new Vi(t,i,e)},Fi.zoom=function(t){return new qi(t)},Fi.scale=function(t){return new Gi(t)},Fi.attribution=function(t){return new Ki(t)},it.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled||(this._enabled=!0,this.addHooks()),this},disable:function(){return this._enabled&&(this._enabled=!1,this.removeHooks()),this},enabled:function(){return!!this._enabled}})),ft=(n.addTo=function(t,i){return t.addHandler(i,this),this},{Events:i}),Yi=P.touch?\"touchstart mousedown\":\"mousedown\",Xi=et.extend({options:{clickTolerance:3},initialize:function(t,i,e,n){c(this,n),this._element=t,this._dragStartTarget=i||t,this._preventOutline=e},enable:function(){this._enabled||(S(this._dragStartTarget,Yi,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Xi._dragging===this&&this.finishDrag(!0),E(this._dragStartTarget,Yi,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){var i,e;this._enabled&&(this._moved=!1,vi(this._element,\"leaflet-zoom-anim\")||(t.touches&&1!==t.touches.length?Xi._dragging===this&&this.finishDrag():Xi._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||((Xi._dragging=this)._preventOutline&&zi(this._element),Li(),ri(),this._moving||(this.fire(\"down\"),e=t.touches?t.touches[0]:t,i=Ci(this._element),this._startPoint=new p(e.clientX,e.clientY),this._startPos=bi(this._element),this._parentScale=Zi(i),e=\"mousedown\"===t.type,S(document,e?\"mousemove\":\"touchmove\",this._onMove,this),S(document,e?\"mouseup\":\"touchend touchcancel\",this._onUp,this)))))},_onMove:function(t){var i;this._enabled&&(t.touches&&1<t.touches.length?this._moved=!0:!(i=new p((i=t.touches&&1===t.touches.length?t.touches[0]:t).clientX,i.clientY)._subtract(this._startPoint)).x&&!i.y||Math.abs(i.x)+Math.abs(i.y)<this.options.clickTolerance||(i.x/=this._parentScale.x,i.y/=this._parentScale.y,B(t),this._moved||(this.fire(\"dragstart\"),this._moved=!0,z(document.body,\"leaflet-dragging\"),this._lastTarget=t.target||t.srcElement,window.SVGElementInstance&&this._lastTarget instanceof window.SVGElementInstance&&(this._lastTarget=this._lastTarget.correspondingUseElement),z(this._lastTarget,\"leaflet-drag-target\")),this._newPos=this._startPos.add(i),this._moving=!0,this._lastEvent=t,this._updatePosition()))},_updatePosition:function(){var t={originalEvent:this._lastEvent};this.fire(\"predrag\",t),Z(this._element,this._newPos),this.fire(\"drag\",t)},_onUp:function(){this._enabled&&this.finishDrag()},finishDrag:function(t){M(document.body,\"leaflet-dragging\"),this._lastTarget&&(M(this._lastTarget,\"leaflet-drag-target\"),this._lastTarget=null),E(document,\"mousemove touchmove\",this._onMove,this),E(document,\"mouseup touchend touchcancel\",this._onUp,this),Ti(),ai(),this._moved&&this._moving&&this.fire(\"dragend\",{noInertia:t,distance:this._newPos.distanceTo(this._startPos)}),this._moving=!1,Xi._dragging=!1}});function Ji(t,i){if(!i||!t.length)return t.slice();i*=i;return t=function(t,i){var e=t.length,n=new(typeof Uint8Array!=void 0+\"\"?Uint8Array:Array)(e);n[0]=n[e-1]=1,function t(i,e,n,o,s){var r,a,h,l=0;for(a=o+1;a<=s-1;a++)h=ee(i[a],i[o],i[s],!0),l<h&&(r=a,l=h);n<l&&(e[r]=1,t(i,e,n,o,r),t(i,e,n,r,s))}(t,n,i,0,e-1);var o,s=[];for(o=0;o<e;o++)n[o]&&s.push(t[o]);return s}(t=function(t,i){for(var e=[t[0]],n=1,o=0,s=t.length;n<s;n++)(function(t,i){var e=i.x-t.x,i=i.y-t.y;return e*e+i*i})(t[n],t[o])>i&&(e.push(t[n]),o=n);o<s-1&&e.push(t[s-1]);return e}(t,i),i)}function $i(t,i,e){return Math.sqrt(ee(t,i,e,!0))}function Qi(t,i,e,n,o){var s,r,a,h=n?Ui:ie(t,e),l=ie(i,e);for(Ui=l;;){if(!(h|l))return[t,i];if(h&l)return!1;a=ie(r=te(t,i,s=h||l,e,o),e),s===h?(t=r,h=a):(i=r,l=a)}}function te(t,i,e,n,o){var s,r,a=i.x-t.x,i=i.y-t.y,h=n.min,n=n.max;return 8&e?(s=t.x+a*(n.y-t.y)/i,r=n.y):4&e?(s=t.x+a*(h.y-t.y)/i,r=h.y):2&e?(s=n.x,r=t.y+i*(n.x-t.x)/a):1&e&&(s=h.x,r=t.y+i*(h.x-t.x)/a),new p(s,r,o)}function ie(t,i){var e=0;return t.x<i.min.x?e|=1:t.x>i.max.x&&(e|=2),t.y<i.min.y?e|=4:t.y>i.max.y&&(e|=8),e}function ee(t,i,e,n){var o=i.x,i=i.y,s=e.x-o,r=e.y-i,a=s*s+r*r;return 0<a&&(1<(a=((t.x-o)*s+(t.y-i)*r)/a)?(o=e.x,i=e.y):0<a&&(o+=s*a,i+=r*a)),s=t.x-o,r=t.y-i,n?s*s+r*r:new p(o,i)}function ne(t){return!d(t[0])||\"object\"!=typeof t[0][0]&&void 0!==t[0][0]}function oe(t){return console.warn(\"Deprecated use of _flat, please use L.LineUtil.isFlat instead.\"),ne(t)}gt={__proto__:null,simplify:Ji,pointToSegmentDistance:$i,closestPointOnSegment:function(t,i,e){return ee(t,i,e)},clipSegment:Qi,_getEdgeIntersection:te,_getBitCode:ie,_sqClosestPointOnSegment:ee,isFlat:ne,_flat:oe};function se(t,i,e){for(var n,o,s,r,a,h,l,u=[1,4,2,8],c=0,d=t.length;c<d;c++)t[c]._code=ie(t[c],i);for(s=0;s<4;s++){for(h=u[s],n=[],c=0,o=(d=t.length)-1;c<d;o=c++)r=t[c],a=t[o],r._code&h?a._code&h||((l=te(a,r,h,i,e))._code=ie(l,i),n.push(l)):(a._code&h&&((l=te(a,r,h,i,e))._code=ie(l,i),n.push(l)),n.push(r));t=n}return t}var vt={__proto__:null,clipPolygon:se},yt={project:function(t){return new p(t.lng,t.lat)},unproject:function(t){return new v(t.y,t.x)},bounds:new m([-180,-90],[180,90])},xt={R:6378137,R_MINOR:6356752.314245179,bounds:new m([-20037508.34279,-15496570.73972],[20037508.34279,18764656.23138]),project:function(t){var i=Math.PI/180,e=this.R,n=t.lat*i,o=this.R_MINOR/e,o=Math.sqrt(1-o*o),s=o*Math.sin(n),s=Math.tan(Math.PI/4-n/2)/Math.pow((1-s)/(1+s),o/2),n=-e*Math.log(Math.max(s,1e-10));return new p(t.lng*i*e,n)},unproject:function(t){for(var i,e=180/Math.PI,n=this.R,o=this.R_MINOR/n,s=Math.sqrt(1-o*o),r=Math.exp(-t.y/n),a=Math.PI/2-2*Math.atan(r),h=0,l=.1;h<15&&1e-7<Math.abs(l);h++)i=s*Math.sin(a),i=Math.pow((1-i)/(1+i),s/2),a+=l=Math.PI/2-2*Math.atan(r*i)-a;return new v(a*e,t.x*e/n)}},wt={__proto__:null,LonLat:yt,Mercator:xt,SphericalMercator:rt},bt=l({},st,{code:\"EPSG:3395\",projection:xt,transformation:ht(Pt=.5/(Math.PI*xt.R),.5,-Pt,.5)}),re=l({},st,{code:\"EPSG:4326\",projection:yt,transformation:ht(1/180,1,-1/180,.5)}),Lt=l({},ot,{projection:yt,transformation:ht(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,i){var e=i.lng-t.lng,i=i.lat-t.lat;return Math.sqrt(e*e+i*i)},infinite:!0}),o=(ot.Earth=st,ot.EPSG3395=bt,ot.EPSG3857=lt,ot.EPSG900913=ut,ot.EPSG4326=re,ot.Simple=Lt,et.extend({options:{pane:\"overlayPane\",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[h(t)]=this},removeInteractiveTarget:function(t){return delete this._map._targets[h(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var i,e=t.target;e.hasLayer(this)&&(this._map=e,this._zoomAnimated=e._zoomAnimated,this.getEvents&&(i=this.getEvents(),e.on(i,this),this.once(\"remove\",function(){e.off(i,this)},this)),this.onAdd(e),this.fire(\"add\"),e.fire(\"layeradd\",{layer:this}))}})),ae=(A.include({addLayer:function(t){if(!t._layerAdd)throw new Error(\"The provided object is not a Layer.\");var i=h(t);return this._layers[i]||((this._layers[i]=t)._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t)),this},removeLayer:function(t){var i=h(t);return this._layers[i]&&(this._loaded&&t.onRemove(this),delete this._layers[i],this._loaded&&(this.fire(\"layerremove\",{layer:t}),t.fire(\"remove\")),t._map=t._mapToAdd=null),this},hasLayer:function(t){return h(t)in this._layers},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},_addLayers:function(t){for(var i=0,e=(t=t?d(t)?t:[t]:[]).length;i<e;i++)this.addLayer(t[i])},_addZoomLimit:function(t){isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[h(t)]=t,this._updateZoomLevels())},_removeZoomLimit:function(t){t=h(t);this._zoomBoundLayers[t]&&(delete this._zoomBoundLayers[t],this._updateZoomLevels())},_updateZoomLevels:function(){var t,i=1/0,e=-1/0,n=this._getZoomSpan();for(t in this._zoomBoundLayers)var o=this._zoomBoundLayers[t].options,i=void 0===o.minZoom?i:Math.min(i,o.minZoom),e=void 0===o.maxZoom?e:Math.max(e,o.maxZoom);this._layersMaxZoom=e===-1/0?void 0:e,this._layersMinZoom=i===1/0?void 0:i,n!==this._getZoomSpan()&&this.fire(\"zoomlevelschange\"),void 0===this.options.maxZoom&&this._layersMaxZoom&&this.getZoom()>this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()<this._layersMinZoom&&this.setZoom(this._layersMinZoom)}}),o.extend({initialize:function(t,i){var e,n;if(c(this,i),this._layers={},t)for(e=0,n=t.length;e<n;e++)this.addLayer(t[e])},addLayer:function(t){var i=this.getLayerId(t);return this._layers[i]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){t=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[t]&&this._map.removeLayer(this._layers[t]),delete this._layers[t],this},hasLayer:function(t){return(\"number\"==typeof t?t:this.getLayerId(t))in this._layers},clearLayers:function(){return this.eachLayer(this.removeLayer,this)},invoke:function(t){var i,e,n=Array.prototype.slice.call(arguments,1);for(i in this._layers)(e=this._layers[i])[t]&&e[t].apply(e,n);return this},onAdd:function(t){this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t)},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},getLayer:function(t){return this._layers[t]},getLayers:function(){var t=[];return this.eachLayer(t.push,t),t},setZIndex:function(t){return this.invoke(\"setZIndex\",t)},getLayerId:h})),he=ae.extend({addLayer:function(t){return this.hasLayer(t)?this:(t.addEventParent(this),ae.prototype.addLayer.call(this,t),this.fire(\"layeradd\",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?((t=t in this._layers?this._layers[t]:t).removeEventParent(this),ae.prototype.removeLayer.call(this,t),this.fire(\"layerremove\",{layer:t})):this},setStyle:function(t){return this.invoke(\"setStyle\",t)},bringToFront:function(){return this.invoke(\"bringToFront\")},bringToBack:function(){return this.invoke(\"bringToBack\")},getBounds:function(){var t,i=new s;for(t in this._layers){var e=this._layers[t];i.extend(e.getBounds?e.getBounds():e.getLatLng())}return i}}),le=it.extend({options:{popupAnchor:[0,0],tooltipAnchor:[0,0],crossOrigin:!1},initialize:function(t){c(this,t)},createIcon:function(t){return this._createIcon(\"icon\",t)},createShadow:function(t){return this._createIcon(\"shadow\",t)},_createIcon:function(t,i){var e=this._getIconUrl(t);if(!e){if(\"icon\"===t)throw new Error(\"iconUrl not set in Icon options (see the docs).\");return null}e=this._createImg(e,i&&\"IMG\"===i.tagName?i:null);return this._setIconStyles(e,t),!this.options.crossOrigin&&\"\"!==this.options.crossOrigin||(e.crossOrigin=!0===this.options.crossOrigin?\"\":this.options.crossOrigin),e},_setIconStyles:function(t,i){var e=this.options,n=e[i+\"Size\"],n=_(n=\"number\"==typeof n?[n,n]:n),o=_(\"shadow\"===i&&e.shadowAnchor||e.iconAnchor||n&&n.divideBy(2,!0));t.className=\"leaflet-marker-\"+i+\" \"+(e.className||\"\"),o&&(t.style.marginLeft=-o.x+\"px\",t.style.marginTop=-o.y+\"px\"),n&&(t.style.width=n.x+\"px\",t.style.height=n.y+\"px\")},_createImg:function(t,i){return(i=i||document.createElement(\"img\")).src=t,i},_getIconUrl:function(t){return P.retina&&this.options[t+\"RetinaUrl\"]||this.options[t+\"Url\"]}});var ue=le.extend({options:{iconUrl:\"marker-icon.png\",iconRetinaUrl:\"marker-icon-2x.png\",shadowUrl:\"marker-shadow.png\",iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],tooltipAnchor:[16,-28],shadowSize:[41,41]},_getIconUrl:function(t){return\"string\"!=typeof ue.imagePath&&(ue.imagePath=this._detectIconPath()),(this.options.imagePath||ue.imagePath)+le.prototype._getIconUrl.call(this,t)},_stripUrl:function(t){function i(t,i,e){return(i=i.exec(t))&&i[e]}return(t=i(t,/^url\\((['\"])?(.+)\\1\\)$/,2))&&i(t,/^(.*)marker-icon\\.png$/,1)},_detectIconPath:function(){var t=b(\"div\",\"leaflet-default-icon-path\",document.body),i=pi(t,\"background-image\")||pi(t,\"backgroundImage\");if(document.body.removeChild(t),i=this._stripUrl(i))return i;t=document.querySelector('link[href$=\"leaflet.css\"]');return t?t.href.substring(0,t.href.length-\"leaflet.css\".length-1):\"\"}}),ce=n.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new Xi(t,t,!0)),this._draggable.on({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).enable(),z(t,\"leaflet-marker-draggable\")},removeHooks:function(){this._draggable.off({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).disable(),this._marker._icon&&M(this._marker._icon,\"leaflet-marker-draggable\")},moved:function(){return this._draggable&&this._draggable._moved},_adjustPan:function(t){var i=this._marker,e=i._map,n=this._marker.options.autoPanSpeed,o=this._marker.options.autoPanPadding,s=bi(i._icon),r=e.getPixelBounds(),a=e.getPixelOrigin(),a=f(r.min._subtract(a).add(o),r.max._subtract(a).subtract(o));a.contains(s)||(o=_((Math.max(a.max.x,s.x)-a.max.x)/(r.max.x-a.max.x)-(Math.min(a.min.x,s.x)-a.min.x)/(r.min.x-a.min.x),(Math.max(a.max.y,s.y)-a.max.y)/(r.max.y-a.max.y)-(Math.min(a.min.y,s.y)-a.min.y)/(r.min.y-a.min.y)).multiplyBy(n),e.panBy(o,{animate:!1}),this._draggable._newPos._add(o),this._draggable._startPos._add(o),Z(i._icon,this._draggable._newPos),this._onDrag(t),this._panRequest=x(this._adjustPan.bind(this,t)))},_onDragStart:function(){this._oldLatLng=this._marker.getLatLng(),this._marker.closePopup&&this._marker.closePopup(),this._marker.fire(\"movestart\").fire(\"dragstart\")},_onPreDrag:function(t){this._marker.options.autoPan&&(r(this._panRequest),this._panRequest=x(this._adjustPan.bind(this,t)))},_onDrag:function(t){var i=this._marker,e=i._shadow,n=bi(i._icon),o=i._map.layerPointToLatLng(n);e&&Z(e,n),i._latlng=o,t.latlng=o,t.oldLatLng=this._oldLatLng,i.fire(\"move\",t).fire(\"drag\",t)},_onDragEnd:function(t){r(this._panRequest),delete this._oldLatLng,this._marker.fire(\"moveend\").fire(\"dragend\",t)}}),de=o.extend({options:{icon:new ue,interactive:!0,keyboard:!0,title:\"\",alt:\"Marker\",zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250,pane:\"markerPane\",shadowPane:\"shadowPane\",bubblingMouseEvents:!1,autoPanOnFocus:!0,draggable:!1,autoPan:!1,autoPanPadding:[50,50],autoPanSpeed:10},initialize:function(t,i){c(this,i),this._latlng=w(t)},onAdd:function(t){this._zoomAnimated=this._zoomAnimated&&t.options.markerZoomAnimation,this._zoomAnimated&&t.on(\"zoomanim\",this._animateZoom,this),this._initIcon(),this.update()},onRemove:function(t){this.dragging&&this.dragging.enabled()&&(this.options.draggable=!0,this.dragging.removeHooks()),delete this.dragging,this._zoomAnimated&&t.off(\"zoomanim\",this._animateZoom,this),this._removeIcon(),this._removeShadow()},getEvents:function(){return{zoom:this.update,viewreset:this.update}},getLatLng:function(){return this._latlng},setLatLng:function(t){var i=this._latlng;return this._latlng=w(t),this.update(),this.fire(\"move\",{oldLatLng:i,latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update()},getIcon:function(){return this.options.icon},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup,this._popup.options),this},getElement:function(){return this._icon},update:function(){var t;return this._icon&&this._map&&(t=this._map.latLngToLayerPoint(this._latlng).round(),this._setPos(t)),this},_initIcon:function(){var t=this.options,i=\"leaflet-zoom-\"+(this._zoomAnimated?\"animated\":\"hide\"),e=t.icon.createIcon(this._icon),n=!1,e=(e!==this._icon&&(this._icon&&this._removeIcon(),n=!0,t.title&&(e.title=t.title),\"IMG\"===e.tagName&&(e.alt=t.alt||\"\")),z(e,i),t.keyboard&&(e.tabIndex=\"0\",e.setAttribute(\"role\",\"button\")),this._icon=e,t.riseOnHover&&this.on({mouseover:this._bringToFront,mouseout:this._resetZIndex}),this.options.autoPanOnFocus&&S(e,\"focus\",this._panOnFocus,this),t.icon.createShadow(this._shadow)),o=!1;e!==this._shadow&&(this._removeShadow(),o=!0),e&&(z(e,i),e.alt=\"\"),this._shadow=e,t.opacity<1&&this._updateOpacity(),n&&this.getPane().appendChild(this._icon),this._initInteraction(),e&&o&&this.getPane(t.shadowPane).appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&this.off({mouseover:this._bringToFront,mouseout:this._resetZIndex}),this.options.autoPanOnFocus&&E(this._icon,\"focus\",this._panOnFocus,this),T(this._icon),this.removeInteractiveTarget(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&T(this._shadow),this._shadow=null},_setPos:function(t){this._icon&&Z(this._icon,t),this._shadow&&Z(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon&&(this._icon.style.zIndex=this._zIndex+t)},_animateZoom:function(t){t=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(t)},_initInteraction:function(){var t;this.options.interactive&&(z(this._icon,\"leaflet-interactive\"),this.addInteractiveTarget(this._icon),ce&&(t=this.options.draggable,this.dragging&&(t=this.dragging.enabled(),this.dragging.disable()),this.dragging=new ce(this),t&&this.dragging.enable()))},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},_updateOpacity:function(){var t=this.options.opacity;this._icon&&C(this._icon,t),this._shadow&&C(this._shadow,t)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)},_panOnFocus:function(){var t,i,e=this._map;e&&(t=(i=this.options.icon.options).iconSize?_(i.iconSize):_(0,0),i=i.iconAnchor?_(i.iconAnchor):_(0,0),e.panInside(this._latlng,{paddingTopLeft:i,paddingBottomRight:t.subtract(i)}))},_getPopupAnchor:function(){return this.options.icon.options.popupAnchor},_getTooltipAnchor:function(){return this.options.icon.options.tooltipAnchor}});var _e=o.extend({options:{stroke:!0,color:\"#3388ff\",weight:3,opacity:1,lineCap:\"round\",lineJoin:\"round\",dashArray:null,dashOffset:null,fill:!1,fillColor:null,fillOpacity:.2,fillRule:\"evenodd\",interactive:!0,bubblingMouseEvents:!0},beforeAdd:function(t){this._renderer=t.getRenderer(this)},onAdd:function(){this._renderer._initPath(this),this._reset(),this._renderer._addPath(this)},onRemove:function(){this._renderer._removePath(this)},redraw:function(){return this._map&&this._renderer._updatePath(this),this},setStyle:function(t){return c(this,t),this._renderer&&(this._renderer._updateStyle(this),this.options.stroke&&t&&Object.prototype.hasOwnProperty.call(t,\"weight\")&&this._updateBounds()),this},bringToFront:function(){return this._renderer&&this._renderer._bringToFront(this),this},bringToBack:function(){return this._renderer&&this._renderer._bringToBack(this),this},getElement:function(){return this._path},_reset:function(){this._project(),this._update()},_clickTolerance:function(){return(this.options.stroke?this.options.weight/2:0)+(this._renderer.options.tolerance||0)}}),pe=_e.extend({options:{fill:!0,radius:10},initialize:function(t,i){c(this,i),this._latlng=w(t),this._radius=this.options.radius},setLatLng:function(t){var i=this._latlng;return this._latlng=w(t),this.redraw(),this.fire(\"move\",{oldLatLng:i,latlng:this._latlng})},getLatLng:function(){return this._latlng},setRadius:function(t){return this.options.radius=this._radius=t,this.redraw()},getRadius:function(){return this._radius},setStyle:function(t){var i=t&&t.radius||this._radius;return _e.prototype.setStyle.call(this,t),this.setRadius(i),this},_project:function(){this._point=this._map.latLngToLayerPoint(this._latlng),this._updateBounds()},_updateBounds:function(){var t=this._radius,i=this._radiusY||t,e=this._clickTolerance(),t=[t+e,i+e];this._pxBounds=new m(this._point.subtract(t),this._point.add(t))},_update:function(){this._map&&this._updatePath()},_updatePath:function(){this._renderer._updateCircle(this)},_empty:function(){return this._radius&&!this._renderer._bounds.intersects(this._pxBounds)},_containsPoint:function(t){return t.distanceTo(this._point)<=this._radius+this._clickTolerance()}});var me=pe.extend({initialize:function(t,i,e){if(c(this,i=\"number\"==typeof i?l({},e,{radius:i}):i),this._latlng=w(t),isNaN(this.options.radius))throw new Error(\"Circle radius cannot be NaN\");this._mRadius=this.options.radius},setRadius:function(t){return this._mRadius=t,this.redraw()},getRadius:function(){return this._mRadius},getBounds:function(){var t=[this._radius,this._radiusY||this._radius];return new s(this._map.layerPointToLatLng(this._point.subtract(t)),this._map.layerPointToLatLng(this._point.add(t)))},setStyle:_e.prototype.setStyle,_project:function(){var t,i,e,n,o,s=this._latlng.lng,r=this._latlng.lat,a=this._map,h=a.options.crs;h.distance===st.distance?(n=Math.PI/180,o=this._mRadius/st.R/n,t=a.project([r+o,s]),i=a.project([r-o,s]),i=t.add(i).divideBy(2),e=a.unproject(i).lat,n=Math.acos((Math.cos(o*n)-Math.sin(r*n)*Math.sin(e*n))/(Math.cos(r*n)*Math.cos(e*n)))/n,!isNaN(n)&&0!==n||(n=o/Math.cos(Math.PI/180*r)),this._point=i.subtract(a.getPixelOrigin()),this._radius=isNaN(n)?0:i.x-a.project([e,s-n]).x,this._radiusY=i.y-t.y):(o=h.unproject(h.project(this._latlng).subtract([this._mRadius,0])),this._point=a.latLngToLayerPoint(this._latlng),this._radius=this._point.x-a.latLngToLayerPoint(o).x),this._updateBounds()}});var fe=_e.extend({options:{smoothFactor:1,noClip:!1},initialize:function(t,i){c(this,i),this._setLatLngs(t)},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._setLatLngs(t),this.redraw()},isEmpty:function(){return!this._latlngs.length},closestLayerPoint:function(t){for(var i=1/0,e=null,n=ee,o=0,s=this._parts.length;o<s;o++)for(var r=this._parts[o],a=1,h=r.length;a<h;a++){var l,u,c=n(t,l=r[a-1],u=r[a],!0);c<i&&(i=c,e=n(t,l,u))}return e&&(e.distance=Math.sqrt(i)),e},getCenter:function(){if(!this._map)throw new Error(\"Must add layer to map before using getCenter()\");var t,i,e,n,o,s,r=this._rings[0],a=r.length;if(!a)return null;for(i=t=0;t<a-1;t++)i+=r[t].distanceTo(r[t+1])/2;if(0===i)return this._map.layerPointToLatLng(r[0]);for(e=t=0;t<a-1;t++)if(n=r[t],o=r[t+1],i<(e+=s=n.distanceTo(o)))return this._map.layerPointToLatLng([o.x-(s=(e-i)/s)*(o.x-n.x),o.y-s*(o.y-n.y)])},getBounds:function(){return this._bounds},addLatLng:function(t,i){return i=i||this._defaultShape(),t=w(t),i.push(t),this._bounds.extend(t),this.redraw()},_setLatLngs:function(t){this._bounds=new s,this._latlngs=this._convertLatLngs(t)},_defaultShape:function(){return ne(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(t){for(var i=[],e=ne(t),n=0,o=t.length;n<o;n++)e?(i[n]=w(t[n]),this._bounds.extend(i[n])):i[n]=this._convertLatLngs(t[n]);return i},_project:function(){var t=new m;this._rings=[],this._projectLatlngs(this._latlngs,this._rings,t),this._bounds.isValid()&&t.isValid()&&(this._rawPxBounds=t,this._updateBounds())},_updateBounds:function(){var t=this._clickTolerance(),t=new p(t,t);this._rawPxBounds&&(this._pxBounds=new m([this._rawPxBounds.min.subtract(t),this._rawPxBounds.max.add(t)]))},_projectLatlngs:function(t,i,e){var n,o,s=t[0]instanceof v,r=t.length;if(s){for(o=[],n=0;n<r;n++)o[n]=this._map.latLngToLayerPoint(t[n]),e.extend(o[n]);i.push(o)}else for(n=0;n<r;n++)this._projectLatlngs(t[n],i,e)},_clipPoints:function(){var t=this._renderer._bounds;if(this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var i,e,n,o,s=this._parts,r=0,a=0,h=this._rings.length;r<h;r++)for(i=0,e=(o=this._rings[r]).length;i<e-1;i++)(n=Qi(o[i],o[i+1],t,i,!0))&&(s[a]=s[a]||[],s[a].push(n[0]),n[1]===o[i+1]&&i!==e-2||(s[a].push(n[1]),a++))},_simplifyPoints:function(){for(var t=this._parts,i=this.options.smoothFactor,e=0,n=t.length;e<n;e++)t[e]=Ji(t[e],i)},_update:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),this._updatePath())},_updatePath:function(){this._renderer._updatePoly(this)},_containsPoint:function(t,i){var e,n,o,s,r,a,h=this._clickTolerance();if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(e=0,s=this._parts.length;e<s;e++)for(n=0,o=(r=(a=this._parts[e]).length)-1;n<r;o=n++)if((i||0!==n)&&$i(t,a[o],a[n])<=h)return!0;return!1}});fe._flat=oe;var ge=fe.extend({options:{fill:!0},isEmpty:function(){return!this._latlngs.length||!this._latlngs[0].length},getCenter:function(){if(!this._map)throw new Error(\"Must add layer to map before using getCenter()\");var t,i,e,n,o,s,r,a,h,l=this._rings[0],u=l.length;if(!u)return null;for(t=s=r=a=0,i=u-1;t<u;i=t++)e=l[t],n=l[i],o=e.y*n.x-n.y*e.x,r+=(e.x+n.x)*o,a+=(e.y+n.y)*o,s+=3*o;return h=0===s?l[0]:[r/s,a/s],this._map.layerPointToLatLng(h)},_convertLatLngs:function(t){var t=fe.prototype._convertLatLngs.call(this,t),i=t.length;return 2<=i&&t[0]instanceof v&&t[0].equals(t[i-1])&&t.pop(),t},_setLatLngs:function(t){fe.prototype._setLatLngs.call(this,t),ne(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return(ne(this._latlngs[0])?this._latlngs:this._latlngs[0])[0]},_clipPoints:function(){var t=this._renderer._bounds,i=this.options.weight,i=new p(i,i),t=new m(t.min.subtract(i),t.max.add(i));if(this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var e,n=0,o=this._rings.length;n<o;n++)(e=se(this._rings[n],t,!0)).length&&this._parts.push(e)},_updatePath:function(){this._renderer._updatePoly(this,!0)},_containsPoint:function(t){var i,e,n,o,s,r,a,h,l=!1;if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(o=0,a=this._parts.length;o<a;o++)for(s=0,r=(h=(i=this._parts[o]).length)-1;s<h;r=s++)e=i[s],n=i[r],e.y>t.y!=n.y>t.y&&t.x<(n.x-e.x)*(t.y-e.y)/(n.y-e.y)+e.x&&(l=!l);return l||fe.prototype._containsPoint.call(this,t,!0)}});var ve=he.extend({initialize:function(t,i){c(this,i),this._layers={},t&&this.addData(t)},addData:function(t){var i,e,n,o=d(t)?t:t.features;if(o){for(i=0,e=o.length;i<e;i++)((n=o[i]).geometries||n.geometry||n.features||n.coordinates)&&this.addData(n);return this}var s=this.options;if(s.filter&&!s.filter(t))return this;var r=ye(t,s);return r?(r.feature=ze(t),r.defaultOptions=r.options,this.resetStyle(r),s.onEachFeature&&s.onEachFeature(t,r),this.addLayer(r)):this},resetStyle:function(t){return void 0===t?this.eachLayer(this.resetStyle,this):(t.options=l({},t.defaultOptions),this._setLayerStyle(t,this.options.style),this)},setStyle:function(i){return this.eachLayer(function(t){this._setLayerStyle(t,i)},this)},_setLayerStyle:function(t,i){t.setStyle&&(\"function\"==typeof i&&(i=i(t.feature)),t.setStyle(i))}});function ye(t,i){var e,n,o,s,r=\"Feature\"===t.type?t.geometry:t,a=r?r.coordinates:null,h=[],l=i&&i.pointToLayer,u=i&&i.coordsToLatLng||we;if(!a&&!r)return null;switch(r.type){case\"Point\":return xe(l,t,e=u(a),i);case\"MultiPoint\":for(o=0,s=a.length;o<s;o++)e=u(a[o]),h.push(xe(l,t,e,i));return new he(h);case\"LineString\":case\"MultiLineString\":return n=Pe(a,\"LineString\"===r.type?0:1,u),new fe(n,i);case\"Polygon\":case\"MultiPolygon\":return n=Pe(a,\"Polygon\"===r.type?1:2,u),new ge(n,i);case\"GeometryCollection\":for(o=0,s=r.geometries.length;o<s;o++){var c=ye({geometry:r.geometries[o],type:\"Feature\",properties:t.properties},i);c&&h.push(c)}return new he(h);default:throw new Error(\"Invalid GeoJSON object.\")}}function xe(t,i,e,n){return t?t(i,e):new de(e,n&&n.markersInheritOptions&&n)}function we(t){return new v(t[1],t[0],t[2])}function Pe(t,i,e){for(var n,o=[],s=0,r=t.length;s<r;s++)n=i?Pe(t[s],i-1,e):(e||we)(t[s]),o.push(n);return o}function be(t,i){return void 0!==(t=w(t)).alt?[e(t.lng,i),e(t.lat,i),e(t.alt,i)]:[e(t.lng,i),e(t.lat,i)]}function Le(t,i,e,n){for(var o=[],s=0,r=t.length;s<r;s++)o.push(i?Le(t[s],i-1,e,n):be(t[s],n));return!i&&e&&o.push(o[0]),o}function Te(t,i){return t.feature?l({},t.feature,{geometry:i}):ze(i)}function ze(t){return\"Feature\"===t.type||\"FeatureCollection\"===t.type?t:{type:\"Feature\",properties:{},geometry:t}}Tt={toGeoJSON:function(t){return Te(this,{type:\"Point\",coordinates:be(this.getLatLng(),t)})}};function Me(t,i){return new ve(t,i)}de.include(Tt),me.include(Tt),pe.include(Tt),fe.include({toGeoJSON:function(t){var i=!ne(this._latlngs);return Te(this,{type:(i?\"Multi\":\"\")+\"LineString\",coordinates:Le(this._latlngs,i?1:0,!1,t)})}}),ge.include({toGeoJSON:function(t){var i=!ne(this._latlngs),e=i&&!ne(this._latlngs[0]),t=Le(this._latlngs,e?2:i?1:0,!0,t);return Te(this,{type:(e?\"Multi\":\"\")+\"Polygon\",coordinates:t=i?t:[t]})}}),ae.include({toMultiPoint:function(i){var e=[];return this.eachLayer(function(t){e.push(t.toGeoJSON(i).geometry.coordinates)}),Te(this,{type:\"MultiPoint\",coordinates:e})},toGeoJSON:function(i){var t=this.feature&&this.feature.geometry&&this.feature.geometry.type;if(\"MultiPoint\"===t)return this.toMultiPoint(i);var e=\"GeometryCollection\"===t,n=[];return this.eachLayer(function(t){t.toGeoJSON&&(t=t.toGeoJSON(i),e?n.push(t.geometry):\"FeatureCollection\"===(t=ze(t)).type?n.push.apply(n,t.features):n.push(t))}),e?Te(this,{geometries:n,type:\"GeometryCollection\"}):{type:\"FeatureCollection\",features:n}}});var zt=Me,Ce=o.extend({options:{opacity:1,alt:\"\",interactive:!1,crossOrigin:!1,errorOverlayUrl:\"\",zIndex:1,className:\"\"},initialize:function(t,i,e){this._url=t,this._bounds=g(i),c(this,e)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(z(this._image,\"leaflet-interactive\"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){T(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(t){return this.options.opacity=t,this._image&&this._updateOpacity(),this},setStyle:function(t){return t.opacity&&this.setOpacity(t.opacity),this},bringToFront:function(){return this._map&&fi(this._image),this},bringToBack:function(){return this._map&&gi(this._image),this},setUrl:function(t){return this._url=t,this._image&&(this._image.src=t),this},setBounds:function(t){return this._bounds=g(t),this._map&&this._reset(),this},getEvents:function(){var t={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var t=\"IMG\"===this._url.tagName,i=this._image=t?this._url:b(\"img\");z(i,\"leaflet-image-layer\"),this._zoomAnimated&&z(i,\"leaflet-zoom-animated\"),this.options.className&&z(i,this.options.className),i.onselectstart=u,i.onmousemove=u,i.onload=a(this.fire,this,\"load\"),i.onerror=a(this._overlayOnError,this,\"error\"),!this.options.crossOrigin&&\"\"!==this.options.crossOrigin||(i.crossOrigin=!0===this.options.crossOrigin?\"\":this.options.crossOrigin),this.options.zIndex&&this._updateZIndex(),t?this._url=i.src:(i.src=this._url,i.alt=this.options.alt)},_animateZoom:function(t){var i=this._map.getZoomScale(t.zoom),t=this._map._latLngBoundsToNewLayerBounds(this._bounds,t.zoom,t.center).min;Pi(this._image,t,i)},_reset:function(){var t=this._image,i=new m(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),e=i.getSize();Z(t,i.min),t.style.width=e.x+\"px\",t.style.height=e.y+\"px\"},_updateOpacity:function(){C(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire(\"error\");var t=this.options.errorOverlayUrl;t&&this._url!==t&&(this._url=t,this._image.src=t)},getCenter:function(){return this._bounds.getCenter()}}),Ze=Ce.extend({options:{autoplay:!0,loop:!0,keepAspectRatio:!0,muted:!1,playsInline:!0},_initImage:function(){var t=\"VIDEO\"===this._url.tagName,i=this._image=t?this._url:b(\"video\");if(z(i,\"leaflet-image-layer\"),this._zoomAnimated&&z(i,\"leaflet-zoom-animated\"),this.options.className&&z(i,this.options.className),i.onselectstart=u,i.onmousemove=u,i.onloadeddata=a(this.fire,this,\"load\"),t){for(var e=i.getElementsByTagName(\"source\"),n=[],o=0;o<e.length;o++)n.push(e[o].src);this._url=0<e.length?n:[i.src]}else{d(this._url)||(this._url=[this._url]),!this.options.keepAspectRatio&&Object.prototype.hasOwnProperty.call(i.style,\"objectFit\")&&(i.style.objectFit=\"fill\"),i.autoplay=!!this.options.autoplay,i.loop=!!this.options.loop,i.muted=!!this.options.muted,i.playsInline=!!this.options.playsInline;for(var s=0;s<this._url.length;s++){var r=b(\"source\");r.src=this._url[s],i.appendChild(r)}}}});var Se=Ce.extend({_initImage:function(){var t=this._image=this._url;z(t,\"leaflet-image-layer\"),this._zoomAnimated&&z(t,\"leaflet-zoom-animated\"),this.options.className&&z(t,this.options.className),t.onselectstart=u,t.onmousemove=u}});var O=o.extend({options:{interactive:!1,offset:[0,0],className:\"\",pane:void 0},initialize:function(t,i){c(this,t),this._source=i},openOn:function(t){return(t=arguments.length?t:this._source._map).hasLayer(this)||t.addLayer(this),this},close:function(){return this._map&&this._map.removeLayer(this),this},toggle:function(t){return this._map?this.close():(arguments.length?this._source=t:t=this._source,this._prepareOpen(),this.openOn(t._map)),this},onAdd:function(t){this._zoomAnimated=t._zoomAnimated,this._container||this._initLayout(),t._fadeAnimated&&C(this._container,0),clearTimeout(this._removeTimeout),this.getPane().appendChild(this._container),this.update(),t._fadeAnimated&&C(this._container,1),this.bringToFront(),this.options.interactive&&(z(this._container,\"leaflet-interactive\"),this.addInteractiveTarget(this._container))},onRemove:function(t){t._fadeAnimated?(C(this._container,0),this._removeTimeout=setTimeout(a(T,void 0,this._container),200)):T(this._container),this.options.interactive&&(M(this._container,\"leaflet-interactive\"),this.removeInteractiveTarget(this._container))},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=w(t),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(t){return this._content=t,this.update(),this},getElement:function(){return this._container},update:function(){this._map&&(this._container.style.visibility=\"hidden\",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility=\"\",this._adjustPan())},getEvents:function(){var t={zoom:this._updatePosition,viewreset:this._updatePosition};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},isOpen:function(){return!!this._map&&this._map.hasLayer(this)},bringToFront:function(){return this._map&&fi(this._container),this},bringToBack:function(){return this._map&&gi(this._container),this},_prepareOpen:function(t){if(!(e=this._source)._map)return!1;if(e instanceof he){var i,e=null,n=this._source._layers;for(i in n)if(n[i]._map){e=n[i];break}if(!e)return!1;this._source=e}if(!t)if(e.getCenter)t=e.getCenter();else if(e.getLatLng)t=e.getLatLng();else{if(!e.getBounds)throw new Error(\"Unable to get source layer LatLng.\");t=e.getBounds().getCenter()}return this.setLatLng(t),this._map&&this.update(),!0},_updateContent:function(){if(this._content){var t=this._contentNode,i=\"function\"==typeof this._content?this._content(this._source||this):this._content;if(\"string\"==typeof i)t.innerHTML=i;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(i)}this.fire(\"contentupdate\")}},_updatePosition:function(){var t,i,e;this._map&&(i=this._map.latLngToLayerPoint(this._latlng),t=_(this.options.offset),e=this._getAnchor(),this._zoomAnimated?Z(this._container,i.add(e)):t=t.add(i).add(e),i=this._containerBottom=-t.y,e=this._containerLeft=-Math.round(this._containerWidth/2)+t.x,this._container.style.bottom=i+\"px\",this._container.style.left=e+\"px\")},_getAnchor:function(){return[0,0]}}),ke=(A.include({_initOverlay:function(t,i,e,n){var o=i;return o instanceof t||(o=new t(n).setContent(i)),e&&o.setLatLng(e),o}}),o.include({_initOverlay:function(t,i,e,n){var o=e;return o instanceof t?(c(o,n),o._source=this):(o=i&&!n?i:new t(n,this)).setContent(e),o}}),O.extend({options:{pane:\"popupPane\",offset:[0,7],maxWidth:300,minWidth:50,maxHeight:null,autoPan:!0,autoPanPaddingTopLeft:null,autoPanPaddingBottomRight:null,autoPanPadding:[5,5],keepInView:!1,closeButton:!0,autoClose:!0,closeOnEscapeKey:!0,className:\"\"},openOn:function(t){return!(t=arguments.length?t:this._source._map).hasLayer(this)&&t._popup&&t._popup.options.autoClose&&t.removeLayer(t._popup),t._popup=this,O.prototype.openOn.call(this,t)},onAdd:function(t){O.prototype.onAdd.call(this,t),t.fire(\"popupopen\",{popup:this}),this._source&&(this._source.fire(\"popupopen\",{popup:this},!0),this._source instanceof _e||this._source.on(\"preclick\",Ai))},onRemove:function(t){O.prototype.onRemove.call(this,t),t.fire(\"popupclose\",{popup:this}),this._source&&(this._source.fire(\"popupclose\",{popup:this},!0),this._source instanceof _e||this._source.off(\"preclick\",Ai))},getEvents:function(){var t=O.prototype.getEvents.call(this);return(void 0!==this.options.closeOnClick?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(t.preclick=this.close),this.options.keepInView&&(t.moveend=this._adjustPan),t},_initLayout:function(){var t=\"leaflet-popup\",i=this._container=b(\"div\",t+\" \"+(this.options.className||\"\")+\" leaflet-zoom-animated\"),e=this._wrapper=b(\"div\",t+\"-content-wrapper\",i);this._contentNode=b(\"div\",t+\"-content\",e),Oi(i),Ii(this._contentNode),S(i,\"contextmenu\",Ai),this._tipContainer=b(\"div\",t+\"-tip-container\",i),this._tip=b(\"div\",t+\"-tip\",this._tipContainer),this.options.closeButton&&((e=this._closeButton=b(\"a\",t+\"-close-button\",i)).setAttribute(\"role\",\"button\"),e.setAttribute(\"aria-label\",\"Close popup\"),e.href=\"#close\",e.innerHTML='<span aria-hidden=\"true\">×</span>',S(e,\"click\",this.close,this))},_updateLayout:function(){var t=this._contentNode,i=t.style,e=(i.width=\"\",i.whiteSpace=\"nowrap\",t.offsetWidth),e=Math.min(e,this.options.maxWidth),e=(e=Math.max(e,this.options.minWidth),i.width=e+1+\"px\",i.whiteSpace=\"\",i.height=\"\",t.offsetHeight),n=this.options.maxHeight,o=\"leaflet-popup-scrolled\";n&&n<e?(i.height=n+\"px\",z(t,o)):M(t,o),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var t=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),i=this._getAnchor();Z(this._container,t.add(i))},_adjustPan:function(t){var i,e,n,o,s,r,a,h;this.options.autoPan&&(this._map._panAnim&&this._map._panAnim.stop(),i=this._map,e=parseInt(pi(this._container,\"marginBottom\"),10)||0,e=this._container.offsetHeight+e,h=this._containerWidth,(n=new p(this._containerLeft,-e-this._containerBottom))._add(bi(this._container)),n=i.layerPointToContainerPoint(n),s=_(this.options.autoPanPadding),o=_(this.options.autoPanPaddingTopLeft||s),s=_(this.options.autoPanPaddingBottomRight||s),r=i.getSize(),a=0,n.x+h+s.x>r.x&&(a=n.x+h-r.x+s.x),n.x-a-o.x<(h=0)&&(a=n.x-o.x),n.y+e+s.y>r.y&&(h=n.y+e-r.y+s.y),n.y-h-o.y<0&&(h=n.y-o.y),(a||h)&&i.fire(\"autopanstart\").panBy([a,h],{animate:t&&\"moveend\"===t.type}))},_getAnchor:function(){return _(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}})),Ee=(A.mergeOptions({closePopupOnClick:!0}),A.include({openPopup:function(t,i,e){return this._initOverlay(ke,t,i,e).openOn(this),this},closePopup:function(t){return(t=arguments.length?t:this._popup)&&t.close(),this}}),o.include({bindPopup:function(t,i){return this._popup=this._initOverlay(ke,this._popup,t,i),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t){return this._popup&&this._popup._prepareOpen(t)&&this._popup.openOn(this._map),this},closePopup:function(){return this._popup&&this._popup.close(),this},togglePopup:function(){return this._popup&&this._popup.toggle(this),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var i;this._popup&&this._map&&(Ri(t),i=t.layer||t.target,this._popup._source!==i||i instanceof _e?(this._popup._source=i,this.openPopup(t.latlng)):this._map.hasLayer(this._popup)?this.closePopup():this.openPopup(t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}}),O.extend({options:{pane:\"tooltipPane\",offset:[0,0],direction:\"auto\",permanent:!1,sticky:!1,opacity:.9},onAdd:function(t){O.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire(\"tooltipopen\",{tooltip:this}),this._source&&(this.addEventParent(this._source),this._source.fire(\"tooltipopen\",{tooltip:this},!0))},onRemove:function(t){O.prototype.onRemove.call(this,t),t.fire(\"tooltipclose\",{tooltip:this}),this._source&&(this.removeEventParent(this._source),this._source.fire(\"tooltipclose\",{tooltip:this},!0))},getEvents:function(){var t=O.prototype.getEvents.call(this);return this.options.permanent||(t.preclick=this.close),t},_initLayout:function(){var t=\"leaflet-tooltip \"+(this.options.className||\"\")+\" leaflet-zoom-\"+(this._zoomAnimated?\"animated\":\"hide\");this._contentNode=this._container=b(\"div\",t)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var i,e=this._map,n=this._container,o=e.latLngToContainerPoint(e.getCenter()),e=e.layerPointToContainerPoint(t),s=this.options.direction,r=n.offsetWidth,a=n.offsetHeight,h=_(this.options.offset),l=this._getAnchor(),e=\"top\"===s?(i=r/2,a):\"bottom\"===s?(i=r/2,0):(i=\"center\"===s?r/2:\"right\"===s?0:\"left\"===s?r:e.x<o.x?(s=\"right\",0):(s=\"left\",r+2*(h.x+l.x)),a/2);t=t.subtract(_(i,e,!0)).add(h).add(l),M(n,\"leaflet-tooltip-right\"),M(n,\"leaflet-tooltip-left\"),M(n,\"leaflet-tooltip-top\"),M(n,\"leaflet-tooltip-bottom\"),z(n,\"leaflet-tooltip-\"+s),Z(n,t)},_updatePosition:function(){var t=this._map.latLngToLayerPoint(this._latlng);this._setPosition(t)},setOpacity:function(t){this.options.opacity=t,this._container&&C(this._container,t)},_animateZoom:function(t){t=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);this._setPosition(t)},_getAnchor:function(){return _(this._source&&this._source._getTooltipAnchor&&!this.options.sticky?this._source._getTooltipAnchor():[0,0])}})),Be=(A.include({openTooltip:function(t,i,e){return this._initOverlay(Ee,t,i,e).openOn(this),this},closeTooltip:function(t){return t.close(),this}}),o.include({bindTooltip:function(t,i){return this._tooltip&&this.isTooltipOpen()&&this.unbindTooltip(),this._tooltip=this._initOverlay(Ee,this._tooltip,t,i),this._initTooltipInteractions(),this._tooltip.options.permanent&&this._map&&this._map.hasLayer(this)&&this.openTooltip(),this},unbindTooltip:function(){return this._tooltip&&(this._initTooltipInteractions(!0),this.closeTooltip(),this._tooltip=null),this},_initTooltipInteractions:function(t){var i,e;!t&&this._tooltipHandlersAdded||(i=t?\"off\":\"on\",e={remove:this.closeTooltip,move:this._moveTooltip},this._tooltip.options.permanent?e.add=this._openTooltip:(e.mouseover=this._openTooltip,e.mouseout=this.closeTooltip,e.click=this._openTooltip),this._tooltip.options.sticky&&(e.mousemove=this._moveTooltip),this[i](e),this._tooltipHandlersAdded=!t)},openTooltip:function(t){return this._tooltip&&this._tooltip._prepareOpen(t)&&this._tooltip.openOn(this._map),this},closeTooltip:function(){if(this._tooltip)return this._tooltip.close()},toggleTooltip:function(){return this._tooltip&&this._tooltip.toggle(this),this},isTooltipOpen:function(){return this._tooltip.isOpen()},setTooltipContent:function(t){return this._tooltip&&this._tooltip.setContent(t),this},getTooltip:function(){return this._tooltip},_openTooltip:function(t){!this._tooltip||!this._map||this._map.dragging&&this._map.dragging.moving()||(this._tooltip._source=t.layer||t.target,this.openTooltip(this._tooltip.options.sticky?t.latlng:void 0))},_moveTooltip:function(t){var i=t.latlng;this._tooltip.options.sticky&&t.originalEvent&&(t=this._map.mouseEventToContainerPoint(t.originalEvent),t=this._map.containerPointToLayerPoint(t),i=this._map.layerPointToLatLng(t)),this._tooltip.setLatLng(i)}}),le.extend({options:{iconSize:[12,12],html:!1,bgPos:null,className:\"leaflet-div-icon\"},createIcon:function(t){var t=t&&\"DIV\"===t.tagName?t:document.createElement(\"div\"),i=this.options;return i.html instanceof Element?(mi(t),t.appendChild(i.html)):t.innerHTML=!1!==i.html?i.html:\"\",i.bgPos&&(i=_(i.bgPos),t.style.backgroundPosition=-i.x+\"px \"+-i.y+\"px\"),this._setIconStyles(t,\"icon\"),t},createShadow:function(){return null}}));le.Default=ue;var Ae=o.extend({options:{tileSize:256,opacity:1,updateWhenIdle:P.mobile,updateWhenZooming:!0,updateInterval:200,zIndex:1,bounds:null,minZoom:0,maxZoom:void 0,maxNativeZoom:void 0,minNativeZoom:void 0,noWrap:!1,pane:\"tilePane\",className:\"\",keepBuffer:2},initialize:function(t){c(this,t)},onAdd:function(){this._initContainer(),this._levels={},this._tiles={},this._resetView()},beforeAdd:function(t){t._addZoomLimit(this)},onRemove:function(t){this._removeAllTiles(),T(this._container),t._removeZoomLimit(this),this._container=null,this._tileZoom=void 0},bringToFront:function(){return this._map&&(fi(this._container),this._setAutoZIndex(Math.max)),this},bringToBack:function(){return this._map&&(gi(this._container),this._setAutoZIndex(Math.min)),this},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},isLoading:function(){return this._loading},redraw:function(){var t;return this._map&&(this._removeAllTiles(),(t=this._clampZoom(this._map.getZoom()))!==this._tileZoom&&(this._tileZoom=t,this._updateLevels()),this._update()),this},getEvents:function(){var t={viewprereset:this._invalidateAll,viewreset:this._resetView,zoom:this._resetView,moveend:this._onMoveEnd};return this.options.updateWhenIdle||(this._onMove||(this._onMove=j(this._onMoveEnd,this.options.updateInterval,this)),t.move=this._onMove),this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},createTile:function(){return document.createElement(\"div\")},getTileSize:function(){var t=this.options.tileSize;return t instanceof p?t:new p(t,t)},_updateZIndex:function(){this._container&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t){for(var i,e=this.getPane().children,n=-t(-1/0,1/0),o=0,s=e.length;o<s;o++)i=e[o].style.zIndex,e[o]!==this._container&&i&&(n=t(n,+i));isFinite(n)&&(this.options.zIndex=n+t(-1,1),this._updateZIndex())},_updateOpacity:function(){if(this._map&&!P.ielt9){C(this._container,this.options.opacity);var t,i=+new Date,e=!1,n=!1;for(t in this._tiles){var o,s=this._tiles[t];s.current&&s.loaded&&(o=Math.min(1,(i-s.loaded)/200),C(s.el,o),o<1?e=!0:(s.active?n=!0:this._onOpaqueTile(s),s.active=!0))}n&&!this._noPrune&&this._pruneTiles(),e&&(r(this._fadeFrame),this._fadeFrame=x(this._updateOpacity,this))}},_onOpaqueTile:u,_initContainer:function(){this._container||(this._container=b(\"div\",\"leaflet-layer \"+(this.options.className||\"\")),this._updateZIndex(),this.options.opacity<1&&this._updateOpacity(),this.getPane().appendChild(this._container))},_updateLevels:function(){var t=this._tileZoom,i=this.options.maxZoom;if(void 0!==t){for(var e in this._levels)e=Number(e),this._levels[e].el.children.length||e===t?(this._levels[e].el.style.zIndex=i-Math.abs(t-e),this._onUpdateLevel(e)):(T(this._levels[e].el),this._removeTilesAtZoom(e),this._onRemoveLevel(e),delete this._levels[e]);var n=this._levels[t],o=this._map;return n||((n=this._levels[t]={}).el=b(\"div\",\"leaflet-tile-container leaflet-zoom-animated\",this._container),n.el.style.zIndex=i,n.origin=o.project(o.unproject(o.getPixelOrigin()),t).round(),n.zoom=t,this._setZoomTransform(n,o.getCenter(),o.getZoom()),u(n.el.offsetWidth),this._onCreateLevel(n)),this._level=n}},_onUpdateLevel:u,_onRemoveLevel:u,_onCreateLevel:u,_pruneTiles:function(){if(this._map){var t,i,e,n=this._map.getZoom();if(n>this.options.maxZoom||n<this.options.minZoom)this._removeAllTiles();else{for(t in this._tiles)(e=this._tiles[t]).retain=e.current;for(t in this._tiles)(e=this._tiles[t]).current&&!e.active&&(i=e.coords,this._retainParent(i.x,i.y,i.z,i.z-5)||this._retainChildren(i.x,i.y,i.z,i.z+2));for(t in this._tiles)this._tiles[t].retain||this._removeTile(t)}}},_removeTilesAtZoom:function(t){for(var i in this._tiles)this._tiles[i].coords.z===t&&this._removeTile(i)},_removeAllTiles:function(){for(var t in this._tiles)this._removeTile(t)},_invalidateAll:function(){for(var t in this._levels)T(this._levels[t].el),this._onRemoveLevel(Number(t)),delete this._levels[t];this._removeAllTiles(),this._tileZoom=void 0},_retainParent:function(t,i,e,n){var t=Math.floor(t/2),i=Math.floor(i/2),e=e-1,o=new p(+t,+i),o=(o.z=e,this._tileCoordsToKey(o)),o=this._tiles[o];return o&&o.active?o.retain=!0:(o&&o.loaded&&(o.retain=!0),n<e&&this._retainParent(t,i,e,n))},_retainChildren:function(t,i,e,n){for(var o=2*t;o<2*t+2;o++)for(var s=2*i;s<2*i+2;s++){var r=new p(o,s),r=(r.z=e+1,this._tileCoordsToKey(r)),r=this._tiles[r];r&&r.active?r.retain=!0:(r&&r.loaded&&(r.retain=!0),e+1<n&&this._retainChildren(o,s,e+1,n))}},_resetView:function(t){t=t&&(t.pinch||t.flyTo);this._setView(this._map.getCenter(),this._map.getZoom(),t,t)},_animateZoom:function(t){this._setView(t.center,t.zoom,!0,t.noUpdate)},_clampZoom:function(t){var i=this.options;return void 0!==i.minNativeZoom&&t<i.minNativeZoom?i.minNativeZoom:void 0!==i.maxNativeZoom&&i.maxNativeZoom<t?i.maxNativeZoom:t},_setView:function(t,i,e,n){var o=Math.round(i),o=void 0!==this.options.maxZoom&&o>this.options.maxZoom||void 0!==this.options.minZoom&&o<this.options.minZoom?void 0:this._clampZoom(o),s=this.options.updateWhenZooming&&o!==this._tileZoom;n&&!s||(this._tileZoom=o,this._abortLoading&&this._abortLoading(),this._updateLevels(),this._resetGrid(),void 0!==o&&this._update(t),e||this._pruneTiles(),this._noPrune=!!e),this._setZoomTransforms(t,i)},_setZoomTransforms:function(t,i){for(var e in this._levels)this._setZoomTransform(this._levels[e],t,i)},_setZoomTransform:function(t,i,e){var n=this._map.getZoomScale(e,t.zoom),i=t.origin.multiplyBy(n).subtract(this._map._getNewPixelOrigin(i,e)).round();P.any3d?Pi(t.el,i,n):Z(t.el,i)},_resetGrid:function(){var t=this._map,i=t.options.crs,e=this._tileSize=this.getTileSize(),n=this._tileZoom,o=this._map.getPixelWorldBounds(this._tileZoom);o&&(this._globalTileRange=this._pxBoundsToTileRange(o)),this._wrapX=i.wrapLng&&!this.options.noWrap&&[Math.floor(t.project([0,i.wrapLng[0]],n).x/e.x),Math.ceil(t.project([0,i.wrapLng[1]],n).x/e.y)],this._wrapY=i.wrapLat&&!this.options.noWrap&&[Math.floor(t.project([i.wrapLat[0],0],n).y/e.x),Math.ceil(t.project([i.wrapLat[1],0],n).y/e.y)]},_onMoveEnd:function(){this._map&&!this._map._animatingZoom&&this._update()},_getTiledPixelBounds:function(t){var i=this._map,e=i._animatingZoom?Math.max(i._animateToZoom,i.getZoom()):i.getZoom(),e=i.getZoomScale(e,this._tileZoom),t=i.project(t,this._tileZoom).floor(),i=i.getSize().divideBy(2*e);return new m(t.subtract(i),t.add(i))},_update:function(t){var i=this._map;if(i){var e=this._clampZoom(i.getZoom());if(void 0===t&&(t=i.getCenter()),void 0!==this._tileZoom){var n,i=this._getTiledPixelBounds(t),o=this._pxBoundsToTileRange(i),s=o.getCenter(),r=[],i=this.options.keepBuffer,a=new m(o.getBottomLeft().subtract([i,-i]),o.getTopRight().add([i,-i]));if(!(isFinite(o.min.x)&&isFinite(o.min.y)&&isFinite(o.max.x)&&isFinite(o.max.y)))throw new Error(\"Attempted to load an infinite number of tiles\");for(n in this._tiles){var h=this._tiles[n].coords;h.z===this._tileZoom&&a.contains(new p(h.x,h.y))||(this._tiles[n].current=!1)}if(1<Math.abs(e-this._tileZoom))this._setView(t,e);else{for(var l=o.min.y;l<=o.max.y;l++)for(var u=o.min.x;u<=o.max.x;u++){var c,d=new p(u,l);d.z=this._tileZoom,this._isValidTile(d)&&((c=this._tiles[this._tileCoordsToKey(d)])?c.current=!0:r.push(d))}if(r.sort(function(t,i){return t.distanceTo(s)-i.distanceTo(s)}),0!==r.length){this._loading||(this._loading=!0,this.fire(\"loading\"));for(var _=document.createDocumentFragment(),u=0;u<r.length;u++)this._addTile(r[u],_);this._level.el.appendChild(_)}}}}},_isValidTile:function(t){var i=this._map.options.crs;if(!i.infinite){var e=this._globalTileRange;if(!i.wrapLng&&(t.x<e.min.x||t.x>e.max.x)||!i.wrapLat&&(t.y<e.min.y||t.y>e.max.y))return!1}if(!this.options.bounds)return!0;i=this._tileCoordsToBounds(t);return g(this.options.bounds).overlaps(i)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var i=this._map,e=this.getTileSize(),n=t.scaleBy(e),e=n.add(e);return[i.unproject(n,t.z),i.unproject(e,t.z)]},_tileCoordsToBounds:function(t){t=this._tileCoordsToNwSe(t),t=new s(t[0],t[1]);return t=this.options.noWrap?t:this._map.wrapLatLngBounds(t)},_tileCoordsToKey:function(t){return t.x+\":\"+t.y+\":\"+t.z},_keyToTileCoords:function(t){var t=t.split(\":\"),i=new p(+t[0],+t[1]);return i.z=+t[2],i},_removeTile:function(t){var i=this._tiles[t];i&&(T(i.el),delete this._tiles[t],this.fire(\"tileunload\",{tile:i.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){z(t,\"leaflet-tile\");var i=this.getTileSize();t.style.width=i.x+\"px\",t.style.height=i.y+\"px\",t.onselectstart=u,t.onmousemove=u,P.ielt9&&this.options.opacity<1&&C(t,this.options.opacity)},_addTile:function(t,i){var e=this._getTilePos(t),n=this._tileCoordsToKey(t),o=this.createTile(this._wrapCoords(t),a(this._tileReady,this,t));this._initTile(o),this.createTile.length<2&&x(a(this._tileReady,this,t,null,o)),Z(o,e),this._tiles[n]={el:o,coords:t,current:!0},i.appendChild(o),this.fire(\"tileloadstart\",{tile:o,coords:t})},_tileReady:function(t,i,e){i&&this.fire(\"tileerror\",{error:i,tile:e,coords:t});var n=this._tileCoordsToKey(t);(e=this._tiles[n])&&(e.loaded=+new Date,this._map._fadeAnimated?(C(e.el,0),r(this._fadeFrame),this._fadeFrame=x(this._updateOpacity,this)):(e.active=!0,this._pruneTiles()),i||(z(e.el,\"leaflet-tile-loaded\"),this.fire(\"tileload\",{tile:e.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire(\"load\"),P.ielt9||!this._map._fadeAnimated?x(this._pruneTiles,this):setTimeout(a(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var i=new p(this._wrapX?H(t.x,this._wrapX):t.x,this._wrapY?H(t.y,this._wrapY):t.y);return i.z=t.z,i},_pxBoundsToTileRange:function(t){var i=this.getTileSize();return new m(t.min.unscaleBy(i).floor(),t.max.unscaleBy(i).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}});var Ie=Ae.extend({options:{minZoom:0,maxZoom:18,subdomains:\"abc\",errorTileUrl:\"\",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1,referrerPolicy:!1},initialize:function(t,i){this._url=t,(i=c(this,i)).detectRetina&&P.retina&&0<i.maxZoom&&(i.tileSize=Math.floor(i.tileSize/2),i.zoomReverse?(i.zoomOffset--,i.minZoom++):(i.zoomOffset++,i.maxZoom--),i.minZoom=Math.max(0,i.minZoom)),\"string\"==typeof i.subdomains&&(i.subdomains=i.subdomains.split(\"\")),this.on(\"tileunload\",this._onTileRemove)},setUrl:function(t,i){return this._url===t&&void 0===i&&(i=!0),this._url=t,i||this.redraw(),this},createTile:function(t,i){var e=document.createElement(\"img\");return S(e,\"load\",a(this._tileOnLoad,this,i,e)),S(e,\"error\",a(this._tileOnError,this,i,e)),!this.options.crossOrigin&&\"\"!==this.options.crossOrigin||(e.crossOrigin=!0===this.options.crossOrigin?\"\":this.options.crossOrigin),\"string\"==typeof this.options.referrerPolicy&&(e.referrerPolicy=this.options.referrerPolicy),e.alt=\"\",e.setAttribute(\"role\",\"presentation\"),e.src=this.getTileUrl(t),e},getTileUrl:function(t){var i={r:P.retina?\"@2x\":\"\",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};return this._map&&!this._map.options.crs.infinite&&(t=this._globalTileRange.max.y-t.y,this.options.tms&&(i.y=t),i[\"-y\"]=t),q(this._url,l(i,this.options))},_tileOnLoad:function(t,i){P.ielt9?setTimeout(a(t,this,null,i),0):t(null,i)},_tileOnError:function(t,i,e){var n=this.options.errorTileUrl;n&&i.getAttribute(\"src\")!==n&&(i.src=n),t(e,i)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,i=this.options.maxZoom;return(t=this.options.zoomReverse?i-t:t)+this.options.zoomOffset},_getSubdomain:function(t){t=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[t]},_abortLoading:function(){var t,i,e;for(t in this._tiles)this._tiles[t].coords.z!==this._tileZoom&&((e=this._tiles[t].el).onload=u,e.onerror=u,e.complete||(e.src=K,i=this._tiles[t].coords,T(e),delete this._tiles[t],this.fire(\"tileabort\",{tile:e,coords:i})))},_removeTile:function(t){var i=this._tiles[t];if(i)return i.el.setAttribute(\"src\",K),Ae.prototype._removeTile.call(this,t)},_tileReady:function(t,i,e){if(this._map&&(!e||e.getAttribute(\"src\")!==K))return Ae.prototype._tileReady.call(this,t,i,e)}});function Oe(t,i){return new Ie(t,i)}var Re=Ie.extend({defaultWmsParams:{service:\"WMS\",request:\"GetMap\",layers:\"\",styles:\"\",format:\"image/jpeg\",transparent:!1,version:\"1.1.1\"},options:{crs:null,uppercase:!1},initialize:function(t,i){this._url=t;var e,n=l({},this.defaultWmsParams);for(e in i)e in this.options||(n[e]=i[e]);var t=(i=c(this,i)).detectRetina&&P.retina?2:1,o=this.getTileSize();n.width=o.x*t,n.height=o.y*t,this.wmsParams=n},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var i=1.3<=this._wmsVersion?\"crs\":\"srs\";this.wmsParams[i]=this._crs.code,Ie.prototype.onAdd.call(this,t)},getTileUrl:function(t){var i=this._tileCoordsToNwSe(t),e=this._crs,e=f(e.project(i[0]),e.project(i[1])),i=e.min,e=e.max,i=(1.3<=this._wmsVersion&&this._crs===re?[i.y,i.x,e.y,e.x]:[i.x,i.y,e.x,e.y]).join(\",\"),e=Ie.prototype.getTileUrl.call(this,t);return e+U(this.wmsParams,e,this.options.uppercase)+(this.options.uppercase?\"&BBOX=\":\"&bbox=\")+i},setParams:function(t,i){return l(this.wmsParams,t),i||this.redraw(),this}});Ie.WMS=Re,Oe.wms=function(t,i){return new Re(t,i)};var Ne=o.extend({options:{padding:.1},initialize:function(t){c(this,t),h(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),this._zoomAnimated&&z(this._container,\"leaflet-zoom-animated\")),this.getPane().appendChild(this._container),this._update(),this.on(\"update\",this._updatePaths,this)},onRemove:function(){this.off(\"update\",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,i){var e=this._map.getZoomScale(i,this._zoom),n=this._map.getSize().multiplyBy(.5+this.options.padding),o=this._map.project(this._center,i),n=n.multiplyBy(-e).add(o).subtract(this._map._getNewPixelOrigin(t,i));P.any3d?Pi(this._container,n,e):Z(this._container,n)},_reset:function(){for(var t in this._update(),this._updateTransform(this._center,this._zoom),this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,i=this._map.getSize(),e=this._map.containerPointToLayerPoint(i.multiplyBy(-t)).round();this._bounds=new m(e,e.add(i.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),De=Ne.extend({options:{tolerance:0},getEvents:function(){var t=Ne.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){Ne.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement(\"canvas\");S(t,\"mousemove\",this._onMouseMove,this),S(t,\"click dblclick mousedown mouseup contextmenu\",this._onClick,this),S(t,\"mouseout\",this._handleMouseOut,this),t._leaflet_disable_events=!0,this._ctx=t.getContext(\"2d\")},_destroyContainer:function(){r(this._redrawRequest),delete this._ctx,T(this._container),E(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){for(var t in this._redrawBounds=null,this._layers)this._layers[t]._update();this._redraw()}},_update:function(){var t,i,e,n;this._map._animatingZoom&&this._bounds||(Ne.prototype._update.call(this),t=this._bounds,i=this._container,e=t.getSize(),n=P.retina?2:1,Z(i,t.min),i.width=n*e.x,i.height=n*e.y,i.style.width=e.x+\"px\",i.style.height=e.y+\"px\",P.retina&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire(\"update\"))},_reset:function(){Ne.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t);t=(this._layers[h(t)]=t)._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=t),this._drawLast=t,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var i=t._order,e=i.next,i=i.prev;e?e.prev=i:this._drawLast=i,i?i.next=e:this._drawFirst=e,delete t._order,delete this._layers[h(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if(\"string\"==typeof t.options.dashArray){for(var i,e=t.options.dashArray.split(/[, ]+/),n=[],o=0;o<e.length;o++){if(i=Number(e[o]),isNaN(i))return;n.push(i)}t.options._dashArray=n}else t.options._dashArray=t.options.dashArray},_requestRedraw:function(t){this._map&&(this._extendRedrawBounds(t),this._redrawRequest=this._redrawRequest||x(this._redraw,this))},_extendRedrawBounds:function(t){var i;t._pxBounds&&(i=(t.options.weight||0)+1,this._redrawBounds=this._redrawBounds||new m,this._redrawBounds.extend(t._pxBounds.min.subtract([i,i])),this._redrawBounds.extend(t._pxBounds.max.add([i,i])))},_redraw:function(){this._redrawRequest=null,this._redrawBounds&&(this._redrawBounds.min._floor(),this._redrawBounds.max._ceil()),this._clear(),this._draw(),this._redrawBounds=null},_clear:function(){var t,i=this._redrawBounds;i?(t=i.getSize(),this._ctx.clearRect(i.min.x,i.min.y,t.x,t.y)):(this._ctx.save(),this._ctx.setTransform(1,0,0,1,0,0),this._ctx.clearRect(0,0,this._container.width,this._container.height),this._ctx.restore())},_draw:function(){var t,i,e=this._redrawBounds;this._ctx.save(),e&&(i=e.getSize(),this._ctx.beginPath(),this._ctx.rect(e.min.x,e.min.y,i.x,i.y),this._ctx.clip()),this._drawing=!0;for(var n=this._drawFirst;n;n=n.next)t=n.layer,(!e||t._pxBounds&&t._pxBounds.intersects(e))&&t._updatePath();this._drawing=!1,this._ctx.restore()},_updatePoly:function(t,i){if(this._drawing){var e,n,o,s,r=t._parts,a=r.length,h=this._ctx;if(a){for(h.beginPath(),e=0;e<a;e++){for(n=0,o=r[e].length;n<o;n++)s=r[e][n],h[n?\"lineTo\":\"moveTo\"](s.x,s.y);i&&h.closePath()}this._fillStroke(h,t)}}},_updateCircle:function(t){var i,e,n,o;this._drawing&&!t._empty()&&(i=t._point,e=this._ctx,n=Math.max(Math.round(t._radius),1),1!=(o=(Math.max(Math.round(t._radiusY),1)||n)/n)&&(e.save(),e.scale(1,o)),e.beginPath(),e.arc(i.x,i.y/o,n,0,2*Math.PI,!1),1!=o&&e.restore(),this._fillStroke(e,t))},_fillStroke:function(t,i){var e=i.options;e.fill&&(t.globalAlpha=e.fillOpacity,t.fillStyle=e.fillColor||e.color,t.fill(e.fillRule||\"evenodd\")),e.stroke&&0!==e.weight&&(t.setLineDash&&t.setLineDash(i.options&&i.options._dashArray||[]),t.globalAlpha=e.opacity,t.lineWidth=e.weight,t.strokeStyle=e.color,t.lineCap=e.lineCap,t.lineJoin=e.lineJoin,t.stroke())},_onClick:function(t){for(var i,e,n=this._map.mouseEventToLayerPoint(t),o=this._drawFirst;o;o=o.next)(i=o.layer).options.interactive&&i._containsPoint(n)&&((\"click\"===t.type||\"preclick\"===t.type)&&this._map._draggableMoved(i)||(e=i));this._fireEvent(!!e&&[e],t)},_onMouseMove:function(t){var i;!this._map||this._map.dragging.moving()||this._map._animatingZoom||(i=this._map.mouseEventToLayerPoint(t),this._handleMouseHover(t,i))},_handleMouseOut:function(t){var i=this._hoveredLayer;i&&(M(this._container,\"leaflet-interactive\"),this._fireEvent([i],t,\"mouseout\"),this._hoveredLayer=null,this._mouseHoverThrottled=!1)},_handleMouseHover:function(t,i){if(!this._mouseHoverThrottled){for(var e,n,o=this._drawFirst;o;o=o.next)(e=o.layer).options.interactive&&e._containsPoint(i)&&(n=e);n!==this._hoveredLayer&&(this._handleMouseOut(t),n&&(z(this._container,\"leaflet-interactive\"),this._fireEvent([n],t,\"mouseover\"),this._hoveredLayer=n)),this._fireEvent(!!this._hoveredLayer&&[this._hoveredLayer],t),this._mouseHoverThrottled=!0,setTimeout(a(function(){this._mouseHoverThrottled=!1},this),32)}},_fireEvent:function(t,i,e){this._map._fireDOMEvent(i,e||i.type,t)},_bringToFront:function(t){var i,e,n=t._order;n&&(i=n.next,e=n.prev,i&&((i.prev=e)?e.next=i:i&&(this._drawFirst=i),n.prev=this._drawLast,(this._drawLast.next=n).next=null,this._drawLast=n,this._requestRedraw(t)))},_bringToBack:function(t){var i,e,n=t._order;n&&(i=n.next,(e=n.prev)&&((e.next=i)?i.prev=e:e&&(this._drawLast=e),n.prev=null,n.next=this._drawFirst,this._drawFirst.prev=n,this._drawFirst=n,this._requestRedraw(t)))}});function je(t){return P.canvas?new De(t):null}var He=function(){try{return document.namespaces.add(\"lvml\",\"urn:schemas-microsoft-com:vml\"),function(t){return document.createElement(\"<lvml:\"+t+' class=\"lvml\">')}}catch(t){}return function(t){return document.createElement(\"<\"+t+' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"lvml\">')}}(),Mt={_initContainer:function(){this._container=b(\"div\",\"leaflet-vml-container\")},_update:function(){this._map._animatingZoom||(Ne.prototype._update.call(this),this.fire(\"update\"))},_initPath:function(t){var i=t._container=He(\"shape\");z(i,\"leaflet-vml-shape \"+(this.options.className||\"\")),i.coordsize=\"1 1\",t._path=He(\"path\"),i.appendChild(t._path),this._updateStyle(t),this._layers[h(t)]=t},_addPath:function(t){var i=t._container;this._container.appendChild(i),t.options.interactive&&t.addInteractiveTarget(i)},_removePath:function(t){var i=t._container;T(i),t.removeInteractiveTarget(i),delete this._layers[h(t)]},_updateStyle:function(t){var i=t._stroke,e=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(i=i||(t._stroke=He(\"stroke\")),o.appendChild(i),i.weight=n.weight+\"px\",i.color=n.color,i.opacity=n.opacity,n.dashArray?i.dashStyle=d(n.dashArray)?n.dashArray.join(\" \"):n.dashArray.replace(/( *, *)/g,\" \"):i.dashStyle=\"\",i.endcap=n.lineCap.replace(\"butt\",\"flat\"),i.joinstyle=n.lineJoin):i&&(o.removeChild(i),t._stroke=null),n.fill?(e=e||(t._fill=He(\"fill\")),o.appendChild(e),e.color=n.fillColor||n.color,e.opacity=n.fillOpacity):e&&(o.removeChild(e),t._fill=null)},_updateCircle:function(t){var i=t._point.round(),e=Math.round(t._radius),n=Math.round(t._radiusY||e);this._setPath(t,t._empty()?\"M0 0\":\"AL \"+i.x+\",\"+i.y+\" \"+e+\",\"+n+\" 0,23592600\")},_setPath:function(t,i){t._path.v=i},_bringToFront:function(t){fi(t._container)},_bringToBack:function(t){gi(t._container)}},We=P.vml?He:ct,Fe=Ne.extend({_initContainer:function(){this._container=We(\"svg\"),this._container.setAttribute(\"pointer-events\",\"none\"),this._rootGroup=We(\"g\"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){T(this._container),E(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_update:function(){var t,i,e;this._map._animatingZoom&&this._bounds||(Ne.prototype._update.call(this),i=(t=this._bounds).getSize(),e=this._container,this._svgSize&&this._svgSize.equals(i)||(this._svgSize=i,e.setAttribute(\"width\",i.x),e.setAttribute(\"height\",i.y)),Z(e,t.min),e.setAttribute(\"viewBox\",[t.min.x,t.min.y,i.x,i.y].join(\" \")),this.fire(\"update\"))},_initPath:function(t){var i=t._path=We(\"path\");t.options.className&&z(i,t.options.className),t.options.interactive&&z(i,\"leaflet-interactive\"),this._updateStyle(t),this._layers[h(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){T(t._path),t.removeInteractiveTarget(t._path),delete this._layers[h(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var i=t._path,t=t.options;i&&(t.stroke?(i.setAttribute(\"stroke\",t.color),i.setAttribute(\"stroke-opacity\",t.opacity),i.setAttribute(\"stroke-width\",t.weight),i.setAttribute(\"stroke-linecap\",t.lineCap),i.setAttribute(\"stroke-linejoin\",t.lineJoin),t.dashArray?i.setAttribute(\"stroke-dasharray\",t.dashArray):i.removeAttribute(\"stroke-dasharray\"),t.dashOffset?i.setAttribute(\"stroke-dashoffset\",t.dashOffset):i.removeAttribute(\"stroke-dashoffset\")):i.setAttribute(\"stroke\",\"none\"),t.fill?(i.setAttribute(\"fill\",t.fillColor||t.color),i.setAttribute(\"fill-opacity\",t.fillOpacity),i.setAttribute(\"fill-rule\",t.fillRule||\"evenodd\")):i.setAttribute(\"fill\",\"none\"))},_updatePoly:function(t,i){this._setPath(t,dt(t._parts,i))},_updateCircle:function(t){var i=t._point,e=Math.max(Math.round(t._radius),1),n=\"a\"+e+\",\"+(Math.max(Math.round(t._radiusY),1)||e)+\" 0 1,0 \",i=t._empty()?\"M0 0\":\"M\"+(i.x-e)+\",\"+i.y+n+2*e+\",0 \"+n+2*-e+\",0 \";this._setPath(t,i)},_setPath:function(t,i){t._path.setAttribute(\"d\",i)},_bringToFront:function(t){fi(t._path)},_bringToBack:function(t){gi(t._path)}});function Ue(t){return P.svg||P.vml?new Fe(t):null}P.vml&&Fe.include(Mt),A.include({getRenderer:function(t){t=(t=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer)||(this._renderer=this._createRenderer());return this.hasLayer(t)||this.addLayer(t),t},_getPaneRenderer:function(t){if(\"overlayPane\"===t||void 0===t)return!1;var i=this._paneRenderers[t];return void 0===i&&(i=this._createRenderer({pane:t}),this._paneRenderers[t]=i),i},_createRenderer:function(t){return this.options.preferCanvas&&je(t)||Ue(t)}});var Ve=ge.extend({initialize:function(t,i){ge.prototype.initialize.call(this,this._boundsToLatLngs(t),i)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return[(t=g(t)).getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});Fe.create=We,Fe.pointsToPath=dt,ve.geometryToLayer=ye,ve.coordsToLatLng=we,ve.coordsToLatLngs=Pe,ve.latLngToCoords=be,ve.latLngsToCoords=Le,ve.getFeature=Te,ve.asFeature=ze,A.mergeOptions({boxZoom:!0});var _t=n.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on(\"unload\",this._destroy,this)},addHooks:function(){S(this._container,\"mousedown\",this._onMouseDown,this)},removeHooks:function(){E(this._container,\"mousedown\",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){T(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),ri(),Li(),this._startPoint=this._map.mouseEventToContainerPoint(t),S(document,{contextmenu:Ri,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=b(\"div\",\"leaflet-zoom-box\",this._container),z(this._container,\"leaflet-crosshair\"),this._map.fire(\"boxzoomstart\")),this._point=this._map.mouseEventToContainerPoint(t);var t=new m(this._point,this._startPoint),i=t.getSize();Z(this._box,t.min),this._box.style.width=i.x+\"px\",this._box.style.height=i.y+\"px\"},_finish:function(){this._moved&&(T(this._box),M(this._container,\"leaflet-crosshair\")),ai(),Ti(),E(document,{contextmenu:Ri,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){1!==t.which&&1!==t.button||(this._finish(),this._moved&&(this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(a(this._resetState,this),0),t=new s(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point)),this._map.fitBounds(t).fire(\"boxzoomend\",{boxZoomBounds:t})))},_onKeyDown:function(t){27===t.keyCode&&(this._finish(),this._clearDeferredResetState(),this._resetState())}}),Ct=(A.addInitHook(\"addHandler\",\"boxZoom\",_t),A.mergeOptions({doubleClickZoom:!0}),n.extend({addHooks:function(){this._map.on(\"dblclick\",this._onDoubleClick,this)},removeHooks:function(){this._map.off(\"dblclick\",this._onDoubleClick,this)},_onDoubleClick:function(t){var i=this._map,e=i.getZoom(),n=i.options.zoomDelta,e=t.originalEvent.shiftKey?e-n:e+n;\"center\"===i.options.doubleClickZoom?i.setZoom(e):i.setZoomAround(t.containerPoint,e)}})),Zt=(A.addInitHook(\"addHandler\",\"doubleClickZoom\",Ct),A.mergeOptions({dragging:!0,inertia:!0,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0}),n.extend({addHooks:function(){var t;this._draggable||(t=this._map,this._draggable=new Xi(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on(\"predrag\",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on(\"predrag\",this._onPreDragWrap,this),t.on(\"zoomend\",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))),z(this._map._container,\"leaflet-grab leaflet-touch-drag\"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){M(this._map._container,\"leaflet-grab\"),M(this._map._container,\"leaflet-touch-drag\"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t,i=this._map;i._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity?(t=g(this._map.options.maxBounds),this._offsetLimit=f(this._map.latLngToContainerPoint(t.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(t.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))):this._offsetLimit=null,i.fire(\"movestart\").fire(\"dragstart\"),i.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){var i,e;this._map.options.inertia&&(i=this._lastTime=+new Date,e=this._lastPos=this._draggable._absPos||this._draggable._newPos,this._positions.push(e),this._times.push(i),this._prunePositions(i)),this._map.fire(\"move\",t).fire(\"drag\",t)},_prunePositions:function(t){for(;1<this._positions.length&&50<t-this._times[0];)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),i=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=i.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,i){return t-(t-i)*this._viscosity},_onPreDragLimit:function(){var t,i;this._viscosity&&this._offsetLimit&&(t=this._draggable._newPos.subtract(this._draggable._startPos),i=this._offsetLimit,t.x<i.min.x&&(t.x=this._viscousLimit(t.x,i.min.x)),t.y<i.min.y&&(t.y=this._viscousLimit(t.y,i.min.y)),t.x>i.max.x&&(t.x=this._viscousLimit(t.x,i.max.x)),t.y>i.max.y&&(t.y=this._viscousLimit(t.y,i.max.y)),this._draggable._newPos=this._draggable._startPos.add(t))},_onPreDragWrap:function(){var t=this._worldWidth,i=Math.round(t/2),e=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-i+e)%t+i-e,n=(n+i+e)%t-i-e,t=Math.abs(o+e)<Math.abs(n+e)?o:n;this._draggable._absPos=this._draggable._newPos.clone(),this._draggable._newPos.x=t},_onDragEnd:function(t){var i,e,n,o,s=this._map,r=s.options,a=!r.inertia||t.noInertia||this._times.length<2;s.fire(\"dragend\",t),a?s.fire(\"moveend\"):(this._prunePositions(+new Date),t=this._lastPos.subtract(this._positions[0]),a=(this._lastTime-this._times[0])/1e3,i=r.easeLinearity,a=(t=t.multiplyBy(i/a)).distanceTo([0,0]),e=Math.min(r.inertiaMaxSpeed,a),t=t.multiplyBy(e/a),n=e/(r.inertiaDeceleration*i),(o=t.multiplyBy(-n/2).round()).x||o.y?(o=s._limitOffset(o,s.options.maxBounds),x(function(){s.panBy(o,{duration:n,easeLinearity:i,noMoveStart:!0,animate:!0})})):s.fire(\"moveend\"))}})),St=(A.addInitHook(\"addHandler\",\"dragging\",Zt),A.mergeOptions({keyboard:!0,keyboardPanDelta:80}),n.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,54,173]},initialize:function(t){this._map=t,this._setPanDelta(t.options.keyboardPanDelta),this._setZoomDelta(t.options.zoomDelta)},addHooks:function(){var t=this._map._container;t.tabIndex<=0&&(t.tabIndex=\"0\"),S(t,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.on({focus:this._addHooks,blur:this._removeHooks},this)},removeHooks:function(){this._removeHooks(),E(this._map._container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.off({focus:this._addHooks,blur:this._removeHooks},this)},_onMouseDown:function(){var t,i,e;this._focused||(e=document.body,t=document.documentElement,i=e.scrollTop||t.scrollTop,e=e.scrollLeft||t.scrollLeft,this._map._container.focus(),window.scrollTo(e,i))},_onFocus:function(){this._focused=!0,this._map.fire(\"focus\")},_onBlur:function(){this._focused=!1,this._map.fire(\"blur\")},_setPanDelta:function(t){for(var i=this._panKeys={},e=this.keyCodes,n=0,o=e.left.length;n<o;n++)i[e.left[n]]=[-1*t,0];for(n=0,o=e.right.length;n<o;n++)i[e.right[n]]=[t,0];for(n=0,o=e.down.length;n<o;n++)i[e.down[n]]=[0,t];for(n=0,o=e.up.length;n<o;n++)i[e.up[n]]=[0,-1*t]},_setZoomDelta:function(t){for(var i=this._zoomKeys={},e=this.keyCodes,n=0,o=e.zoomIn.length;n<o;n++)i[e.zoomIn[n]]=t;for(n=0,o=e.zoomOut.length;n<o;n++)i[e.zoomOut[n]]=-t},_addHooks:function(){S(document,\"keydown\",this._onKeyDown,this)},_removeHooks:function(){E(document,\"keydown\",this._onKeyDown,this)},_onKeyDown:function(t){if(!(t.altKey||t.ctrlKey||t.metaKey)){var i,e=t.keyCode,n=this._map;if(e in this._panKeys)n._panAnim&&n._panAnim._inProgress||(i=this._panKeys[e],t.shiftKey&&(i=_(i).multiplyBy(3)),n.panBy(i),n.options.maxBounds&&n.panInsideBounds(n.options.maxBounds));else if(e in this._zoomKeys)n.setZoom(n.getZoom()+(t.shiftKey?3:1)*this._zoomKeys[e]);else{if(27!==e||!n._popup||!n._popup.options.closeOnEscapeKey)return;n.closePopup()}Ri(t)}}})),kt=(A.addInitHook(\"addHandler\",\"keyboard\",St),A.mergeOptions({scrollWheelZoom:!0,wheelDebounceTime:40,wheelPxPerZoomLevel:60}),n.extend({addHooks:function(){S(this._map._container,\"wheel\",this._onWheelScroll,this),this._delta=0},removeHooks:function(){E(this._map._container,\"wheel\",this._onWheelScroll,this)},_onWheelScroll:function(t){var i=ji(t),e=this._map.options.wheelDebounceTime,i=(this._delta+=i,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date),Math.max(e-(+new Date-this._startTime),0));clearTimeout(this._timer),this._timer=setTimeout(a(this._performZoom,this),i),Ri(t)},_performZoom:function(){var t=this._map,i=t.getZoom(),e=this._map.options.zoomSnap||0,n=(t._stop(),this._delta/(4*this._map.options.wheelPxPerZoomLevel)),n=4*Math.log(2/(1+Math.exp(-Math.abs(n))))/Math.LN2,e=e?Math.ceil(n/e)*e:n,n=t._limitZoom(i+(0<this._delta?e:-e))-i;this._delta=0,this._startTime=null,n&&(\"center\"===t.options.scrollWheelZoom?t.setZoom(i+n):t.setZoomAround(this._lastMousePos,i+n))}})),Et=(A.addInitHook(\"addHandler\",\"scrollWheelZoom\",kt),A.mergeOptions({tapHold:P.touchNative&&P.safari&&P.mobile,tapTolerance:15}),n.extend({addHooks:function(){S(this._map._container,\"touchstart\",this._onDown,this)},removeHooks:function(){E(this._map._container,\"touchstart\",this._onDown,this)},_onDown:function(t){var i;clearTimeout(this._holdTimeout),1===t.touches.length&&(i=t.touches[0],this._startPos=this._newPos=new p(i.clientX,i.clientY),this._holdTimeout=setTimeout(a(function(){this._cancel(),this._isTapValid()&&(S(document,\"touchend\",B),S(document,\"touchend touchcancel\",this._cancelClickPrevent),this._simulateEvent(\"contextmenu\",i))},this),600),S(document,\"touchend touchcancel contextmenu\",this._cancel,this),S(document,\"touchmove\",this._onMove,this))},_cancelClickPrevent:function t(){E(document,\"touchend\",B),E(document,\"touchend touchcancel\",t)},_cancel:function(){clearTimeout(this._holdTimeout),E(document,\"touchend touchcancel contextmenu\",this._cancel,this),E(document,\"touchmove\",this._onMove,this)},_onMove:function(t){t=t.touches[0];this._newPos=new p(t.clientX,t.clientY)},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_simulateEvent:function(t,i){t=new MouseEvent(t,{bubbles:!0,cancelable:!0,view:window,screenX:i.screenX,screenY:i.screenY,clientX:i.clientX,clientY:i.clientY});t._simulated=!0,i.target.dispatchEvent(t)}})),Bt=(A.addInitHook(\"addHandler\",\"tapHold\",Et),A.mergeOptions({touchZoom:P.touch,bounceAtZoomLimits:!0}),n.extend({addHooks:function(){z(this._map._container,\"leaflet-touch-zoom\"),S(this._map._container,\"touchstart\",this._onTouchStart,this)},removeHooks:function(){M(this._map._container,\"leaflet-touch-zoom\"),E(this._map._container,\"touchstart\",this._onTouchStart,this)},_onTouchStart:function(t){var i,e,n=this._map;!t.touches||2!==t.touches.length||n._animatingZoom||this._zooming||(i=n.mouseEventToContainerPoint(t.touches[0]),e=n.mouseEventToContainerPoint(t.touches[1]),this._centerPoint=n.getSize()._divideBy(2),this._startLatLng=n.containerPointToLatLng(this._centerPoint),\"center\"!==n.options.touchZoom&&(this._pinchStartLatLng=n.containerPointToLatLng(i.add(e)._divideBy(2))),this._startDist=i.distanceTo(e),this._startZoom=n.getZoom(),this._moved=!1,this._zooming=!0,n._stop(),S(document,\"touchmove\",this._onTouchMove,this),S(document,\"touchend touchcancel\",this._onTouchEnd,this),B(t))},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var i=this._map,e=i.mouseEventToContainerPoint(t.touches[0]),n=i.mouseEventToContainerPoint(t.touches[1]),o=e.distanceTo(n)/this._startDist;if(this._zoom=i.getScaleZoom(o,this._startZoom),!i.options.bounceAtZoomLimits&&(this._zoom<i.getMinZoom()&&o<1||this._zoom>i.getMaxZoom()&&1<o)&&(this._zoom=i._limitZoom(this._zoom)),\"center\"===i.options.touchZoom){if(this._center=this._startLatLng,1==o)return}else{e=e._add(n)._divideBy(2)._subtract(this._centerPoint);if(1==o&&0===e.x&&0===e.y)return;this._center=i.unproject(i.project(this._pinchStartLatLng,this._zoom).subtract(e),this._zoom)}this._moved||(i._moveStart(!0,!1),this._moved=!0),r(this._animRequest);n=a(i._move,i,this._center,this._zoom,{pinch:!0,round:!1});this._animRequest=x(n,this,!0),B(t)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,r(this._animRequest),E(document,\"touchmove\",this._onTouchMove,this),E(document,\"touchend touchcancel\",this._onTouchEnd,this),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}})),qe=(A.addInitHook(\"addHandler\",\"touchZoom\",Bt),A.BoxZoom=_t,A.DoubleClickZoom=Ct,A.Drag=Zt,A.Keyboard=St,A.ScrollWheelZoom=kt,A.TapHold=Et,A.TouchZoom=Bt,t.Bounds=m,t.Browser=P,t.CRS=ot,t.Canvas=De,t.Circle=me,t.CircleMarker=pe,t.Class=it,t.Control=I,t.DivIcon=Be,t.DivOverlay=O,t.DomEvent=mt,t.DomUtil=pt,t.Draggable=Xi,t.Evented=et,t.FeatureGroup=he,t.GeoJSON=ve,t.GridLayer=Ae,t.Handler=n,t.Icon=le,t.ImageOverlay=Ce,t.LatLng=v,t.LatLngBounds=s,t.Layer=o,t.LayerGroup=ae,t.LineUtil=gt,t.Map=A,t.Marker=de,t.Mixin=ft,t.Path=_e,t.Point=p,t.PolyUtil=vt,t.Polygon=ge,t.Polyline=fe,t.Popup=ke,t.PosAnimation=Wi,t.Projection=wt,t.Rectangle=Ve,t.Renderer=Ne,t.SVG=Fe,t.SVGOverlay=Se,t.TileLayer=Ie,t.Tooltip=Ee,t.Transformation=at,t.Util=tt,t.VideoOverlay=Ze,t.bind=a,t.bounds=f,t.canvas=je,t.circle=function(t,i,e){return new me(t,i,e)},t.circleMarker=function(t,i){return new pe(t,i)},t.control=Fi,t.divIcon=function(t){return new Be(t)},t.extend=l,t.featureGroup=function(t,i){return new he(t,i)},t.geoJSON=Me,t.geoJson=zt,t.gridLayer=function(t){return new Ae(t)},t.icon=function(t){return new le(t)},t.imageOverlay=function(t,i,e){return new Ce(t,i,e)},t.latLng=w,t.latLngBounds=g,t.layerGroup=function(t,i){return new ae(t,i)},t.map=function(t,i){return new A(t,i)},t.marker=function(t,i){return new de(t,i)},t.point=_,t.polygon=function(t,i){return new ge(t,i)},t.polyline=function(t,i){return new fe(t,i)},t.popup=function(t,i){return new ke(t,i)},t.rectangle=function(t,i){return new Ve(t,i)},t.setOptions=c,t.stamp=h,t.svg=Ue,t.svgOverlay=function(t,i,e){return new Se(t,i,e)},t.tileLayer=Oe,t.tooltip=function(t,i){return new Ee(t,i)},t.transformation=ht,t.version=\"1.8.0\",t.videoOverlay=function(t,i,e){return new Ze(t,i,e)},window.L);t.noConflict=function(){return window.L=qe,this},window.L=t});\n//# sourceMappingURL=leaflet.js.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// temp fix so we can stop publishing node_modules\r\n// in the build pipeline\r\nimport 'leaflet/dist/leaflet';\r\nwindow.L = L;\r\nimport 'leaflet-fullscreen';\r\nimport 'leaflet.markercluster/dist/leaflet.markercluster';\r\n\r\n// todo : update imports to grab only what is needed from these libs\r\nimport * as d3 from 'd3';\r\nimport c3 from 'c3';\r\n\r\nwindow.d3 = d3;\r\nwindow.c3 = c3;"],"names":["module","exports","c3_axis_fn","c3_axis_internal_fn","CLASS","target","chart","chartLine","chartLines","chartBar","chartBars","chartText","chartTexts","chartArc","chartArcs","chartArcsTitle","chartArcsBackground","chartArcsGaugeUnit","chartArcsGaugeMax","chartArcsGaugeMin","selectedCircle","selectedCircles","eventRect","eventRects","eventRectsSingle","eventRectsMultiple","zoomRect","brush","focused","defocused","region","regions","title","tooltipContainer","tooltip","tooltipName","shape","shapes","line","lines","bar","bars","circle","circles","arc","arcLabelLine","arcs","area","areas","empty","text","texts","gaugeValue","grid","gridLines","xgrid","xgrids","xgridLine","xgridLines","xgridFocus","ygrid","ygrids","ygridLine","ygridLines","axis","axisX","axisXLabel","axisY","axisYLabel","axisY2","axisY2Label","legendBackground","legendItem","legendItemEvent","legendItemTile","legendItemHidden","legendItemFocused","dragarea","EXPANDED","SELECTED","INCLUDED","_typeof","Symbol","iterator","obj","constructor","prototype","classCallCheck","instance","Constructor","TypeError","inherits","subClass","superClass","Object","create","value","enumerable","writable","configurable","setPrototypeOf","__proto__","possibleConstructorReturn","self","call","ReferenceError","isValue","v","isFunction","o","isArray","Array","isString","isUndefined","isDefined","ceil10","Math","ceil","asHalfPixel","n","diffDomain","d","isEmpty","length","keys","notEmpty","c3_chart_internal_fn","getOption","options","key","defaultValue","hasValue","dict","found","forEach","sanitise","str","replace","getPathBox","path","box","getBoundingClientRect","items","pathSegList","getItem","x","y","min","width","height","AxisInternal","component","params","internal","this","d3","scale","linear","range","orient","innerTickSize","outerTickSize","withOuterTick","tickPadding","tickValues","tickFormat","tickArguments","tickOffset","tickCulling","tickCentered","tickTextCharSize","tickTextRotate","tickLength","generateAxis","selection","attr","scaleExtent","domain","start","stop","generateTicks","i","ticks","apply","push","unshift","copyScale","newScale","copy","isCategory","textFormatted","formatted","updateRange","rangeExtent","updateTickTextCharSize","tick","size","h","w","select","each","undefined","transitionise","withoutTransition","transition","isVertical","tspanData","splitted","tickMultiline","splitTickText","concat","tickMultilineMax","ellipsify","map","s","index","subtext","spaceIndex","textWidth","tickText","maxWidth","tickWidth","toString","split","charAt","substr","slice","max","ellipsified","remaining","available","padEnd","updateTickLength","lineY2","tickPosition","textY","rotate","textTransform","textTextAnchor","tspanDx","sin","PI","tspanDy","dy","g","tickTransform","tickX","tickY","scale0","__chart__","scale1","selectAll","data","tickEnter","enter","insert","style","tickExit","exit","remove","tickUpdate","append","lineUpdate","textUpdate","tspanUpdate","pathUpdate","rangeBand","dx","arguments","top","right","bottom","left","format","isCentered","tickInterval","interval","node","getTotalLength","Infinity","culling","Axis","_Component","owner","fn","_this","getPrototypeOf","Component","init","$$","config","main","axes","axis_x_inner","clipPathForXAxis","getTranslate","axis_x_show","axis_rotated","textAnchorForXAxisLabel","bind","axis_y_inner","clipPathForYAxis","axis_y_show","textAnchorForYAxisLabel","y2","axis_y2_show","textAnchorForY2AxisLabel","getXAxis","withoutRotateTickText","axisParams","isCategorized","axis_x_tick_multiline","Number","axis_x_tick_multilineMax","axis_x_tick_width","axis_x_tick_rotate","isTimeSeries","parseDate","axis_x_tick_centered","axis_x_tick_culling","updateXAxisTickValues","targets","axis_x_tick_fit","axis_x_tick_count","generateTickValues","mapTargetsToUniqueXs","xAxis","subXAxis","getYAxis","axis_y_tick_rotate","isTimeSeriesY","time","axis_y_tick_time_value","axis_y_tick_time_interval","getId","id","data_axes","getXAxisTickFormat","defaultAxisTimeFormat","categoryName","toFixed","axis_x_tick_format","date","axisTimeFormat","getTickValues","getXAxisTickValues","axis_x_tick_values","getYAxisTickValues","axis_y_tick_values","yAxis","getY2AxisTickValues","axis_y2_tick_values","y2Axis","getLabelOptionByAxisId","axisId","option","axis_y_label","axis_y2_label","axis_x_label","getLabelText","setLabelText","getLabelPosition","defaultPosition","position","isInner","indexOf","isOuter","isLeft","isCenter","isRight","isTop","isMiddle","isBottom","getXAxisLabelPosition","getYAxisLabelPosition","getY2AxisLabelPosition","getLabelPositionById","textForXAxisLabel","textForYAxisLabel","textForY2AxisLabel","xForAxisLabel","forHorizontal","dxForAxisLabel","textAnchorForAxisLabel","xForXAxisLabel","xForYAxisLabel","xForY2AxisLabel","dxForXAxisLabel","dxForYAxisLabel","dxForY2AxisLabel","dyForXAxisLabel","getMaxTickWidth","axis_x_height","dyForYAxisLabel","dyForY2AxisLabel","axis_y2_inner","withoutRecompute","targetsToShow","dummy","currentMaxTickWidths","svg","filterTargetsToShow","getYDomain","yOrient","axis_y_tick_format","yAxisTickValues","y2Orient","axis_y2_tick_format","y2AxisTickValues","getXDomain","xOrient","xAxisTickFormat","xAxisTickValues","classed","updateLabels","withTransition","getPadding","padding","domainLength","p","unit","convertPixelsToAxisPadding","pixels","values","tickCount","forTimeSeries","targetCount","end","count","tickValue","Date","sort","a","b","generateTransitions","duration","axisSubX","subx","redraw","transitions","isHidden","c3_chart_fn","c3","version","componentKey","Chart","ChartInternal","loadConfig","beforeInit","afterInit","bindThis","argThis","api","window","getDefaultConfig","cache","generate","initParams","data_url","convertUrlToData","data_mimeType","data_headers","data_keys","initWithData","data_json","convertJsonToData","data_rows","convertRowsToData","data_columns","Error","convertColumnsToData","clipId","clipIdForXAxis","clipIdForYAxis","clipIdForGrid","clipIdForSubchart","clipPath","getClipPath","clipPathForGrid","clipPathForSubchart","dragStart","dragging","flowing","cancelClick","mouseover","transiting","color","generateColor","levelColor","generateLevelColor","dataTimeFormat","data_xLocaltime","utc","axis_x_localtime","multi","getMilliseconds","getSeconds","getMinutes","getHours","getDay","getDate","getMonth","hiddenTargetIds","hiddenLegendIds","focusedTargetIds","defocusedTargetIds","subXOrient","isLegendRight","legend_position","isLegendInset","isLegendTop","legend_inset_anchor","isLegendLeft","legendStep","legendItemWidth","legendItemHeight","rotated_padding_left","rotated_padding_right","rotated_padding_top","withoutFadeIn","intervalForObserveInserted","initChartElements","initBar","initLine","initArc","initGauge","initText","defs","binding","initPie","initBrush","initZoom","bindto","selectChart","document","createElement","observeInserted","html","xs","convertDataToTargets","data_filter","filter","data_hide","addHiddenTargetIds","mapToIds","legend_hide","addHiddenLegendIds","updateSizes","updateScales","extent","subX","subY","subY2","orgXDomain","zoom_enabled","zoom","on","onmouseover","onmouseout","svg_classname","clipChart","appendClip","clipXAxis","clipYAxis","clipGrid","clipSubchart","updateSvgSize","initSubchart","initTooltip","initLegend","initTitle","initRegion","initGrid","grid_lines_front","initGridLines","initEventRect","zoom_privileged","axis_x_extent","getDefaultExtent","updateTargets","updateDimension","oninit","withTransform","withUpdateXDomain","withUpdateOrgXDomain","withTransitionForAxis","bindResize","element","smoothLines","el","type","x1","x2","y1","legendHeight","legend","getLegendHeight","legendWidth","getLegendWidth","legendHeightForBottom","hasArc","hasArcType","xAxisHeight","getHorizontalAxisHeight","subchartHeight","subchart_show","subchart_size_height","currentWidth","getCurrentWidth","currentHeight","getCurrentHeight","margin","getCurrentPaddingTop","getCurrentPaddingRight","getCurrentPaddingBottom","getCurrentPaddingLeft","margin2","NaN","margin3","updateSizeForLegend","width2","height2","arcWidth","arcHeight","hasType","gauge_fullCircle","getGaugeLabelHeight","updateRadius","radiusExpanded","updateTargetsForText","updateTargetsForBar","updateTargetsForLine","updateTargetsForArc","updateTargetsForSubchart","showTargets","isTargetToShow","transition_duration","withY","withSubchart","withTransitionForExit","withTrimXDomain","withLegend","withEventRect","withDimension","withUpdateXAxis","drawArea","drawBar","drawLine","xForText","yForText","durationForExit","durationForAxis","waitForDraw","flow","intervalForCulling","xDomainForZoom","cx","cy","areaIndices","getShapeIndices","isAreaType","barIndices","isBarType","lineIndices","isLineType","hideAxis","xv","legend_show","updateLegend","updateXDomain","zoom_rescale","orgDomain","axis_y_tick_count","axis_y2_tick_count","axis_x_tick_culling_max","e","generateDrawArea","generateDrawBar","generateDrawLine","generateXYForText","updateXgridFocus","data_empty_label_text","updateGrid","updateRegion","updateBar","updateLine","updateArea","updateCircle","hasDataLabel","updateText","redrawTitle","redrawArc","redrawSubchart","interaction_enabled","redrawEventRect","updateZoom","updateCircleY","circleY","circleX","generateFlow","isTabVisible","transitionsToWait","redrawBar","redrawLine","redrawArea","redrawCircle","redrawText","redrawRegion","redrawGrid","generateWait","t","add","onrendered","updateAndRedraw","withTransitionForTransform","transformAll","redrawWithoutRescale","axis_x_type","isCustomX","data_x","data_xs","axis_y_type","initialOpacity","initialOpacityForCircle","opacityForCircle","opacity","point_show","isScatterType","opacityForText","xx","axis_x_categories","yv","yScale","subxx","transformMain","transformContext","transformLegend","getXAxisClipX","getXAxisClipY","getXAxisClipWidth","getXAxisClipHeight","getYAxisClipX","getYAxisClipY","getYAxisClipWidth","getYAxisClipHeight","withoutAxis","observer","MutationObserver","mutations","mutation","previousSibling","disconnect","setInterval","parentNode","clearInterval","update","observe","attributes","childList","characterData","console","error","resizeFunction","generateResize","onresize","resize_auto","resizeTimeout","clearTimeout","setTimeout","flush","onresized","resizeIfElementDisplayed","offsetParent","attachEvent","addEventListener","wrapper","resizeFunctions","callResizeFunctions","f","splice","endall","callback","timer","done","parsedDate","data_xFormat","parse","isNaN","hidden","mozHidden","msHidden","webkitHidden","Function","oThis","aArgs","fToBind","fNOP","fBound","SVGPathSeg","typeAsLetter","owningPathSegList","pathSegType","pathSegTypeAsLetter","_owningPathSegList","classname","PATHSEG_UNKNOWN","PATHSEG_CLOSEPATH","PATHSEG_MOVETO_ABS","PATHSEG_MOVETO_REL","PATHSEG_LINETO_ABS","PATHSEG_LINETO_REL","PATHSEG_CURVETO_CUBIC_ABS","PATHSEG_CURVETO_CUBIC_REL","PATHSEG_CURVETO_QUADRATIC_ABS","PATHSEG_CURVETO_QUADRATIC_REL","PATHSEG_ARC_ABS","PATHSEG_ARC_REL","PATHSEG_LINETO_HORIZONTAL_ABS","PATHSEG_LINETO_HORIZONTAL_REL","PATHSEG_LINETO_VERTICAL_ABS","PATHSEG_LINETO_VERTICAL_REL","PATHSEG_CURVETO_CUBIC_SMOOTH_ABS","PATHSEG_CURVETO_CUBIC_SMOOTH_REL","PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS","PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL","_segmentChanged","segmentChanged","SVGPathSegClosePath","_asPathString","clone","SVGPathSegMovetoAbs","_x","_y","defineProperty","get","set","SVGPathSegMovetoRel","SVGPathSegLinetoAbs","SVGPathSegLinetoRel","SVGPathSegCurvetoCubicAbs","_x1","_y1","_x2","_y2","SVGPathSegCurvetoCubicRel","SVGPathSegCurvetoQuadraticAbs","SVGPathSegCurvetoQuadraticRel","SVGPathSegArcAbs","r1","r2","angle","largeArcFlag","sweepFlag","_r1","_r2","_angle","_largeArcFlag","_sweepFlag","SVGPathSegArcRel","SVGPathSegLinetoHorizontalAbs","SVGPathSegLinetoHorizontalRel","SVGPathSegLinetoVerticalAbs","SVGPathSegLinetoVerticalRel","SVGPathSegCurvetoCubicSmoothAbs","SVGPathSegCurvetoCubicSmoothRel","SVGPathSegCurvetoQuadraticSmoothAbs","SVGPathSegCurvetoQuadraticSmoothRel","SVGPathElement","createSVGPathSegClosePath","createSVGPathSegMovetoAbs","createSVGPathSegMovetoRel","createSVGPathSegLinetoAbs","createSVGPathSegLinetoRel","createSVGPathSegCurvetoCubicAbs","createSVGPathSegCurvetoCubicRel","createSVGPathSegCurvetoQuadraticAbs","createSVGPathSegCurvetoQuadraticRel","createSVGPathSegArcAbs","createSVGPathSegArcRel","createSVGPathSegLinetoHorizontalAbs","createSVGPathSegLinetoHorizontalRel","createSVGPathSegLinetoVerticalAbs","createSVGPathSegLinetoVerticalRel","createSVGPathSegCurvetoCubicSmoothAbs","createSVGPathSegCurvetoCubicSmoothRel","createSVGPathSegCurvetoQuadraticSmoothAbs","createSVGPathSegCurvetoQuadraticSmoothRel","getPathSegAtLength","distance","isFinite","measurementElement","createElementNS","setAttribute","getAttribute","lastPathSegment","numberOfItems","removeItem","SVGPathSegList","pathElement","_pathElement","_list","_parsePath","_mutationObserverConfig","_pathElementMutationObserver","_updateListFromPathMutations","_checkPathSynchronizedToList","_pathSegList","takeRecords","mutationRecords","hasPathMutations","record","attributeName","_writeListToPath","_pathSegArrayAsString","pathSeg","clear","initialize","newItem","_checkValidIndex","insertItemBefore","replaceItem","item","appendItem","pathSegArray","string","first","Builder","appendSegment","Source","_string","_currentIndex","_endIndex","_previousCommand","_skipOptionalSpaces","_isCurrentSpace","character","_skipOptionalSpacesOrDelimiter","hasMoreData","peekSegmentType","lookahead","_pathSegTypeFromChar","_nextCommandHelper","previousCommand","initialCommandIsMoveTo","command","_parseNumber","exponent","integer","frac","decimal","sign","expsign","startIndex","startIntPartIndex","scanIntPartIndex","multiplier","number","pow","_parseArcFlag","flag","flagChar","parseSegment","points","arcAngle","arcLarge","arcSweep","builder","source","String","targetLength","padString","repeat","labels","axis_x_max","axis_y_max","axis_y2_max","axis_x_min","axis_y_min","axis_y2_min","category","categories","resize","size_width","size_height","destroy","detachEvent","removeEventListener","targetIds","shown","targetId","names","clearLegendItemTextBoxCache","updateDataAttributes","colors","args","baseTarget","baseValue","diff","to","notfoundIds","orgDataCount","getMaxDataCount","tail","json","rows","columns","j","getOtherTargetX","missing","translateX","transform","scaleX","flowIndex","flowLength","flowStart","getValueOnIndex","flowEnd","durationForFlow","wait","mainRegion","mainText","mainBar","mainLine","mainArea","mainCircle","updateXGrid","hideXGridFocus","ease","isRegionOnX","xgridAttr","regionX","regionWidth","focus","candidates","mapToTargetIds","selectorTargets","revert","defocus","expandArc","toggleFocusLegend","unexpandArc","showLegend","isLegendToShow","selectorLegends","grids","grid_x_lines","removeGridLines","grid_y_lines","groups","data_groups","show","hide","hideLegend","load","addXs","classes","data_classes","data_colors","hasCaches","cacheIds","getCaches","unload","loadFromArgs","ids","c","selected","merge","getTargetSelectorSuffix","__data__","indices","resetOther","data_selection_enabled","toggle","getToggle","isTargetId","data_selection_grouped","isTargetIndex","isSelected","data_selection_isselectable","unselect","removeHiddenTargetIds","that","mouse","isMultipleX","getYScale","getIndexByX","dispatchEvent","tooltip_onshow","tooltip_onhide","transformTo","optionsForRedraw","setTargetType","updateTargetX","updateTargetXs","zoom_onzoom","enable","enabled","unzoom","zoom_x_max","zoom_x_min","pie","layout","reduce","getOrderFunction","gauge_width","donut_width","gaugeArcWidth","gauge_arcs_minWidth","radius","innerRadiusRatio","innerRadius","updateArc","svgArc","getSvgArc","svgArcExpanded","getSvgArcExpanded","svgArcExpandedSub","updateAngle","gMin","gMax","gTic","gValue","startAngle","endAngle","isGaugeType","gauge_min","gauge_max","gauge_startingAngle","hasGaugeType","singleArcWidth","outerRadius","newArc","withoutUpdate","updated","centroid","rate","expandWidth","getArc","force","isArcType","transformForArcLabel","ratio","translate","hasGauge","sqrt","donut_label_ratio","pie_label_ratio","cos","abs","getArcRatio","whole","convertToArcData","addName","textForArcLabel","shouldShowArcLabel","meetsArcLabelThreshold","getArcLabelFormat","defaultArcValueFormat","textForGaugeMinMax","isMax","getGaugeLabelExtents","shouldExpand","expandDuration","isDonutType","donut_expand_duration","gauge_expand_duration","isPieType","pie_expand_duration","donut_expand","gauge_expand","pie_expand","shouldShow","donut_label_show","pie_label_show","donut_label_threshold","pie_label_threshold","pie_label_format","gauge_label_format","donut_label_format","gauge_label_extents","getArcTitle","donut_title","mainPieEnter","classChartArc","classArcs","classFocus","mainArc","backgroundArc","mainArcLabelLine","arcData","classArc","_current","color_pattern","gauge_labelLine_show","lineLength","lineThickness","innerLineLength","lineAngle","arcInnerRadius","linePositioningAngle","data_onmouseover","selectedData","showTooltip","revertLegend","hideTooltip","data_onmouseout","toggleShape","data_onclick","attrTween","interpolate","interpolated","round","d1","gauge_label_show","gauge_units","addCache","cloneTarget","generateClass","prefix","classText","classTexts","classShape","classShapes","classLine","classLines","classCircle","classCircles","classBar","classBars","classArea","classAreas","classRegion","classEvent","classTarget","additionalClassSuffix","additionalClass","classFocused","classDefocused","classChartText","classChartLine","classChartBar","selectorTarget","selectorLegend","navigator","appVersion","toLowerCase","URL","parent","getAxisClipX","getAxisClipY","getAxisClipWidth","getAxisClipHeight","pattern","category10","data_color","threshold","color_threshold","asValue","padding_left","padding_right","padding_top","padding_bottom","zoom_extent","zoom_onzoomstart","zoom_onzoomend","interaction_brighten","data_xSort","data_idConverter","data_names","data_type","data_types","data_labels","data_order","data_regions","data_selection_multiple","data_selection_draggable","data_onselected","data_onunselected","subchart_axis_x_show","subchart_onbrush","legend_inset_x","legend_inset_y","legend_inset_step","legend_item_onclick","legend_item_onmouseover","legend_item_onmouseout","legend_equally","legend_padding","legend_item_tile_width","legend_item_tile_height","axis_x_tick_outer","axis_x_padding","axis_y_inverted","axis_y_center","axis_y_tick_outer","axis_y_padding","axis_y_default","axis_y2_inverted","axis_y2_center","axis_y2_tick_outer","axis_y2_padding","axis_y2_default","grid_x_show","grid_x_type","grid_y_show","grid_y_ticks","grid_focus_show","point_r","point_sensitivity","point_focus_expand_enabled","point_focus_expand_r","point_select_r","line_connectNull","line_step_type","bar_width","bar_width_ratio","bar_width_max","bar_zerobased","bar_space","area_zerobased","area_above","spline_interpolation_type","tooltip_show","tooltip_grouped","tooltip_order","tooltip_format_title","tooltip_format_name","tooltip_format_value","tooltip_position","tooltip_contents","defaultTitleFormat","defaultValueFormat","getTooltipContent","tooltip_init_show","tooltip_init_x","tooltip_init_position","title_text","title_padding","title_position","additionalConfig","read","this_config","find","shift","url","mimeType","headers","req","xhr","header","dataResponse","response","responseText","responseURL","status","statusText","JSON","convertTsvToData","convertCsvToData","convertXsvToData","xsv","parser","parseRows","csv","tsv","targetKeys","new_rows","new_row","findValueInJson","object","pathArray","k","newRows","newRow","appendXs","isNotX","isX","xKey","getXKey","rawX","generateTargetX","getOtherTargetXs","getXValuesOfXKey","convertedId","id_org","v1","v2","hasNegativeValue","hasNegativeValueInTargets","hasPositiveValue","hasPositiveValueInTargets","xValues","filterByX","getXValue","idsForX","hasMultipleX","name","valueOnIndex","updateXs","getPrevX","getNextX","getMaxDataCountTarget","maxTarget","getEdgeX","hasTarget","removeHiddenLegendIds","getValuesAsIdKeyed","ys","checkValueInTargets","checker","isOrderDesc","isOrderAsc","orderAsc","orderDesc","t1","t2","reducer","t1Sum","t2Sum","order","orderTargets","fct","reverse","filterRemoveNull","filterByXDomain","xDomain","getDataLabelLength","lengths","paddingCoef","dataLabelFormat","isNoneArc","isArc","findSameXOfValues","targetX","sames","findClosestFromTargets","pos","findClosest","closest","minDist","isWithinBar","dist","xIndex","yIndex","convertValuesToStep","converted","attrs","current","types","getYDomainMin","baseId","idsInGroup","getYDomainMax","yDomainAbs","isAllPositive","isAllNegative","targetsByAxisId","yTargets","yMin","yMax","yDomainMin","yDomainMax","center","isZeroBased","isInverted","showHorizontalDataLabel","showVerticalDataLabel","getXDomainMin","getXDomainMax","getXDomainPadding","maxDataCount","paddingLeft","paddingRight","firstX","lastX","getTime","withTrim","updateScaleExtent","trimXDomain","zoomDomain","getZoomDomain","drag","sx","sy","mx","my","minX","maxX","minY","maxY","altDomain","_w","_h","isIncluded","isWithin","togglePoint","togglePath","dragstart","dragend","getYFormat","forArc","formatForY","yFormat","formatForY2","y2Format","defaultFormat","xgridData","generateGridData","updateYGrid","gridValues","gridTextAnchor","gridTextDx","xGridTextX","yGridTextX","showXGridFocus","dataToShow","focusEl","firstYear","lastYear","gridData","tickNum","getFullYear","getGridFilterToRemove","param","forX","toRemove","toShow","eventRectUpdate","maxDataCountTarget","generateEventRectsForMultipleXs","updateEventRect","datum","generateEventRectsForSingleX","rectW","rectX","getEventRectWidth","prevX","nextX","thisX","eventRectEnter","expandCircles","expandBars","unexpandCircles","unexpandBars","isStepType","isWithinShape","behavior","origin","mouseout","selector","event","createEvent","initMouseEvent","legendItemTextBox","legendHasRendered","updateLegendWithDefaults","insetLegendPosition","updateLegendStep","step","updateLegendItemWidth","updateLegendItemHeight","opacityForLegend","opacityForUnfocusedLegend","xForLegend","xForLegendText","xForLegendRect","yForLegend","yForLegendText","yForLegendRect","x1ForLegendTile","x2ForLegendTile","yForLegendTile","l","rects","tiles","background","paddingTop","maxHeight","posMin","tileWidth","totalLength","offsets","widths","heights","margins","steps","getTextBox","textElement","getTextRect","textContent","updatePositions","maxLength","reset","isLast","itemWidth","itemHeight","itemLength","areaLength","updateValues","withoutStep","altKey","parentData","regionY","regionHeight","getScale","forTimeseries","getX","offset","_scale","raw","getY","getSubYScale","forInit","xMin","xMax","subXMin","subXMax","subYMin","subYMax","selectPoint","r","pointSelectR","unselectPoint","selectPath","rgb","brighter","unselectPath","nodeName","barData","random","getBarW","barTargetsNum","getBars","isSub","getPoints","generateGetBarPoints","indexX","indexY","__max__","barW","barX","getShapeX","barY","getShapeY","barOffset","getShapeOffset","barSpaceOffset","y0","posX","posY","seg0","seg1","ex","ey","typeFilter","targetsNum","isWithinStep","isWithinCircle","getInterpolate","interpolation","isInterpolationType","isSplineType","mainLineEnter","lineData","generateGetLinePoints","yScaleGetter","xValue","yValue","defined","x0","lineWithRegions","lineTargetsNum","lineOffset","_regions","sWithRegion","xp","yp","diffx2","xOffset","isWithinRegions","generateM","d0","x_diff","xv0","xv1","orgAreaOpacity","generateGetAreaPoints","value0","getAreaBaseValue","value1","areaTargetsNum","areaOffset","lineOrScatterData","pointR","getCircles","pointExpandedR","d3_this","getParentWidth","getParentHeight","getTitlePadding","getAxisWidthByAxisId","defaultPadding","legendWidthOnRight","getParentRectValue","tagName","offsetWidth","getSvgLeft","hasLeftAxisRect","leftAxisClass","leftAxis","svgRect","chartRect","svgLeft","redrawForBrush","context","visibility","contextLineEnter","updateBarForSubchart","contextBar","redrawBarForSubchart","drawBarOnSub","updateLineForSubchart","contextLine","redrawLineForSubchart","drawLineOnSub","updateAreaForSubchart","contextArea","redrawAreaForSubchart","drawAreaOnSub","barOrLineData","forFlow","cls","rect","font","getAreaPoints","getBarPoints","getLinePoints","getter","getXForText","getYForText","xPos","yPos","isSafari","isChrome","xForTitle","yForTitle","getTooltipSortFunction","valueOf","sortFunction","bgcolor","titleFormat","nameFormat","valueFormat","tooltipSortFunction","tooltipPosition","tWidth","tHeight","tooltipLeft","tooltipRight","tooltipTop","chartRight","positionFunction","property","has","ua","userAgent","startEvent","sourceEvent","redrawForZoom","clientX","clientY","orgScaleExtent","z","factory","d3_arraySlice","d3_array","list","d3_document","d3_documentElement","ownerDocument","documentElement","d3_window","defaultView","childNodes","nodeType","array","now","setProperty","d3_element_prototype","Element","d3_element_setAttribute","d3_element_setAttributeNS","setAttributeNS","d3_style_prototype","CSSStyleDeclaration","d3_style_setProperty","space","local","priority","d3_ascending","d3_number","d3_numeric","d3_bisector","compare","lo","hi","mid","ascending","descending","sum","mean","quantile","H","floor","median","numbers","variance","m","deviation","d3_bisect","d3_transposeLength","bisectLeft","bisect","bisectRight","bisector","shuffle","i0","i1","permute","indexes","permutes","pairs","p1","transpose","matrix","row","zip","entries","arrays","merged","d3_class","ctor","properties","d3_Map","_","d3_range_integerScale","d3_map_escape","d3_map_unescape","d3_map_has","d3_map_remove","d3_map_keys","d3_map_size","d3_map_empty","d3_Set","d3_identity","d3_rebind","method","d3_vendorSymbol","toUpperCase","d3_vendorPrefixes","prefixName","nest","sortValues","rollup","sortKeys","mapType","depth","keyValue","setter","valuesByKey","sortKey","keyMap","rebind","d3_noop","d3_dispatch","d3_dispatch_event","dispatch","listeners","listenerByName","listener","d3_eventPreventDefault","preventDefault","d3_eventSource","d3_eventDispatch","of","thiz","argumentz","e1","e0","hasOwnProperty","requote","d3_requote_re","d3_subclass","d3_selection","d3_selectionPrototype","d3_select","querySelector","d3_selectAll","querySelectorAll","d3_selectMatches","d3_selectMatcher","matches","Sizzle","matchesSelector","d3_selection_selector","d3_selection_selectorAll","subgroup","subnode","group","subgroups","d3_nsXhtml","d3_nsPrefix","xhtml","xlink","xml","xmlns","d3_selection_attr","ns","qualify","removeAttributeNS","removeAttribute","d3_collapse","trim","d3_selection_classedRe","RegExp","d3_selection_classes","d3_selection_classed","d3_selection_classedName","re","classList","lastIndex","test","d3_selection_style","removeProperty","d3_selection_property","d3_selection_creator","namespace","namespaceURI","d3_selectionRemove","removeChild","d3_selection_dataNode","d3_selection_filter","d3_selection_sortComparator","comparator","d3_selection_each","d3_selection_enter","d3_selection_enterPrototype","getAttributeNS","contains","getComputedStyle","getPropertyValue","innerHTML","appendChild","before","insertBefore","groupData","nodeData","n0","updateNodes","enterNodes","exitNodes","nodeByKeyValue","keyValues","next","nextSibling","d3_selection_on","capture","wrap","d3_selection_onListener","d3_selection_onFilters","onRemove","$","d3_selection_onFilter","match","upgroup","j0","nodes","mouseenter","mouseleave","related","relatedTarget","compareDocumentPosition","d3_event_dragSelect","d3_event_dragId","d3_event_dragSuppress","click","suppressClick","off","container","d3_mousePoint","d3_mouse_bug44083","changedTouches","ownerSVGElement","createSVGPoint","point","scrollX","scrollY","ctm","border","getScreenCTM","pageX","pageY","matrixTransform","inverse","clientLeft","clientTop","d3_behavior_dragTouchId","identifier","touch","touches","mousedown","touchstart","subject","move","dragOffset","correspondingElement","dragged","dragId","dragName","dragSubject","position1","position0","dragRestore","d3_radians","d3_degrees","d3_sgn","d3_cross2d","d3_acos","acos","d3_asin","asin","d3_cosh","exp","d3_haversin","SQRT2","interpolateZoom","p0","S","ux0","uy0","w0","ux1","uy1","w1","d2","log","b0","b1","r0","coshr0","u","d3_sinh","translate0","center0","mousewheelTimer","touchtime","view","d3_behavior_zoomInfinity","zooming","mousemove","mouseup","mousedowned","d3_behavior_zoomWheel","mousewheeled","dblclicked","touchstarted","location","scaleTo","translateTo","zoomTo","rescale","invert","zoomstarted","zoomed","zoomended","location0","d3_selection_interrupt","locations0","distance0","zoomName","touchmove","touchend","relocate","started","moved","ended","changed","LN2","q","l0","l1","distance1","d3_behavior_zoomDelta","shiftKey","deltaY","deltaMode","wheelDelta","detail","view1","d3_transitionInheritId","tween","d3_color","d3_hsl","d3_rgb_parse","d3_rgb_hsl","hsl","d3_hslPrototype","d3_hsl_rgb","m1","m2","vv","d3_rgb","d3_hcl","d3_lab_hcl","d3_lab","d3_rgb_lab","darker","hcl","d3_hclPrototype","d3_hcl_lab","d3_lab_K","lab","d3_lab_X","d3_lab_Y","d3_lab_Z","d3_labPrototype","d3_lab_rgb","d3_xyz_rgb","d3_lab_xyz","atan2","d3_xyz_lab","d3_rgbNumber","d3_rgbString","d3_rgbPrototype","d3_rgb_hex","exec","parseFloat","d3_rgb_parseNumber","d3_rgb_names","parseInt","d3_rgb_xyz","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","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","green","greenyellow","grey","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","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","d3_functor","d3_xhrType","d3_xhr","request","XMLHttpRequest","responseType","respond","result","d3_xhrHasResponse","XDomainRequest","onload","onerror","onreadystatechange","readyState","onprogress","progress","send","open","setRequestHeader","overrideMimeType","beforesend","abort","d3_xhr_fixCallback","functor","dsv","delimiter","reFormat","delimiterCode","charCodeAt","typedResponse","formatRow","formatValue","join","stringify","eol","EOL","EOF","N","I","token","formatRows","fieldSet","fields","field","d3_timer_queueHead","d3_timer_queueTail","d3_timer_interval","d3_timer_timeout","d3_timer_frame","d3_timer","delay","then","d3_timer_step","d3_timer_mark","d3_timer_sweep","t0","d3_format_precision","LN10","d3_formatPrefixes","symbol","d3_locale_numberFormat","locale","locale_decimal","locale_thousands","thousands","locale_grouping","grouping","locale_currency","currency","formatGroup","substring","specifier","d3_format_re","fill","align","zfill","comma","precision","suffix","d3_format_types","d3_format_typeDefault","zcomma","fullSuffix","negative","formatPrefix","after","lastIndexOf","fromCharCode","X","toPrecision","toExponential","d3_time","d3_date","d3_date_utc","UTC","getUTCDate","getUTCDay","getUTCFullYear","getUTCHours","getUTCMilliseconds","getUTCMinutes","getUTCMonth","getUTCSeconds","getTimezoneOffset","setDate","d3_time_prototype","setUTCDate","setDay","setUTCDay","setFullYear","setUTCFullYear","setHours","setUTCHours","setMilliseconds","setUTCMilliseconds","setMinutes","setUTCMinutes","setMonth","setUTCMonth","setSeconds","setUTCSeconds","setTime","d3_time_interval","dt","times","d3_time_interval_utc","d3_locale_timeFormat","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_days","days","locale_shortDays","shortDays","locale_months","months","locale_shortMonths","shortMonths","d3_time_format","template","d3_time_formatPads","d3_time_formats","M","L","Z","d3_time_parse","localZ","W","U","d3_time_parsers","d3_time_formatMulti","d3_time_periodLookup","d3_time_dayRe","d3_time_formatRe","d3_time_dayLookup","d3_time_formatLookup","d3_time_dayAbbrevRe","d3_time_dayAbbrevLookup","d3_time_monthRe","d3_time_monthLookup","d3_time_monthAbbrevRe","d3_time_monthAbbrevLookup","A","B","d3_time_formatPad","dayOfYear","sundayOfYear","mondayOfYear","Y","d3_time_zone","d3_time_parseDay","d3_time_parseHour24","d3_time_parseDayOfYear","d3_time_parseMilliseconds","d3_time_parseMonthNumber","d3_time_parseMinutes","d3_time_parseSeconds","d3_time_parseWeekNumberSunday","d3_time_parseWeekdayNumber","d3_time_parseWeekNumberMonday","d3_time_parseYear","d3_time_parseFullYear","d3_time_parseZone","d3_time_parseLiteralPercent","year","day","years","week","sunday","weeks","weekOfYear","d3_time_numberRe","d3_time_percentRe","zs","zh","zm","formats","numberFormat","timeFormat","d3_locale_enUS","d3_adder","geo","d3_adderSum","d3_adderTemp","bv","av","d3_geo_streamGeometry","geometry","d3_geo_streamGeometryType","stream","d3_geo_streamObjectType","Feature","feature","FeatureCollection","features","Sphere","sphere","Point","coordinates","MultiPoint","LineString","d3_geo_streamLine","MultiLineString","Polygon","d3_geo_streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","d3_geo_areaSum","d3_geo_area","d3_geo_centroidW0","d3_geo_centroidW1","d3_geo_centroidX0","d3_geo_centroidY0","d3_geo_centroidZ0","d3_geo_centroidX1","d3_geo_centroidY1","d3_geo_centroidZ1","d3_geo_centroidX2","d3_geo_centroidY2","d3_geo_centroidZ2","d3_geo_areaRingSum","d3_geo_areaRingStart","nextPoint","d3_geo_cartesian","spherical","d3_geo_cartesianDot","d3_geo_cartesianCross","d3_geo_cartesianAdd","d3_geo_cartesianScale","vector","d3_geo_cartesianNormalize","d3_geo_spherical","cartesian","d3_geo_sphericalEqual","bounds","ranges","bound","ringPoint","ringStart","ringEnd","linePoint","normal","inflection","antimeridian","compareRanges","withinRange","best","d3_geo_centroid","d3_geo_centroidPoint","d3_geo_centroidLineStart","d3_geo_centroidLineEnd","d3_geo_centroidRingStart","d3_geo_centroidPointXYZ","z0","cz","d3_geo_compose","compose","d3_true","d3_geo_clipPolygon","segments","clipStartInside","clip","segment","d3_geo_clipPolygonIntersection","d3_geo_clipPolygonLinkCircular","entry","isSubject","other","d3_geo_clip","pointVisible","clipLine","clipStart","rotatedClipStart","pointRing","polygon","meridian","parallel","meridianNormal","polarAngle","winding","ring","point0","intersection","d3_geo_pointInPolygon","polygonStarted","d3_geo_clipSort","pointLine","buffer","d3_geo_clipBufferListener","ringListener","clean","ringSegments","pop","d3_geo_clipSegmentLength1","rejoin","d3_geo_clipAntimeridian","atan","d3_geo_clipAntimeridianIntersect","from","direction","d3_geom_clipLine","ax","ay","d3_geo_clipExtentMAX","d3_geo_clipExtent","x__","y__","v__","x_","y_","v_","listener_","bufferListener","wn","insidePolygon","inside","visible","a1","corner","comparePoints","ca","cb","d3_geo_conic","projectAt","d3_geo_projectionMutator","parallels","d3_geo_conicEqualArea","C","forward","clipExtent","output","valid","conicEqualArea","albers","albersUsa","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","lower48Stream","alaskaStream","hawaiiStream","d3_geo_pathAreaSum","d3_geo_pathAreaPolygon","d3_geo_pathBoundsX0","d3_geo_pathBoundsY0","d3_geo_pathBoundsX1","d3_geo_pathBoundsY1","d3_geo_pathArea","d3_geo_pathAreaRingStart","x00","y00","d3_geo_pathBounds","d3_geo_pathBuffer","pointCircle","d3_geo_pathBufferCircle","pointLineStart","lineEndPolygon","pointRadius","d3_geo_lengthSum","d3_geo_pathCentroid","d3_geo_pathCentroidPoint","d3_geo_pathCentroidLineStart","d3_geo_pathCentroidLineEnd","d3_geo_pathCentroidRingStart","d3_geo_pathContext","moveTo","lineTo","closePath","d3_geo_resample","project","cosMinDistance","maxDepth","resample","resampleRecursive","resampleNone","d3_geo_transformPoint","a00","b00","c00","a0","c0","resampleLineTo","c1","dx2","dy2","dz","d3_geo_transform","d3_geo_projection","projectRotate","projectResample","preclip","postclip","clipAngle","projection","d3_geo_rotation","invalidate","d3_geo_projectionRadians","cr","smallRadius","notHemisphere","v0","v00","point2","point1","code","intersect","d3_geo_circleInterpolate","two","n1","n2","n2n2","n1n2","determinant","c2","n1xn2","uu","polar","q1","d3_geo_clipCircle","d3_geo_equirectangular","d3_geo_identityRotation","rotation","sr","d3_geo_circleAngle","d3_geo_graticuleX","d3_geo_graticuleY","d3_source","d3_target","projectStream","contextStream","cacheStream","methods","projectionMutator","equirectangular","graticule","X1","X0","Y1","Y0","DX","DY","outline","majorExtent","minorExtent","majorStep","minorStep","greatArc","source_","target_","cy0","sy0","cy1","sy1","kx0","ky0","kx1","ky1","d3_geo_length","d3_geo_azimuthal","azimuthal","sinc","cosc","d3_geo_azimuthalEqualArea","azimuthalEqualArea","d3_geo_azimuthalEquidistant","d3_geo_conicConformal","F","d3_geo_mercator","d3_geo_conicEquidistant","G","azimuthalEquidistant","conicConformal","conicEquidistant","d3_geo_gnomonic","d3_geo_mercatorProjection","clipAuto","gnomonic","mercator","d3_geo_orthographic","orthographic","d3_geo_stereographic","d3_geo_transverseMercator","d3_geom_pointX","d3_geom_pointY","d3_geom_hullUpper","hull","hs","d3_geom_hullOrder","stereographic","transverseMercator","geom","vertices","fx","fy","flippedPoints","upper","lower","skipLeft","skipRight","d3_geom_polygonPrototype","d3_geom_polygonInside","d3_geom_polygonIntersect","x3","x21","x43","y3","y21","y43","d3_geom_polygonClosed","input","d3_geom_voronoiEdges","d3_geom_voronoiCells","d3_geom_voronoiBeaches","d3_geom_voronoiFirstCircle","d3_geom_voronoiCircles","d3_geom_voronoiBeachPool","d3_geom_voronoiCirclePool","d3_geom_voronoiBeach","d3_geom_voronoiRedBlackNode","edge","site","d3_geom_voronoiCreateBeach","beach","d3_geom_voronoiDetachBeach","d3_geom_voronoiDetachCircle","d3_geom_voronoiRemoveBeach","vertex","previous","P","disappearing","lArc","rArc","iArc","nArcs","d3_geom_voronoiSetEdgeEnd","d3_geom_voronoiCreateEdge","d3_geom_voronoiAttachCircle","d3_geom_voronoiAddBeach","dxl","dxr","directrix","d3_geom_voronoiLeftBreakPoint","d3_geom_voronoiRightBreakPoint","R","lSite","bx","by","rSite","hb","hc","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","d3_geom_voronoiCell","edges","d3_geom_voronoiHalfEdgeOrder","d3_geom_voronoiCircle","cSite","ha","d3_geom_voronoiConnectEdge","vb","fm","fb","va","lx","ly","rx","ry","d3_geom_voronoiEdge","d3_geom_voronoiHalfEdge","d3_geom_voronoiCreateBorderEdge","d3_geom_voronoiRedBlackTree","d3_geom_voronoiRedBlackRotateLeft","tree","d3_geom_voronoiRedBlackRotateRight","d3_geom_voronoiRedBlackFirst","d3_geom_voronoi","sites","bbox","d3_geom_voronoiVertexOrder","d3_geom_voronoiClipEdges","cell","iHalfEdge","halfEdges","nHalfEdges","cells","iCell","prepare","d3_geom_voronoiCloseCells","diagram","grandpa","uncle","sibling","voronoi","d3_geom_voronoiClipExtent","polygons","links","triangles","s0","s1","d3_geom_quadtreeCompatX","d3_geom_quadtreeCompatY","d3_geom_quadtreeVisit","children","d3_interpolateRgb","ar","ag","ab","br","bg","bb","d3_interpolateObject","d3_interpolate","d3_interpolateNumber","d3_interpolateString","am","bm","bs","bi","d3_interpolate_numberA","d3_interpolate_numberB","delaunay","quadtree","compat","x1_","y1_","x2_","y2_","leaf","nx","ny","insertChild","nPoint","xm","ym","below","root","visit","closestPoint","minDistance2","distance2","d3_geom_quadtreeFind","interpolateRgb","interpolateObject","interpolateNumber","interpolateString","interpolators","d3_interpolateArray","na","nb","interpolateArray","d3_ease_default","d3_ease","poly","quad","d3_ease_quad","cubic","d3_ease_cubic","d3_ease_sin","d3_ease_exp","d3_ease_circle","elastic","back","bounce","d3_ease_bounce","d3_ease_mode","out","d3_ease_reverse","d3_ease_reflect","d3_ease_cubicInOut","t3","d3_interpolateRound","d3_transform","kx","d3_transformNormalize","kz","d3_transformDot","ky","skew","interpolateHcl","ah","ac","al","bh","bc","bl","interpolateHsl","as","interpolateLab","aa","ba","interpolateRound","baseVal","consolidate","d3_transformIdentity","d3_interpolateTransformPop","d3_interpolateTransform","ta","tb","d3_interpolateTranslate","ra","rb","d3_interpolateRotate","wa","wb","d3_interpolateSkew","ka","kb","d3_interpolateScale","d3_uninterpolateNumber","d3_uninterpolateClamp","d3_layout_bundlePath","link","lca","aNodes","d3_layout_bundleAncestors","bNodes","aNode","bNode","sharedNode","d3_layout_bundleLeastCommonAncestor","ancestors","d3_layout_forceDragstart","fixed","d3_layout_forceDragend","d3_layout_forceMouseover","px","py","d3_layout_forceMouseout","d3_layout_forceAccumulate","alpha","charges","charge","pointCharge","interpolateTransform","bundle","paths","chord","chords","sortGroups","sortSubgroups","sortChords","relayout","groupSums","groupIndex","subgroupIndex","di","dj","subindex","resort","distances","strengths","friction","linkDistance","d3_layout_forceLinkDistance","linkStrength","d3_layout_forceLinkStrength","chargeDistance2","d3_layout_forceChargeDistance2","gravity","theta2","repulse","dw","dn","dragmove","resume","weight","chargeDistance","theta","neighbors","dimension","d3_layout_hierarchyRebind","hierarchy","d3_layout_hierarchyLinks","d3_layout_hierarchyVisitBefore","d3_layout_hierarchyVisitAfter","nodes2","d3_layout_hierarchyChildren","d3_layout_hierarchyValue","d3_layout_hierarchySort","child","stack","childs","revalue","partition","d3_layout_pieSortByValue","padAngle","da","pa","d3_layout_stackX","d3_layout_stackY","d3_layout_stackOut","d3_layout_stackOrderDefault","d3_layout_stackOffsetZero","series","orders","d3_layout_stackOrders","d3_layout_stackOffsets","d3_layout_stackMaxIndex","sums","d3_layout_stackReduceSum","tops","bottoms","silhouette","wiggle","s2","s3","o0","expand","zero","d3_layout_stackSum","d3_layout_histogramBinSturges","d3_layout_histogramBinFixed","d3_layout_histogramRange","d3_layout_packSort","d3_layout_packInsert","_pack_next","_pack_prev","d3_layout_packSplice","d3_layout_packIntersects","dr","d3_layout_packSiblings","d3_layout_packLink","d3_layout_packPlace","isect","d3_layout_packUnlink","d3_layout_packTransform","db","dc","d3_layout_treeSeparation","d3_layout_treeLeft","d3_layout_treeRight","d3_layout_treeMove","wm","wp","change","d3_layout_treeAncestor","vim","ancestor","d3_layout_clusterLeft","d3_layout_clusterRight","d3_layout_treemapPadNull","d3_layout_treemapPad","d3_scaleExtent","d3_scaleRange","d3_scale_bilinear","uninterpolate","d3_scale_nice","nice","d3_scale_niceStep","d3_scale_niceIdentity","histogram","frequency","valuer","ranger","binner","bin","bins","thresholds","pack","separation","nodeSize","root0","root1","node1","queue","wrapTree","firstWalk","secondWalk","sizeNode","tx","siblings","d3_layout_treeShift","midpoint","vip","vop","vom","sip","sop","sim","som","apportion","cluster","previousNode","d3_layout_clusterX","d3_layout_clusterY","treemap","stickies","pad","sticky","mode","squarify","score","worst","stickify","rmax","rmin","padConstant","logNormal","bates","irwinHall","d3_scale_polylinear","d3_scale_linear","clamp","rangeRound","d3_scale_linearTicks","d3_scale_linearTickFormat","d3_scale_linearNice","d3_scale_linearRebind","d3_scale_linearTickRange","span","err","d3_scale_linearPrecision","d3_scale_linearFormatSignificant","d3_scale_linearFormatPrecision","d3_scale_log","base","positive","niced","d3_scale_logNiceNegative","d3_scale_logFormat","d3_scale_pow","powp","d3_scale_powPow","powb","d3_scale_ordinal","xi","rangePoints","rangeRoundPoints","rangeBands","outerPadding","rangeRoundBands","ordinal","d3_category10","category20","d3_category20","category20b","d3_category20b","category20c","d3_category20c","d3_scale_quantile","quantiles","invertExtent","d3_scale_quantize","d3_scale_threshold","d3_scale_identity","identity","d3_zero","quantize","d3_svg_arcInnerRadius","d3_svg_arcOuterRadius","cornerRadius","padRadius","d3_svg_arcAuto","d3_svg_arcStartAngle","d3_svg_arcEndAngle","d3_svg_arcPadAngle","cw","rc","circleSegment","rp","ap","d3_svg_arcSweep","h1","h0","rc1","rc0","oc","kc","lc","t30","d3_svg_arcCornerTangents","t12","t03","t21","x01","y01","ox","oy","D","cx0","cx1","dx0","dy0","dx1","dy1","d3_svg_line","d3_svg_lineLinear","interpolateKey","tension","d3_svg_lineInterpolators","d3_svg_lineLinearClosed","d3_svg_lineStepBefore","d3_svg_lineStepAfter","basis","d3_svg_lineBasis","pi","d3_svg_lineDot4","d3_svg_lineBasisBezier3","d3_svg_lineBasisBezier","cardinal","d3_svg_lineHermite","d3_svg_lineCardinalTangents","monotone","tangents","d3_svg_lineSlope","d3_svg_lineFiniteDifferences","d3_svg_lineMonotoneTangents","lp","p2","d3_svg_lineBasisBezier1","d3_svg_lineBasisBezier2","d3_svg_lineRadial","d3_svg_area","interpolateReverse","points0","points1","fx0","fy0","fx1","fy1","d3_svg_chordRadius","d3_svg_diagonalProjection","d3_svg_symbolSize","d3_svg_symbolType","d3_svg_symbolCircle","radial","curve","diagonal","p3","projection_","d3_svg_diagonalRadialProjection","d3_svg_symbols","cross","diamond","d3_svg_symbolTan30","square","d3_svg_symbolSqrt3","symbolTypes","d3_transitionId","d3_transitionNamespace","d3_transitionInherit","d3_transitionNode","d3_transition","interrupt","d3_selection_interruptNS","lock","activeId","active","d3_transitionPrototype","d3_transition_tween","d3_transition_text","inherit","tweens","elapsed","cancelId","cancel","subnodes","nameNS","attrNull","attrNullNS","styleNull","styleTween","inheritId","id0","id1","tickFormat_","d3_svg_axisDefaultOrient","tickArguments_","tickSpacing","lineEnter","textEnter","d3_svg_axisX","d3_svg_axisY","d3_svg_axisOrients","tickSize","tickSubdivide","xExtentDomain","yExtentDomain","xExtent","yExtent","xClamp","yClamp","resizes","d3_svg_brushResizes","brushstart","d3_svg_brushCursor","gUpdate","backgroundUpdate","redrawX","redrawY","eventTarget","event_","resizing","resizingX","resizingY","keyCode","brushmove","brushend","move1","extent1","extent0","yi","nw","ne","se","sw","d3_time_formatUtc","d3_time_formatIso","d3_time_formatIsoNative","toISOString","d3_time_scale","tickMethod","d3_time_scaleSteps","d3_time_scaleMilliseconds","d3_time_scaleDate","skip","skipped","iso","second","seconds","minute","minutes","hour","timezone","hours","month","d3_time_scaleLocalMethods","d3_time_scaleLocalFormat","d3_time_scaleUtcMethods","d3_time_scaleUtcFormat","d3_json","d3_html","createRange","selectNode","body","createContextualFragment","responseXML","Control","Fullscreen","extend","onAdd","DomUtil","href","_map","_toggleTitle","DomEvent","_click","stopPropagation","toggleFullscreen","isFullscreen","Map","include","_isFullscreen","getContainer","pseudoFullscreen","_disablePseudoFullscreen","exitFullscreen","mozCancelFullScreen","webkitCancelFullScreen","msExitFullscreen","_enablePseudoFullscreen","requestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","ALLOW_KEYBOARD_INPUT","msRequestFullscreen","addClass","_setFullscreen","fire","removeClass","fullscreen","invalidateSize","_onFullscreenChange","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","mergeOptions","fullscreenControl","addInitHook","fullscreenchange","addControl","onFullscreenChange","whenReady","control","MarkerClusterGroup","FeatureGroup","maxClusterRadius","iconCreateFunction","clusterPane","Marker","pane","spiderfyOnEveryZoom","spiderfyOnMaxZoom","showCoverageOnHover","zoomToBoundsOnClick","singleMarkerMode","disableClusteringAtZoom","removeOutsideVisibleBounds","animate","animateAddingMarkers","spiderfyShapePositions","spiderfyDistanceMultiplier","spiderLegPolylineOptions","chunkedLoading","chunkInterval","chunkDelay","chunkProgress","polygonOptions","Util","setOptions","_defaultIconCreateFunction","_featureGroup","featureGroup","addEventParent","_nonPointGroup","_inZoomAnimation","_needsClustering","_needsRemoving","_currentShownBounds","_queue","_childMarkerEventHandlers","_childMarkerDragStart","_childMarkerMoved","_childMarkerDragEnd","TRANSITION","_withAnimation","_noAnimation","_markerCluster","MarkerCluster","MarkerClusterNonAnimated","addLayer","LayerGroup","addLayers","getLatLng","layer","hasLayer","_unspiderfy","_addLayer","_maxZoom","_topClusterLevel","_recalculateBounds","_refreshClustersIcons","_zoom","__parent","_animationAddLayer","_animationAddLayerNonAnimated","removeLayer","removeLayers","_unspiderfyLayer","_removeLayer","clusterShow","_arraySplice","latlng","_latlng","_extractNonGroupLayers","getChildCount","getAllChildMarkers","_recursivelyAddChildrenToMap","clearLayers","_gridClusters","_gridUnclustered","_noanimationUnspiderfy","eachLayer","_generateInitialClusters","getBounds","LatLngBounds","_bounds","getLayers","getLayer","stamp","_group","zoomToShowLayer","_icon","once","spiderfy","panTo","zoomToBounds","getMaxZoom","addTo","_maxLat","crs","MAX_LATITUDE","newlatlng","_getExpandedVisibleBounds","_zoomEnd","_moveEnd","_spiderfierOnAdd","_bindEvents","_unbindEvents","_mapPane","className","_spiderfierOnRemove","_hideCoverage","getVisibleParent","_removeFromGridUnclustered","getMinZoom","removeObject","__dragStart","_ignoreMove","_popup","isOpen","_moveChild","oldLatLng","openPopup","_markers","_childCount","_boundsNeedUpdate","_cLatLng","addObject","_childClusters","_iconNeedsUpdate","_isOrIsParent","originalEvent","listens","DivIcon","iconSize","_zoomOrSpiderfy","_showCoverage","_container","_shownPolygon","_spiderfied","getConvexHull","_mergeSplitClusters","_recursivelyRemoveChildrenFromMap","DistanceGrid","_overrideMarkerIcon","getNearObject","_addChild","_updateIcon","_enqueue","_queueTimeout","_processQueue","intersects","_animationStart","_animationZoomIn","_animationZoomOut","Browser","mobile","_checkBoundsMaxLat","_mapBoundsInfinite","getNorth","_northEast","lat","getSouth","_southWest","_addToMap","icon","LatLng","_recursively","_isSingleParent","clusterHide","_forceLayout","_recursivelyBecomeVisible","_recursivelyRestoreChildPositions","_animationEnd","_animationZoomOutSingle","_setPos","latLngToLayerPoint","_recursivelyAnimateChildrenInAndAddSelfToMap","setLatLng","falseFn","markerClusterGroup","Icon","getBoundsZoom","getZoom","setView","fitBounds","setIcon","createIcon","_iconObj","createShadow","_setClusterCenter","_resetBounds","lng","_wLatLng","_backupLatlng","_recursivelyAnimateChildrenIn","_restorePosition","setOpacity","_cellSize","_sqCellSize","_grid","_objectPoint","_getCoord","updateObject","eachObject","_sqDist","QuickHull","getDistant","findMostDistantPointFromBaseLine","maxPoint","newPoints","buildConvexHull","_2PI","_circleFootSeparation","_circleStartAngle","_spiralFootSeparation","_spiralLengthStart","_spiralLengthFactor","_circleSpiralSwitchover","_generatePointsSpiral","_generatePointsCircle","_animationSpiderfy","unspiderfy","_animationUnspiderfy","_round","_preSpiderfyLatlng","setZIndexOffset","_spiderLeg","markers","layerPointToLatLng","Polyline","Path","SVG","_path","strokeDasharray","strokeDashoffset","setStyle","_latLngToNewLayerPoint","closePopup","_unspiderfyWrapper","zoomAnimation","_unspiderfyZoomStart","getRenderer","_unspiderfyZoomAnim","hasClass","refreshClusters","_layers","_flagParentsIconsNeedUpdate","_refreshSingleMarkerModeMarkers","refreshIconOptions","_leaflet_id","encodeURIComponent","V","K","J","requestAnimationFrame","Q","cancelAnimationFrame","tt","lastId","throttle","wrapNum","formatNum","splitWords","getParamString","emptyImageUrl","requestFn","cancelFn","requestAnimFrame","cancelAnimFrame","it","callInitHooks","__super__","statics","includes","Mixin","Events","warn","_initHooks","_initHooksCalled","_on","_off","_events","ctx","_firingCount","sourceTarget","_propagateEvent","_eventParents","removeEventParent","propagatedFrom","et","clearAllEventListeners","addOneTimeEventListener","fireEvent","hasEventListeners","nt","trunc","alt","lon","_add","subtract","_subtract","divideBy","_divideBy","multiplyBy","_multiplyBy","scaleBy","unscaleBy","_floor","_ceil","_trunc","distanceTo","equals","getCenter","getBottomLeft","getTopRight","getTopLeft","getBottomRight","getSize","overlaps","isValid","getSouthWest","getNorthEast","getNorthWest","getWest","getSouthEast","getEast","toBBoxString","ot","latLngToPoint","transformation","_transform","pointToLatLng","untransform","unproject","getProjectedBounds","infinite","st","wrapLatLng","toBounds","wrapLng","wrapLat","wrapLatLngBounds","rt","at","_a","_b","_c","_d","ht","lt","ut","ct","_t","pt","mt","ft","gt","vt","yt","xt","opera","wt","Pt","bt","Lt","Tt","platform","zt","Mt","WebKitCSSMatrix","Ct","L_DISABLE_3D","St","Zt","orientation","kt","Et","PointerEvent","MSPointerEvent","Bt","At","TouchEvent","It","L_NO_TOUCH","Ot","Rt","Nt","devicePixelRatio","screen","deviceXDPI","logicalXDPI","Dt","jt","getContext","Ht","createSVGRect","Wt","firstChild","ie","ielt9","webkit","android","android23","androidStock","chrome","gecko","safari","phantom","opera12","win","ie3d","webkit3d","gecko3d","any3d","mobileWebkit","mobileWebkit3d","msPointer","pointer","touchNative","mobileOpera","mobileGecko","retina","passiveEvents","canvas","vml","adj","inlineSvg","Ft","Ut","Vt","qt","Gt","touchcancel","Kt","MSPOINTER_TYPE_TOUCH","pointerType","ii","Yt","Xt","Jt","$t","Qt","ti","pointerId","MSPOINTER_TYPE_MOUSE","ei","ni","sourceCapabilities","firesTouchEvents","isTrusted","_simulated","dblclick","simDblclick","oi","si","ri","ai","li","ui","wi","ci","_i","getElementById","currentStyle","T","mi","fi","lastChild","gi","vi","filters","Enabled","Opacity","Pi","_leaflet_pos","Li","Ti","E","zi","tabIndex","Mi","Ci","offsetHeight","Zi","boundingClientRect","Ei","TRANSFORM","TRANSITION_END","getStyle","toFront","toBack","setClass","getClass","testProp","setTransform","setPosition","getPosition","disableTextSelection","enableTextSelection","disableImageDrag","enableImageDrag","preventOutline","restoreOutline","getSizedParentNode","Si","Bi","ki","wheel","passive","Hi","Ai","_stopped","cancelBubble","Ii","Oi","_leaflet_disable_click","returnValue","Ri","Ni","Di","ji","wheelDeltaY","deltaX","deltaZ","disableScrollPropagation","disableClickPropagation","getMousePosition","getWheelDelta","isExternalTarget","addListener","removeListener","Wi","run","_el","_inProgress","_duration","_easeOutPower","_startPos","_offset","_startTime","_animate","_step","_complete","_animId","_runFrame","_easeOut","minZoom","maxZoom","layers","maxBounds","renderer","zoomAnimationThreshold","fadeAnimation","markerZoomAnimation","transform3DLimit","zoomSnap","zoomDelta","trackResize","_handlers","_zoomBoundLayers","_sizeChanged","_initContainer","_initLayout","_onResize","_initEvents","setMaxBounds","_limitZoom","_zoomAnimated","_createAnimProxy","_proxy","_catchTransitionEnd","_addLayers","_limitCenter","_stop","_loaded","pan","_tryAnimatedZoom","_tryAnimatedPan","_sizeTimer","_resetView","setZoom","zoomIn","zoomOut","setZoomAround","getZoomScale","latLngToContainerPoint","containerPointToLatLng","_getBoundsCenterZoom","paddingTopLeft","paddingBottomRight","fitWorld","panBy","_panAnim","_onPanTransitionStep","_onPanTransitionEnd","noMoveStart","_getMapPanePos","easeLinearity","_rawPanBy","flyTo","_moveStart","_flyToFrame","_move","getScaleZoom","flyToBounds","_panInsideMaxBounds","setMinZoom","setMaxZoom","panInsideBounds","_enforcingBounds","panInside","getPixelBounds","_lastCenter","debounceMoveend","oldSize","newSize","locate","_locateOptions","timeout","watch","_handleGeolocationError","message","_handleGeolocationResponse","_locationWatchId","geolocation","watchPosition","getCurrentPosition","stopLocate","clearWatch","coords","latitude","longitude","accuracy","timestamp","addHandler","_containerId","_clearControlPos","_resizeRequest","_clearHandlers","_panes","_renderer","createPane","_checkIfLoaded","_moved","_getCenterLayerPoint","_layersMinZoom","_layersMaxZoom","_size","clientWidth","clientHeight","_getTopLeftPoint","getPixelOrigin","_pixelOrigin","getPixelWorldBounds","getPane","getPanes","containerPointToLayerPoint","layerPointToContainerPoint","mouseEventToContainerPoint","mouseEventToLayerPoint","mouseEventToLatLng","_onScroll","_fadeAnimated","_initPanes","_initControlPos","_paneRenderers","markerPane","shadowPane","_getNewPixelOrigin","pinch","_getZoomSpan","_targets","_handleDOMEvent","_onMoveEnd","scrollTop","scrollLeft","_findEventTargets","srcElement","_draggableMoved","_isClickDisabled","_leaflet_disable_events","_fireDOMEvent","_mouseEvents","_radius","containerPoint","layerPoint","bubblingMouseEvents","boxZoom","disable","_latLngBoundsToNewLayerBounds","_getCenterOffset","_getBoundsOffset","_limitOffset","_rebound","mapPane","_animatingZoom","_onZoomTransitionEnd","_animMoveEnd","_destroyAnimProxy","propertyName","_nothingToAnimate","getElementsByClassName","_animateZoom","_animateToCenter","_animateToZoom","noUpdate","_tempFireZoomEvent","Fi","Ui","removeControl","_controlCorners","_refocusOnMap","screenX","screenY","Vi","_controlContainer","collapsed","autoZIndex","hideSingleBase","sortLayers","_layerControlInputs","_lastZIndex","_handlingClick","_update","_checkDisabledLayers","_onLayerChange","_expandIfNotCollapsed","addBaseLayer","addOverlay","_getLayer","_section","offsetTop","collapse","_layersLink","_baseLayersList","_separator","_overlaysList","overlay","setZIndex","_addItem","display","_createRadioElement","defaultChecked","layerId","_onInputClick","checked","disabled","qi","zoomInText","zoomInTitle","zoomOutText","zoomOutTitle","_zoomInButton","_createButton","_zoomIn","_zoomOutButton","_zoomOut","_updateDisabled","_disabled","Gi","zoomControl","metric","imperial","_addScales","updateWhenIdle","_mScale","_iScale","_updateScales","_updateMetric","_updateImperial","_getRoundNum","_updateScale","Ki","_attributions","attributionControl","getAttribution","addAttribution","_addAttribution","removeAttribution","setPrefix","Yi","Layers","Zoom","Scale","Attribution","attribution","_enabled","addHooks","removeHooks","Xi","clickTolerance","_element","_dragStartTarget","_preventOutline","_onDown","_dragging","finishDrag","which","button","_moving","_startPoint","_parentScale","_onMove","_onUp","_lastTarget","SVGElementInstance","correspondingUseElement","_newPos","_lastEvent","_updatePosition","noInertia","Ji","Uint8Array","ee","$i","Qi","te","oe","_code","simplify","pointToSegmentDistance","closestPointOnSegment","clipSegment","_getEdgeIntersection","_getBitCode","_sqClosestPointOnSegment","isFlat","_flat","clipPolygon","R_MINOR","LonLat","Mercator","SphericalMercator","ae","Earth","EPSG3395","EPSG3857","EPSG900913","EPSG4326","Simple","removeFrom","_mapToAdd","addInteractiveTarget","removeInteractiveTarget","_layerAdd","getEvents","beforeAdd","_addZoomLimit","_updateZoomLevels","_removeZoomLimit","getLayerId","invoke","he","bringToFront","bringToBack","le","popupAnchor","tooltipAnchor","crossOrigin","_createIcon","_getIconUrl","_createImg","_setIconStyles","shadowAnchor","iconAnchor","marginLeft","marginTop","src","ue","iconUrl","iconRetinaUrl","shadowUrl","shadowSize","imagePath","_detectIconPath","_stripUrl","ce","_marker","_draggable","_onDragStart","predrag","_onPreDrag","_onDrag","_onDragEnd","_adjustPan","autoPanSpeed","autoPanPadding","_panRequest","_oldLatLng","autoPan","_shadow","de","interactive","keyboard","zIndexOffset","riseOnHover","riseOffset","autoPanOnFocus","draggable","_initIcon","_removeIcon","_removeShadow","viewreset","getIcon","bindPopup","getElement","_bringToFront","_resetZIndex","_panOnFocus","_updateOpacity","_initInteraction","_zIndex","_updateZIndex","zIndex","_getPopupAnchor","_getTooltipAnchor","_e","stroke","lineCap","lineJoin","dashArray","dashOffset","fillColor","fillOpacity","fillRule","_initPath","_reset","_addPath","_removePath","_updatePath","_updateStyle","_updateBounds","_bringToBack","_project","_clickTolerance","tolerance","pe","setRadius","getRadius","_point","_radiusY","_pxBounds","_updateCircle","_empty","_containsPoint","me","_mRadius","fe","smoothFactor","noClip","_setLatLngs","getLatLngs","_latlngs","setLatLngs","closestLayerPoint","_parts","_rings","addLatLng","_defaultShape","_convertLatLngs","_projectLatlngs","_rawPxBounds","_clipPoints","_simplifyPoints","_updatePoly","ge","ve","addData","ye","ze","defaultOptions","resetStyle","onEachFeature","_setLayerStyle","pointToLayer","coordsToLatLng","we","xe","Pe","markersInheritOptions","be","Le","Te","Me","toGeoJSON","toMultiPoint","Ce","errorOverlayUrl","_url","_image","_initImage","setUrl","setBounds","zoomanim","onselectstart","onmousemove","_overlayOnError","Ze","autoplay","loop","keepAspectRatio","muted","playsInline","onloadeddata","getElementsByTagName","objectFit","Se","O","_source","openOn","close","_prepareOpen","_removeTimeout","getContent","_content","setContent","_updateContent","_updateLayout","_contentNode","hasChildNodes","_getAnchor","_containerBottom","_containerLeft","_containerWidth","ke","_initOverlay","minWidth","autoPanPaddingTopLeft","autoPanPaddingBottomRight","keepInView","closeButton","autoClose","closeOnEscapeKey","popup","closeOnClick","closePopupOnClick","preclick","moveend","_wrapper","_tipContainer","_tip","_closeButton","whiteSpace","Ee","_popupHandlersAdded","_openPopup","keypress","_onKeyPress","_movePopup","unbindPopup","togglePopup","isPopupOpen","setPopupContent","getPopup","permanent","_setPosition","Be","openTooltip","closeTooltip","bindTooltip","_tooltip","isTooltipOpen","unbindTooltip","_initTooltipInteractions","_tooltipHandlersAdded","_moveTooltip","_openTooltip","toggleTooltip","setTooltipContent","getTooltip","moving","bgPos","backgroundPosition","Default","Ae","tileSize","updateWhenZooming","updateInterval","maxNativeZoom","minNativeZoom","noWrap","keepBuffer","_levels","_tiles","_removeAllTiles","_tileZoom","_setAutoZIndex","isLoading","_loading","_clampZoom","_updateLevels","viewprereset","_invalidateAll","createTile","getTileSize","loaded","_onOpaqueTile","_noPrune","_pruneTiles","_fadeFrame","_onUpdateLevel","_removeTilesAtZoom","_onRemoveLevel","_setZoomTransform","_onCreateLevel","_level","retain","_retainParent","_retainChildren","_removeTile","_tileCoordsToKey","_setView","_abortLoading","_resetGrid","_setZoomTransforms","_tileSize","_globalTileRange","_pxBoundsToTileRange","_wrapX","_wrapY","_getTiledPixelBounds","_isValidTile","createDocumentFragment","_addTile","_tileCoordsToBounds","_keyToBounds","_keyToTileCoords","_tileCoordsToNwSe","tile","_initTile","_getTilePos","_wrapCoords","_tileReady","_noTilesToLoad","Ie","subdomains","errorTileUrl","zoomOffset","tms","zoomReverse","detectRetina","referrerPolicy","_onTileRemove","_tileOnLoad","_tileOnError","getTileUrl","_getSubdomain","_getZoomForUrl","complete","Oe","Re","defaultWmsParams","service","styles","transparent","uppercase","wmsParams","_crs","_wmsVersion","setParams","WMS","wms","Ne","_updatePaths","_destroyContainer","_onZoom","zoomend","_onZoomEnd","_onAnimZoom","_updateTransform","_center","De","_onViewPreReset","_postponeUpdatePaths","_draw","_onMouseMove","_onClick","_handleMouseOut","_ctx","_redrawRequest","_redrawBounds","_redraw","_updateDashArray","_order","prev","_drawLast","_drawFirst","_requestRedraw","_extendRedrawBounds","_dashArray","_clear","clearRect","save","restore","beginPath","_drawing","_fillStroke","globalAlpha","fillStyle","setLineDash","lineWidth","strokeStyle","_fireEvent","_handleMouseHover","_hoveredLayer","_mouseHoverThrottled","je","He","namespaces","We","coordsize","_stroke","_fill","stroked","filled","dashStyle","endcap","joinstyle","_setPath","Fe","_rootGroup","_svgSize","Ue","_getPaneRenderer","_createRenderer","preferCanvas","Ve","_boundsToLatLngs","pointsToPath","geometryToLayer","coordsToLatLngs","latLngToCoords","latLngsToCoords","getFeature","asFeature","_pane","overlayPane","_resetStateTimeout","_destroy","_onMouseDown","_resetState","_clearDeferredResetState","contextmenu","_onMouseUp","keydown","_onKeyDown","_box","_finish","boxZoomBounds","doubleClickZoom","_onDoubleClick","inertia","inertiaDeceleration","inertiaMaxSpeed","worldCopyJump","maxBoundsViscosity","_onPreDragLimit","_onPreDragWrap","_positions","_times","_offsetLimit","_viscosity","_lastTime","_lastPos","_absPos","_prunePositions","_initialWorldOffset","_worldWidth","_viscousLimit","qe","keyboardPanDelta","keyCodes","down","up","_setPanDelta","_setZoomDelta","_onFocus","blur","_onBlur","_addHooks","_removeHooks","_focused","scrollTo","_panKeys","_zoomKeys","ctrlKey","metaKey","scrollWheelZoom","wheelDebounceTime","wheelPxPerZoomLevel","_onWheelScroll","_delta","_lastMousePos","_timer","_performZoom","tapHold","tapTolerance","_holdTimeout","_cancel","_isTapValid","_cancelClickPrevent","_simulateEvent","MouseEvent","bubbles","cancelable","touchZoom","bounceAtZoomLimits","_onTouchStart","_zooming","_centerPoint","_startLatLng","_pinchStartLatLng","_startDist","_startZoom","_onTouchMove","_onTouchEnd","_animRequest","BoxZoom","DoubleClickZoom","Drag","Keyboard","ScrollWheelZoom","TapHold","TouchZoom","Bounds","CRS","Canvas","Circle","CircleMarker","Class","DivOverlay","Draggable","Evented","GeoJSON","GridLayer","Handler","ImageOverlay","Layer","LineUtil","PolyUtil","Popup","PosAnimation","Projection","Rectangle","Renderer","SVGOverlay","TileLayer","Tooltip","Transformation","VideoOverlay","circleMarker","divIcon","geoJSON","geoJson","gridLayer","imageOverlay","latLng","latLngBounds","layerGroup","marker","polyline","rectangle","svgOverlay","tileLayer","videoOverlay","noConflict","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","__esModule","definition","prop"],"sourceRoot":""}