{"version":3,"file":"main.048a60344c1f4c87.js","mappings":"yHAGO,MAAMA,EAAY,CACvBC,KAAM,aACNC,mBAAYC,EAAYD,WACxBE,gBAAiB,OAAOC,UACxBC,cAAeD,KACfE,gBAAiB,0BACjBC,KAAM,wSCwCD,IAAMC,EAAc,MAArB,MAAOA,EAAcC,SAAAC,KAAA,UAAAC,EAAA,mFAAdH,EAAcI,KAAA,GAAAC,OAAAC,4BAAAC,WAAAN,SAAAC,KAAA,UAAAC,EAAA,oFAAdH,EAAcQ,QAAA,CAxBvBC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAX,KACAY,KACAC,QAAoB5B,SAAAC,KAAA,UAAAC,EAAA,oFAGXH,EAAc8B,QAAA,CAxBvBrB,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAX,KACAY,KACAC,eAGS7B,CAAc,gGAAdA,EAAc+B,WAAA,OA1B1BxB,iBAAS,CACRC,QAAS,CACPC,KACAC,IACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAX,KACAY,KACAC,sJCxCG,IAAMG,EAAoB,MAA3B,MAAOA,EAGXC,cAAgB,CAEhBC,sBAAsBC,GACpB,MAAMC,GAAUD,EAAME,oBAAsB,IAAIC,OAAO,SACrDC,EACAC,GAEAA,SAAKC,MAAMC,QAAQ,SAAUC,GAC3BJ,EAAII,GAAQH,CACd,GACOD,CACT,EACE,IAEIK,EAAS,CACbpD,KAAM2C,EAAM3C,KACZqD,aAAcC,EAAoB,iBAClCC,WAAYD,EAAoB,SAChCE,KACEF,EAAoB,aACpBA,EAAoB,gBACpBA,EAAoB,wBACpBA,EAAoB,iBACpBA,EAAoB,gCACpBA,EAAoB,+BACtBG,OAAQH,EAAoB,+BAC5BI,WAAYJ,EAAoB,+BAA+B,GAC/DK,UAAWL,EAAoB,+BAC/BM,aAAcN,EAAoB,WAAW,GAC7CO,YAAaP,EAAoB,WACjCQ,IAAKR,EAAoB,gBAG3B,MAAO,CACLtD,KAAMoD,EAAOpD,KACb+D,SAaF,SAASC,EAAgBC,GAIvB,OAHcA,EAAUZ,aACpB,GAAGY,EAAUZ,gBAAgBY,EAAUV,cACvCZ,EAAME,mBAAmB,GAAGqB,UAElC,CAlBYF,CAAgBZ,GAC1Be,SAAU,KACVX,KAAMJ,EAAOI,KACbY,MAAOhB,EAAOM,WACdI,IAAKV,EAAOU,IACZL,OAAQL,EAAOK,OACfY,SAAU1B,EAAM2B,SAASC,SAASC,MAClCC,UAAW9B,EAAM2B,SAASC,SAASG,MACnCC,WAAOC,EACPC,gBAAYD,EACZE,eAAWF,GAUb,SAAStB,EAAoByB,EAAKC,GAChC,OAAMD,KAAOnC,EAGNoC,EAAQpC,EAAOmC,GAAKb,WAAatB,EAAOmC,GAAKE,UAF3C,EAGX,CACF,CAACxE,SAAAC,KAAA,UAAAwE,EAAA,mFAhEU1C,EAAoB5B,KAAA,GAAAC,OAAAC,4BAAAqE,aAAA1E,SAAAC,KAAA,WAAAwE,EAAA,sFAApB1C,EAAoB4C,WAFnB,gBAED5C,CAAoB,gGAApBA,EAAoBD,WAAA,OAHhC4C,mBAAW,CACVC,WAAY,2DCQP,IAAMC,EAAoB,MAA3B,MAAOA,EAIX5C,YACU6C,EACAC,EACAC,EACAC,GAHA/E,KAAA4E,SACA5E,KAAA6E,gBACA7E,KAAA8E,UACA9E,KAAA+E,OANM/E,KAAAgF,wBAA0B,IAAIC,IAA+B,EAQ7E,CAEMC,6BAA0B,IAAAC,EAAAnF,KAAA,SAAAoF,KAAA,YAC9B,IACE,MAAMC,QAAI,EAASC,KAAeH,EAAKJ,KAAKQ,cAEtCC,GADYH,IAASA,EAAKI,qBAAc,EAASH,KAAeH,EAAKL,QAAQY,kBAAoB,IACrEC,IAAIC,KAClCC,YAAa,GAAGD,EAAQtG,KAAOsG,EAAQtG,KAAO,MAAQ,MAAMsG,EAAQvC,YAAYuC,EAAQnC,YAAYmC,EAAQ9C,SAAS8C,EAAQlC,QAC7HoC,OAAQ,CAAEhC,IAAK8B,EAAQjC,SAAUK,IAAK4B,EAAQ7B,WAC9C6B,UACAG,gBAAgB,KAEpBZ,SAAKH,wBAAwBgB,KAAKR,GAC3BA,CACT,OAASS,GACPC,eAAQC,MAAMF,GACP,EACT,CAAC,EAf6B,EAgBhC,CAEAG,OACEC,EACAC,EACAC,GAEA,MAAMC,EAAsBF,GAAYG,QAAQC,cAC1CC,EAAcH,EAAoBI,QAAU,EAE5CC,EAAgB7G,KAAK8G,iBAAiBH,EAAaH,EAAqBD,GAE9E,SAAOQ,KAAS,IACdzB,KAAetF,KAAKgH,sBAAsBX,IAAgBY,MAAMhB,IAASC,QAAQC,MAAMF,GAAa,MAAK,EACzGX,KAAeuB,KACdK,QACDvB,KAAI,EAAEwB,EAAWC,KAeR,IAdoCD,EACxCE,OAAOC,IAASX,GAAeW,EAAKzB,YAAYa,cAAca,SAASf,OAGxEY,EAAYzB,IAAI9B,KAEZ2D,GAAI3D,EAAS4D,SACb5B,YAAahC,EAASgC,YACtBC,OAAQ,CAAEhC,IAAK,EAAGE,IAAK,GACvB4B,aAAS1B,EACT6B,gBAAgB,OAO5B,CAGAiB,sBAAsBX,GAEpB,MAAMhB,EAAOrF,KAAK+E,KAAK2C,iBAEvB,OAAKrC,EACAA,EAAKI,eACLY,EAEErG,KAAK8E,QAAQ6C,4BAA4BtB,GAAea,QAC7DvB,KAAKwB,GAA8BA,EAAUxB,IAAIC,KAE7CC,YAAa,GAAGD,EAAQtG,KAAOsG,EAAQtG,KAAO,MAAQ,MAAMsG,EAAQvC,YAAYuC,EAAQnC,YAAYmC,EAAQ9C,SAAS8C,EAAQlC,QAC7HoC,OAAQ,CAAEhC,IAAK8B,EAAQjC,SAAUK,IAAK4B,EAAQ7B,WAC9C6B,UACAG,gBAAgB,QAEjB,EAVwB6B,MAAG,IADG5H,KAAKgF,2BADpB4C,MAAG,GAczB,CAEAC,eACEjC,EACAkC,GAEA,OAAO,IAAIC,QAAQ,CAACC,EAASC,KACtBrC,GACHqC,EAAO,qBAGTH,EAASI,QAAQ,CAAEtC,QADI,GAAGA,EAAQvC,aAAauC,EAAQ9C,SAAS8C,EAAQlC,UAAUkC,EAAQxC,OAC5C,CAAC+E,EAASC,KAClDA,IAAWC,OAAOC,KAAKC,eAAeC,IACxCP,EAAO,gCAGT,MAAMQ,EADoCN,EAAQ,GACxBvE,SAASC,SAAS6E,SAC5CV,EAAQ,IACHpC,EACHjC,SAAU8E,EAAY3E,IACtBC,UAAW0E,EAAYzE,KACxB,EACF,EAEL,CAEA2E,sBACEC,EACAd,GAEA,OAAO,IAAIC,QAAQ,CAACC,EAASC,KACtBpE,UACHoE,EAAO,yBAETH,EAASI,QAAQ,CAAErE,SAAU+E,EAAMC,QAAU,CAACV,EAASC,KACjDA,IAAWC,OAAOC,KAAKC,eAAeC,IACxCP,EAAO,iCAET,MAAMhG,EAAoCkG,EAAQ,GAC5CvC,EAAU5F,KAAK6E,cAAc7C,sBAAsBC,GACnDwG,EAAcxG,EAAM2B,SAASC,SAAS6E,SAC5CV,EAAQ,IACHpC,EACHjC,SAAU8E,EAAY3E,IACtBC,UAAW0E,EAAYzE,KACxB,EACF,EAEL,CAEA8C,iBACEgC,EACAC,EACAxC,GAEA,IAAKuC,EACH,SAAOlB,MAAG,IAEZ,MAAMoB,EAAU,IAAIC,IACpB1C,SAAoB2C,oBAAoB,CACtCC,MAAOJ,EACPK,sBAAuB,CAAEC,QAAS,OAElC,CAACjC,EAAagB,KAEVA,IAAWC,OAAOC,KAAKgB,OAAOC,oBAAoBf,IAClDJ,IAAWC,OAAOC,KAAKgB,OAAOC,oBAAoBC,aAElDR,EAAQ7C,MACN,qEAGF6C,EAAQhD,KAAKoB,GAAe,IAE9B4B,EAAQS,UAAQ,GAGbT,EAAQU,cACjB,CAEAC,gBACEnC,EACAoC,GAEA,OAAO,IAAI7B,QAAQ,CAACC,EAASC,KAC3B2B,EAAcC,WAAW,CAAEC,QAAStC,GAAM,CAAC9E,EAAQqH,KAC7CA,IAAY1B,OAAOC,KAAKgB,OAAOC,oBAAoBf,IACrDP,EACE,qEAGJ,MAAMrC,EAAU5F,KAAK6E,cAAc7C,sBAAsBU,GACzDsF,EAAQpC,EAAO,EAChB,EAEL,CAEAoE,2BACE,OAAO,IAAIC,IAAuCC,IAC5CC,OAAOC,WAAaD,OAAOC,UAAUC,YACvCF,OAAOC,UAAUC,YAAYC,mBAC1BC,IACC,MAAM1B,EAAoC,CACxC/E,IAAKyG,EAASzE,OAAOnC,SACrBK,IAAKuG,EAASzE,OAAO/B,WAEvB/D,KAAK4E,OAAO4F,IAAI,KACdN,EAASlE,KAAK6C,GACdqB,EAAST,UAAQ,EAClB,EAEFtD,GAAU+D,EAAS/D,MAAMA,IAG5B+D,EAAS/D,MAAM,sBAAqB,EAG1C,CAACpG,SAAAC,KAAA,UAAAwE,EAAA,mFAxMUG,EAAoBzE,KAAA,EAAAuK,MAAArK,UAAA,CAAAqK,MAAAC,GAAA,CAAAD,MAAAE,MAAA,CAAAF,MAAAG,MAAAzK,OAAAC,4BAAAqE,aAAA1E,SAAAC,KAAA,WAAAwE,EAAA,sFAApBG,EAAoBD,WAFnB,gBAEDC,CAAoB,gGAApBA,EAAoB9C,WAAA,OAHhC4C,mBAAW,CACVC,WAAY,sOCQP,IAAMmG,EAAqB,MAA5B,MAAOA,EAAqB9K,SACzBC,KAAA8K,iBAA8C,CACnDhH,IAAK,WACLE,KAAK,YAiBPjC,YACUgJ,EACAC,GAER,IAAIC,EAHIjL,KAAA+K,UACA/K,KAAAgL,WALVhL,KAAAkL,WAAwC,GACxClL,KAAAmL,UAAoB,EAOlB,MAAMC,EAAcpL,KAAK+K,QAAQrD,iBAC3B2D,EAAyBD,GAAaC,uBAE1CJ,EADEI,GAAwBC,iBAAmBD,GAAwBE,iBAClD,CAAEzH,IAAKuH,EAAuBC,gBAAiBtH,IAAKqH,EAAuBE,kBAE3EC,IAAYC,eAG5BL,GAAa3F,eAWhBzF,KAAK0L,eAAiBT,EAVtBb,UAAUC,YAAYC,mBACpBqB,IACE3L,KAAK0L,eAAiB,CACpB5H,IAAK6H,EAAM7F,OAAOnC,SAClBK,IAAK2H,EAAM7F,OAAO/B,YAGtB,KAAQ/D,KAAK0L,eAAiBT,GAKpC,CAGAW,8BACE,OAAO5L,KAAK6L,gCACd,CAGAC,qBACE,OAAO9L,KAAK+K,QAAQrD,iBAAiBjC,eAAiB,EAAI,CAC5D,CAGAsG,oBAAoBJ,GAelB,MAVqB,CACnBK,kBAL4BC,IAAgBC,OAM5CC,WAAYR,EAAMQ,WAClBC,cAAeT,EAAMU,eACrBA,eAAgBV,EAAMS,cACtBE,iBAAkBC,IAAkBC,cAAc,CAAE3M,KAAM8L,EAAMQ,WAAYM,aARzDd,EAAMW,kBAAoBX,EAAMe,oBASnDA,kBAAmB,KACnBC,YAAY,EAIhB,CAEAC,MAAMC,GASJ,GARA7M,KAAK8M,SAAW,KAChB9M,KAAKkL,WAAa,GAClBlL,KAAKmL,UAAW,EAChBnL,KAAKqL,uBAAyB,KAC9BrL,KAAK6L,iCAAmC,KACxC7L,KAAK+M,WAAa,KAClB/M,KAAKgN,oBAAsB,KAEvBH,EAAa,CAEf,MAAMI,EAA0BC,KAASC,MAAMC,KAAK,CAAEC,MAAO,IACvDC,EAAoBL,EAAcM,SAAS,cAC3CC,EAA0BP,EAAcM,SAAS,SAEvDV,EAAYD,MAAM,CAChB/M,KAAMyN,EACNP,WAAYS,EACZC,YAAaD,GAEjB,CACF,CAEME,SAASC,GAAW,IAAAxI,EAAAnF,KAAA,SAAAoF,KAAA,YACxB,MAAMwI,QAAgB,EAAStI,KAAeH,EAAK6F,SAAS6C,2BAC5D,OAAOF,EAAKhI,IAAImI,IACd,MAAMC,EAAO,IAAKD,GACZE,EAAWD,EAAK5B,WAChBG,EAAmByB,EAAKzB,iBACxBI,EAAoBqB,EAAKrB,kBACzBuB,EAAUF,EAAKE,SAAW,EAC1BC,EAAaH,EAAKG,YAAc,EAEhCC,EAAmB,GAErBJ,EAAKK,oBACPD,EAAiBE,KAAKT,EAAiBU,QAAQC,IAAoBC,YAAYC,mBAE7EV,EAAKW,mBACPP,EAAiBE,KAAKT,EAAiBU,QAAQC,IAAoBI,WAAWF,mBAE5EV,EAAKa,cACPT,EAAiBE,KAAKT,EAAiBU,QAAQC,IAAoBM,MAAMJ,mBAG3E,MAAMK,EAAsBxC,EAC1ByC,OAAOxC,IAAkByC,YAAYhB,EAAU1B,EAAkB,QAAQ2C,MAAM,KAAK,GAAK,IAAM,KAC3FC,EAAuBxC,EAC3BqC,OAAOxC,IAAkByC,YAAYhB,EAAUtB,EAAmB,QAAQuC,MAAM,KAAK,GAAK,IAAM,KAC5FE,GAAoBpB,EAAK5B,WAC7B4C,OAAOxC,IAAkByC,YAAYhB,EAAUtB,EAAmB,QAAQuC,MAAM,KAAK,GAAK,IAAM,KAElGlB,SAAKhB,WAAa+B,EAClBf,EAAKqB,YAAcF,EACnBnB,EAAKC,SAAWmB,GAChBpB,EAAKI,iBAAmBA,EACxBJ,EAAKE,QAAUA,EACfF,EAAKG,WAAaA,EAEXH,GACN,EArCqB,EAsC1B,CAAChO,SAAAC,KAAA,UAAAqP,EAAA,mFA1IUxE,EAAqB3K,KAAA,EAAAuK,MAAAC,KAAA,CAAAD,MAAAE,MAAAxK,OAAAC,4BAAAqE,aAAA1E,SAAAC,KAAA,WAAAqP,EAAA,sFAArBxE,EAAqBnG,WAFpB,gBAEDmG,CAAqB,gGAArBA,EAAqBhJ,WAAA,OAHjC4C,mBAAW,CACVC,WAAY,uICPP,IAAM4K,EAAe,MAAtB,MAAOA,UAAuBC,KAAUxP,SAAAC,KAAA,UAAAwP,EAAA,mFAAjCF,EAAcpP,KAAA,KAAAC,OAAAC,4BAAAqP,YAAA1P,SAAAC,KAAA,UAAAwP,EAAA,0EAAdF,EAAcI,SAAA,gBAAAC,UAFd,CAAC,CAAEC,QAASL,KAAYM,YAAaP,IAAiBQ,iBAAA,EAAAC,SAAA3P,EAAA4P,SAD/D,uEAAsEC,UAAA,EAAAC,aAAA,EAAAC,KAAA,YAAA1N,KAAAiI,KAAAgF,SAAA,qBAAAU,OAAA,qFAG7Dd,CAAe,gGAAfA,EAAczN,WAAA,OAN1B4N,kBAAU,CACTC,SAAU,gBACVM,SACE,uEACFL,UAAW,CAAC,CAAEC,QAASL,KAAYM,YAAWP,6GCCzC,IAAMe,EAAqB,MAA5B,MAAOA,EACXtO,YACUuO,EAC2BhO,GAD3BtC,KAAAsQ,cAC2BtQ,KAAAsC,MACjC,CAEJiO,QACEvQ,KAAKsQ,YAAYE,SACnB,CAEAC,QACEtG,OAAOtG,SAAS6M,QAClB,CAAC3Q,SAAAC,KAAA,UAAAC,EAAA,mFAZUoQ,EAAqBnQ,KAAA,EAAAuK,MAAAC,MAAA,CAAAD,MAGtBkG,OAAkBxQ,OAAAC,4BAAAqP,YAAA1P,SAAAC,KAAA,UAAAC,EAAA,0EAHjBoQ,EAAqBX,SAAA,oBAAAK,SAAA3P,EAAA4P,SCRlC,igBAcAY,OAAA,20BAAAV,aAAA,EAAAC,KAAA,YAAA1N,KAAAkI,KAAA+E,SAAA,SAAAU,OAAA,iCAAAD,KAAA,YAAA1N,KAAAmI,KAAA8E,SAAA,8GAAAmB,SAAA,gBAAAV,KAAA,YAAA1N,KAAAqO,KAAApB,SAAA,wBAAAU,OAAA,kBDNaC,CAAqB,gGAArBA,EAAqBxO,WAAA,OALjC4N,4BACW,oBAAmBO,SAAA,igBAAAY,OAAA,84BAO1BG,eAAOJ,yKEIL,IAAMK,EAAe,MAAtB,MAAOA,EALbjP,cAOmB/B,KAAAiR,WAAUC,UAAOC,MACjBnR,KAAAoR,SAAQF,UAAOG,KACfrR,KAAAsR,mBAAkBJ,UAAOK,KAE1BvR,KAAAwR,iBAA0BC,MAAOC,cACjC1R,KAAA2R,SAAWnS,IAAYmS,SACvB3R,KAAA4R,YAAcpS,IAAYoS,YAC1B5R,KAAA6R,QAAkB7R,KAAKsR,gBAAgBQ,aACvC9R,KAAA+R,cAAgB/R,KAAKsR,gBAAgBS,cAErC/R,KAAAgS,WAAiChS,KAAKiR,QAAQgB,OAAO/K,QACnEG,KAAQuB,GAAUA,aAAiBsJ,OAAa,EAChDvM,KAAKiD,GAAyBA,EAAMuJ,MAGtBnS,KAAAoS,OACZpS,KAAKoR,MAAM7L,aAAa2B,QAC1BvB,KAAIN,KAAWgN,aAAchN,EAAMA,WAGrBrF,KAAAsS,aAAetS,KAAKiR,QAAQgB,OACzC/K,QACCG,KAAQuB,GAAUA,aAAiBsJ,OAAa,EAChDK,QAAoB,EACpB5M,KAAKiD,IAA0B5I,KAAKwS,aAAa5J,EAAMuJ,OAAI,EAC3DM,MAAWzS,KAAKwS,aAAaxS,KAAKiR,QAAQkB,OAGtCK,aAAaL,GAEnB,MADkC,CAAC,mBACZ5K,SAAS4K,EAClC,CAACpS,SAAAC,KAAA,UAAA0S,EAAA,mFAjCU1B,EAAe9Q,KAAA,GAAAC,OAAAC,4BAAAqP,YAAA1P,SAAAC,KAAA,UAAA0S,EAAA,0EAAf1B,EAAetB,SAAA,aAAAK,SAAA3P,EAAA4P,SCf5B,upCA6BAY,OAAA,+UAAAV,aAAA,EAAAC,KAAA,YAAA1N,KAAAiI,KAAAgF,SAAA,mCAAAS,KAAA,YAAA1N,KAAAkI,KAAA+E,SAAA,SAAAU,OAAA,iCAAAD,KAAA,YAAA1N,KAAAmI,KAAA8E,SAAA,eAAAU,OAAA,0JAAAD,KAAA,OAAA1N,KAAAkI,KAAArL,KAAA,mBDda0R,CAAe,gGAAfA,EAAenP,WAAA,OAL3B4N,4BACW,aAAYO,SAAA,upCAAAY,OAAA,sgBEIjB,IAAM+B,EAAe,MAAtB,MAAOA,EAsBX5Q,YACU6Q,EACAC,EACAC,EACA/H,GAHA/K,KAAA4S,SACA5S,KAAA6S,QACA7S,KAAA8S,iBACA9S,KAAA+K,UAzBV/K,KAAA+S,WAA+B,IAAIC,IACnChT,KAAAiT,aAAuB,EAIfjT,KAAAkT,gBAA4B,CAAC,gBAAiB,SAAU,SAAU,UAAW,IAAK,mBAC1FlT,KAAAmT,WAAa,CACX,0BAA2B,CAAEC,KAAM,CAAC,UAAWC,KAAM,QACrD,kBAAmB,CAAED,KAAM,CAAC,UAAWC,KAAM,QAC7C,oCAAqC,CAAED,KAAM,CAAC,sBAAuBC,KAAM,QAC3E,yBAA0B,CAAED,KAAM,CAAC,iBAAkBC,KAAM,QAC3D,eAAgB,CAAED,KAAM,CAAC,iBAAkBC,KAAM,QACjDC,SAAY,CAAEF,KAAM,CAAC,UAAWC,KAAM,QACtC,iBAAkB,CAAED,KAAM,CAAC,mBAAoBC,KAAM,QACrDE,UAAW,CAAEF,KAAM,QAEnB,eAAgB,CAAED,KAAM,CAAC,UAAWC,KAAM,UAC1C,eAAgB,CAAED,KAAM,CAAC,iBAAkBC,KAAM,UACjD,YAAa,CAAED,KAAM,CAAC,UAAWC,KAAM,WASvCrT,KAAK4S,OAAOX,OACT/K,QACCG,KAAQuB,GAAUA,aAAiBsJ,OAAa,EAChDK,QAAoB,EACpBiB,KAAK5K,IACH5I,KAAKyT,KAAOzT,KAAK0T,aAAa9K,EAAMuJ,KACpCnS,KAAKiT,YAAcjT,KAAK2T,eAAe/K,EAAMuJ,IAAG,IACjD,EACDyB,KAAU5T,KAAK+S,aAEhBc,UAAU,KACT7T,KAAK8T,YAAc9T,KAAK6S,MAAMkB,SAASD,aAE7C,CAEAJ,aAAavB,GACX,UAAW9N,KAAOrE,KAAKmT,WAAY,CACjC,GAAIhB,EAAI5K,SAASlD,IAAgB,iBAARA,EAAwB,OAAOrE,KAAKmT,WAAW9O,GACxE,GAAI8N,EAAI5K,SAASlD,GACf,OAAArE,KAAKmT,WAAW9O,GAAK+O,KAAOpT,KAAKgU,aAAehU,KAAKmT,WAAW9O,GAAK+O,KAC9DpT,KAAKmT,WAAW9O,EAE3B,CACA4P,WAAcC,UAAUlU,KAAKgU,aACzB,QAAQG,KAAKhC,KAAQA,EAAM,UAC/BnS,KAAKgU,YAAc7B,EACZ,CAAEiB,KAAM,CAAC,SAAUC,KAAM,OAClC,CAEOM,eAAexB,GAEpB,MAAMiC,EAAkBjC,EAAIkC,QAAQ,KAC9BC,GAA+B,IAApBF,EAAyBjC,EAAMA,EAAIoC,MAAM,EAAGH,GAE7D,OAAApU,KAAKiT,YAAcjT,KAAKkT,gBAAgB3L,SAAS+M,GAE1CtU,KAAKiT,WACd,CAEAuB,SACExU,KAAK8S,eAAelG,QACf5M,KAAK+K,QAAQ0J,0BAChBC,eAAeC,WAAWnV,IAAYoV,KAAKC,gBAC3C3O,QAAQ4O,IAAI,qCAEhB,CAEAC,cACE/U,KAAK+S,WAAW/M,MAAK,GACrBhG,KAAK+S,WAAWtJ,UAClB,CAAC1J,SAAAC,KAAA,UAAAgV,EAAA,mFA9EUrC,EAAezS,KAAA,EAAAuK,MAAAC,MAAA,CAAAD,MAAAC,MAAA,CAAAD,MAAAE,KAAA,CAAAF,MAAAG,MAAAzK,OAAAC,4BAAAqP,YAAA1P,SAAAC,KAAA,UAAAgV,EAAA,0EAAfrC,EAAejD,SAAA,aAAAK,SAAA3P,EAAA4P,SCf5B,wpBAgBAY,OAAA,6GAAAV,aAAA,EAAAC,KAAA,YAAA1N,KAAAqO,KAAApB,SAAA,aAAAU,OAAA,sKAAAD,KAAA,YAAA1N,KAAAqO,KAAApB,SAAA,cAAAU,OAAA,eAAAD,KAAA,YAAA1N,KAAAqO,KAAApB,SAAA,aAAAU,OAAA,oCAAAD,KAAA,YAAA1N,KAAAqO,KAAApB,SAAA,YAAAU,OAAA,mBAAAD,KAAA,YAAA1N,KAAAqO,KAAApB,SAAA,cAAAU,OAAA,mBAAAD,KAAA,YAAA1N,KAAAqO,KAAApB,SAAA,oBAAAS,KAAA,YAAA1N,KAAAqO,KAAApB,SAAA,kCAAAS,KAAA,YAAA1N,KAAAqO,KAAApB,SAAA,mCAAAS,KAAA,YAAA1N,KAAAwS,KAAAvF,SAAA,SAAAU,OAAA,iCAAAD,KAAA,YAAA1N,KAAAiI,KAAAgF,SAAA,eAAAU,OAAA,mKDDauC,CAAe,gGAAfA,EAAe9Q,WAAA,OAL3B4N,4BACW,aAAYO,SAAA,wpBAAAY,OAAA,yeEUjB,IAAMsE,GAAY,MAAnB,MAAOA,EA4CXnT,YACmBoT,EACAC,EACAC,EACAC,GAHAtV,KAAAmV,cACAnV,KAAAoV,uBACApV,KAAAqV,mBACArV,KAAAsV,sBA9CnBtV,KAAAuV,YAAc,IAAIC,KAAU,CAC1BC,YAAa,IAAIC,KAAmC,GAAI,CAACC,MACzDlS,SAAU,IAAIiS,KAAoB,MAGnB1V,KAAA+S,WAAa,IAAIC,IAClBhT,KAAA4V,WAAkC5V,KAAKmV,YAAYU,UAC5D7V,KAAA8V,WAAY,EAEH9V,KAAA+V,QAAkC/V,KAAKmV,YAAYa,gBAM1DhW,KAAAiW,YAAsB,EAS/BjW,KAAAkW,gBAAmC,GACnClW,KAAAmW,gBAAmC,GACnCnW,KAAAoW,wBAA2C,GAKlCpW,KAAAqW,OAGL,CACA9L,SAAUM,IAAsBC,iBAChCiL,QAAS,CAAEO,WAAW,IAGhBtW,KAAAuW,OAAS,IAAIC,eACbxW,KAAAyW,cAAgB,IAAID,cAO1B,CAEJE,WACE1W,KAAK2W,WAAa3W,KAAKqV,iBAAiBuB,QACxC5W,KAAK6W,eAAiB7W,KAAK2W,WAAWG,SAAS9W,KAAK+W,cAAcC,QAG9DhX,KAAK+W,aACP/W,KAAK2W,WAAWM,IAAIjX,KAAK+W,cACvBG,aAAahQ,QACXuL,KAAUzS,KAAK2W,WAAWM,IAAIjX,KAAK+W,cAAcpL,QAAK,EACtD4G,KAAqB,CAAC4E,EAAGC,IAAMC,KAAKC,UAAUH,KAAOE,KAAKC,UAAUF,KAAE,EACtExD,KAAU5T,KAAK+S,aACfc,UAAWlI,IACPA,GAAS3L,KAAKuV,YAAY0B,IAAI,eAAeM,WAAW5L,GAC5D3L,KAAKuV,YAAY0B,IAAI,YAAYM,WAAW5L,GAAOlI,UACnDzD,KAAK6W,eAAiB7W,KAAK2W,WAAWG,SAAS9W,KAAK+W,aAAaC,UAKvEhX,KAAK4V,WACF1O,QACCsM,KAAK+C,GAAYvW,KAAK8V,UAAYS,IAAO,EACzCiB,KAAWjB,IAAYA,GAAQ,IAEhC1C,UAAW0C,IACVvW,KAAKuW,OAAOkB,KAAKlB,IAAM,EAMvBmB,KAAS,IACNxQ,QACCsQ,KAAU,KAAOrN,OAAO9B,QAAQC,MAAMgB,QAAQ,IAAI,EAClDqO,KAAS,KAEP3X,KAAK4X,gBAAkB,IAAIzN,OAAO9B,OAAOC,KAAKuP,SAC9C7X,KAAKuG,oBACH,IAAI4D,OAAO9B,OAAOC,KAAKgB,OAAOwO,oBAC5B9X,KAAK+X,kBAAkBC,gBACzBhY,KAAK4J,cACH,IAAIO,OAAO9B,OAAOC,KAAKgB,OAAO2O,cAC5BjY,KAAK+X,iBAAiBC,gBAG5BhY,KAAKkY,cAAY,IAGpBrE,WAAS,GAIhB,MAAMsE,EAAkBnY,KAAK2W,WAAWM,IAAI,kBAC5CmB,OAAc,CACZpY,KAAKuV,YAAY0B,IAAI,gBAAgBC,aAAahQ,QAAKuL,KAAU,KAAE,EAAG4F,KAAa,MACnFF,EACIA,EAAgBjB,aAAahQ,QAAKuL,KAAU0F,EAAgBxM,SAAM,EAClE/D,MAAG,MACNV,QACD0M,KAAU5T,KAAK+S,aACfc,UAAU,EAAEyE,EAAYC,MACxBvY,KAAKwY,oBAAoBF,EAAU,GAIrCtY,KAAKuV,YAAY0B,IAAI,YAAYC,aAAahQ,QAC5CmR,KAAa,MAAG,EAChBzE,KAAU5T,KAAK+S,aACfc,UAAWlI,IACX,MAAM/F,EAAU5F,KAAKuV,YAAY0B,IAAI,eAAetL,MAEhD3L,KAAK+W,aAAenR,GAA8B,iBAAZA,GACxC5F,KAAK2W,WACFM,IAAIjX,KAAK+W,aACTQ,WAAW,IAAK3R,EAASnC,SAAUkI,IAExC3L,KAAKyW,cAAcgB,KAAK,CAAEhU,SAAUkI,GAAO,EAE/C,CAGA8M,YAAYC,GAIV,GAHIA,EAAQrC,QACVrW,KAAKkY,eAEHQ,EAAQC,SAAU,CACpB,MAAMC,EAAgB5Y,KAAKuV,YAAY0B,IAAI,eAC3CjX,KAAK2Y,SAAWC,EAAcC,UAAYD,EAAcE,SAEpD9Y,KAAKqW,QAAQN,UACf/V,KAAKqW,OAAS,IACTrW,KAAKqW,OACRN,QAAS,CAAEO,WAAYtW,KAAK2Y,WAGlC,CACF,CAGAT,gBACOlY,KAAK8V,YAAc9V,KAAKqW,QAAQ9L,UAGrCvK,KAAK+Y,UAAUC,MAAMhZ,KAAKqW,OAAO9L,SACnC,CAGMiO,oBAAoBlS,GAAiC,IAAAnB,EAAAnF,KAAA,SAAAoF,KAAA,YACzD,GAA0B,iBAAfkB,EAA2B,OACtCnB,EAAKwR,WAAWM,IAAI9R,EAAK4R,cAAcQ,gBAAWrT,GAClD,MAAM+U,EAAU9T,EAAKwR,WAAWG,SAASzQ,eAAesF,OAAS,KAEjExG,EAAK+Q,sBAAe,EAAS5Q,KAC3BH,EAAKiQ,qBAAqBhP,OAAO6S,EAAS3S,EAAYnB,EAAKoB,qBAC3D,EAPuD,EAQ3D,CAGa2S,4BACXC,GAAoC,IAAAC,EAAApZ,KAAA,SAAAoF,KAAA,YAEpC,GAAKgU,EAAKtD,UACV,IACE,MAAMjS,EAAWsV,EAAOE,OAAO1N,MAC/ByN,EAAKrB,iBAAiBC,cAAcrM,MAAQ9H,EAASgC,YAErD,IAAID,EAAwB/B,EAAS+B,QACjC/B,EAASkC,eACXH,QAAgBwT,EAAKhE,qBAAqBzL,gBACxC9F,EAAS2D,GAAG8R,WACZF,EAAKxP,eAEGwP,EAAKG,WAAW1V,KAC1B+B,QAAgBwT,EAAKhE,qBAAqBvN,eACxChE,EAAS+B,QACTwT,EAAKxB,kBAGTwB,EAAKI,0BAA0B5T,EACjC,OAASK,GACPC,QAAQuT,MAAM,YAAMxT,GACpBmT,EAAK9D,oBAAoBnP,MAAMF,EAAK,KAAM,IAC5C,CAAC,EAvBmC,EAwBtC,CAGMyT,wBACJ9Q,GAAgC,IAAA+Q,EAAA3Z,KAAA,SAAAoF,KAAA,YAEhC,IACE,MAAMwU,EAAqBD,EAAKpE,YAAY0B,IAAI,eAC1CrR,QAAgB+T,EAAKvE,qBAAqBzM,sBAC9CC,EACA+Q,EAAK/B,iBAGPgC,EAAmBrC,WAAW3R,GAC9B+T,EAAKH,0BAA0B5T,EACjC,OAASK,GACPC,QAAQuT,MAAM,YAAMxT,GACpB0T,EAAKrE,oBAAoBnP,MAAMF,EAAK,KAAM,IAC5C,CAAC,EAd+B,EAelC,CAGO4T,kBAAkBR,GACvB,OAAKA,GAAQhW,SAGN,GAAGgW,EAAOhW,aAAagW,EAAOvW,SAASuW,EAAO3V,QAF5C,EAGX,CAGOoW,kBAAkBX,GACJ,UAAfA,EAAO9U,MAGX8U,EAAOY,iBACPZ,EAAOa,kBACT,CAGQR,0BAA0B5T,GAC3BA,IACL5F,KAAKqW,OAAO9L,SAAW,CAAEzG,IAAK8B,EAAQjC,SAAUK,IAAK4B,EAAQ7B,WACzD/D,KAAK+W,aACP/W,KAAK2W,WAAWM,IAAIjX,KAAK+W,cAAcQ,WAAW3R,GAEpD5F,KAAKyW,cAAcgB,KAAK7R,GACxB5F,KAAKkY,eACP,CAGAqB,WAAW1V,GACT,OACEA,EAASkC,mBACNlC,EAASiC,QAAUjC,EAASiC,OAAOhC,KAAOD,EAASiC,OAAO9B,IAEjE,CAEA+Q,cACE/U,KAAK+S,WAAW/M,MAAK,GACrBhG,KAAK+S,WAAWtJ,UAClB,CAAC1J,SAAAC,KAAA,UAAAia,EAAA,mFA9PU/E,EAAYhV,KAAA,EAAAuK,MAAAC,KAAA,CAAAD,MAAAE,KAAA,CAAAF,MAAAG,MAAA,CAAAH,MAAAqG,MAAA3Q,OAAAC,4BAAAqP,YAAA1P,SAAAC,KAAA,UAAAia,EAAA,0EAAZ/E,EAAYxF,SAAA,UAAAU,OAAA,CAAA2G,YAAA,cAAA4B,SAAA,WAAAuB,SAAA,WAAAjE,WAAA,aAAAI,OAAA,UAAA8D,QAAA,CAAA5D,OAAA,SAAAE,cAAA,iBAAA2D,YAAA,EAAAC,aAAA,mBAAAC,OAAA,EAAAC,UAAA,kBAAAC,aAAA,IAAAH,aAAA,YAAAC,OAAA,EAAAC,UAAA,QAAAC,aAAA,IAAAC,eAAA,EAAA1K,SAAA3P,EAAA4P,SCrBzB,ymEA0CeY,OAAA,oHAAAV,aAAA,EAAAC,KAAA,YAAA1N,KAAAmI,KAAA8E,SAAA,iNAAAS,KAAA,YAAA1N,KAAAmI,KAAA8E,SAAA,8CAAAS,KAAA,YAAA1N,KAAAmI,KAAA8E,SAAA,6FAAAS,KAAA,YAAA1N,KAAAmI,KAAA8E,SAAA,cAAAU,OAAA,cAAA+J,QAAA,aAAAtJ,SAAA,aAAAV,KAAA,YAAA1N,KAAAmI,KAAA8E,SAAA,oBAAAU,OAAA,yCAAA+J,QAAA,oBAAAhK,KAAA,YAAA1N,KAAAwS,KAAAvF,SAAA,YAAAU,OAAA,sBAAAD,KAAA,YAAA1N,KAAAwS,KAAAvF,SAAA,mBAAAU,OAAA,6CAAAD,KAAA,YAAA1N,KAAAwS,KAAAvF,SAAA,SAAAU,OAAA,iCAAAD,KAAA,YAAA1N,KAAAiY,KAAAhL,SAAA,mBAAAU,OAAA,uLAAA+J,QAAA,uDAAAtJ,SAAA,sBAAAV,KAAA,YAAA1N,KAAAkY,KAAAjL,SAAA,aAAAU,OAAA,0BAAA+J,QAAA,sBAAAtJ,SAAA,gBAAAV,KAAA,YAAA1N,KAAAiY,KAAAhL,SAAA,oDAAAU,OAAA,oHAAAS,SAAA,6BAAAV,KAAA,YAAA1N,KAAAmY,KAAAlL,SAAA,wBAAAU,OAAA,SAAAD,KAAA,YAAA1N,KAAAoY,KAAAnL,SAAA,0HAAAU,OAAA,mHAAAS,SAAA,eAAAV,KAAA,YAAA1N,KAAAqY,KAAApL,SAAA,aAAAU,OAAA,iEAAA+J,QAAA,qSAAAtJ,SAAA,gBAAAV,KAAA,YAAA1N,KAAAqY,KAAApL,SAAA,aAAAU,OAAA,oEAAA+J,QAAA,oVAAAtJ,SAAA,yBDrBFqE,CAAY,gGAAZA,GAAYrT,WAAA,OALxB4N,4BACW,UAASO,SAAA,ymEAAAY,OAAA,0MAkBVmG,YAAW,OAAnBgE,UACQpC,SAAQ,OAAhBoC,UACQb,SAAQ,OAAhBa,UACQ9E,WAAU,OAAlB8E,UAQ2BhD,iBAAgB,OAA3CiD,kBAAU,mBAOOjC,UAAS,OAA1BiC,kBAAU,SACF3E,OAAM,OAAd0E,UAQSxE,OAAM,OAAf0E,WACSxE,cAAa,OAAtBwE,oGEzDI,IAAMC,EAAiB,MAAxB,MAAOA,EAAiBnb,SAAAC,KAAA,UAAAC,EAAA,mFAAjBib,EAAiBhb,KAAA,GAAAC,OAAAC,4BAAAqP,YAAA1P,SAAAC,KAAA,UAAAC,EAAA,0EAAjBib,EAAiBxL,SAAA,gBAAAK,SAAA3P,EAAA4P,SCN9B,mTAMMY,OAAA,qJAAAV,aAAA,EAAAC,KAAA,YAAA1N,KAAAiI,KAAAgF,SAAA,mCAAAS,KAAA,YAAA1N,KAAAkI,KAAA+E,SAAA,eAAAU,OAAA,0JAAAD,KAAA,YAAA1N,KAAAmI,KAAA8E,SAAA,+CDAOwL,CAAiB,gGAAjBA,EAAiBrZ,WAAA,OAL7B4N,4BACW,gBAAeO,SAAA,mTAAAY,OAAA,wOEMpB,IAAMuK,EAAa,MAApB,MAAOA,EAGXC,cAAc3Y,GACZ,OAAKA,EAGEA,EAAK4Y,oBAAoBC,QAAQ,MAAO,KAFtC,EAGX,CAEAC,eAAeC,GACb,IAAKA,EAAU,MAAO,GAEtB,MAAMC,EAAQD,EAASvM,MAAM,KACvB5B,EAAQqO,SAASD,EAAM,GAAI,IAC3BE,EAAUD,SAASD,EAAM,GAAI,IAEnC,OAAIpO,EAAQ,EACH,GAAGA,QAAYsO,QAEf,GAAGA,OAEd,CAAC5b,SAAAC,KAAA,UAAAC,EAAA,mFAtBUkb,EAAajb,KAAA,GAAAC,OAAAC,4BAAAqP,YAAA1P,SAAAC,KAAA,UAAAC,EAAA,0EAAbkb,EAAazL,SAAA,WAAAU,OAAA,CAAArC,KAAA,QAAAgC,SAAA3P,EAAA4P,SCR1B,0gGA4EAY,OAAA,osCAAAV,aAAA,EAAAC,KAAA,YAAA1N,KAAAiI,KAAAgF,SAAA,YAAAU,OAAA,sBAAAD,KAAA,YAAA1N,KAAAiI,KAAAgF,SAAA,SAAAU,OAAA,iCAAAD,KAAA,YAAA1N,KAAAkI,KAAA+E,SAAA,WAAAU,OAAA,kDAAAS,SAAA,cAAAV,KAAA,OAAA1N,KAAAiI,KAAApL,KAAA,WAAA6Q,KAAA,OAAA1N,KAAAiI,KAAApL,KAAA,sBDpEa6b,CAAa,gGAAbA,EAAatZ,WAAA,OALzB4N,4BACW,WAAUO,SAAA,0gGAAAY,OAAA,wtCAKX7C,KAAI,OAAZgN,2MERH,MAAMa,EAAS,CACb,CAAEC,KAAM,KAAMvc,KAAM,UAAWwc,aAAa,GAC5C,CAAED,KAAM,KAAMvc,KAAM,SAAUwc,aAAa,GAC3C,CAAED,KAAM,KAAMvc,KAAM,iBAAkBwc,aAAa,GACnD,CAAED,KAAM,KAAMvc,KAAM,UAAWwc,aAAa,GAC5C,CAAED,KAAM,KAAMvc,KAAM,WAAYwc,aAAa,GAC7C,CAAED,KAAM,KAAMvc,KAAM,aAAcwc,aAAa,GAC/C,CAAED,KAAM,KAAMvc,KAAM,WAAYwc,aAAa,GAC7C,CAAED,KAAM,KAAMvc,KAAM,cAAewc,aAAa,GAChD,CAAED,KAAM,KAAMvc,KAAM,WAAYwc,aAAa,GAC7C,CAAED,KAAM,KAAMvc,KAAM,uBAAwBwc,aAAa,GACzD,CAAED,KAAM,KAAMvc,KAAM,iCAAkCwc,aAAa,GACnE,CAAED,KAAM,KAAMvc,KAAM,UAAWwc,aAAa,GAC5C,CAAED,KAAM,KAAMvc,KAAM,UAAWwc,aAAa,GAC5C,CAAED,KAAM,KAAMvc,KAAM,OAAQwc,aAAa,GACzC,CAAED,KAAM,KAAMvc,KAAM,SAAUwc,aAAa,GAC3C,CAAED,KAAM,KAAMvc,KAAM,QAASwc,aAAa,GAC1C,CAAED,KAAM,KAAMvc,KAAM,WAAYwc,aAAa,GAC7C,CAAED,KAAM,KAAMvc,KAAM,UAAWwc,aAAa,GAC5C,CAAED,KAAM,KAAMvc,KAAM,OAAQwc,aAAa,GACzC,CAAED,KAAM,KAAMvc,KAAM,SAAUwc,aAAa,GAC3C,CAAED,KAAM,KAAMvc,KAAM,WAAYwc,aAAa,GAC7C,CAAED,KAAM,KAAMvc,KAAM,YAAawc,aAAa,GAC9C,CAAED,KAAM,KAAMvc,KAAM,QAASwc,aAAa,GAC1C,CAAED,KAAM,KAAMvc,KAAM,mBAAoBwc,aAAa,GACrD,CAAED,KAAM,KAAMvc,KAAM,WAAYwc,aAAa,GAC7C,CAAED,KAAM,KAAMvc,KAAM,gBAAiBwc,aAAa,GAClD,CAAED,KAAM,KAAMvc,KAAM,WAAYwc,aAAa,GAC7C,CAAED,KAAM,KAAMvc,KAAM,YAAawc,aAAa,GAC9C,CAAED,KAAM,KAAMvc,KAAM,cAAewc,aAAa,GAChD,CAAED,KAAM,KAAMvc,KAAM,WAAYwc,aAAa,GAC7C,CAAED,KAAM,KAAMvc,KAAM,UAAWwc,aAAa,GAC5C,CAAED,KAAM,KAAMvc,KAAM,WAAYwc,aAAa,GAC7C,CAAED,KAAM,KAAMvc,KAAM,SAAUwc,aAAa,GAC3C,CAAED,KAAM,KAAMvc,KAAM,gBAAiBwc,aAAa,GAClD,CAAED,KAAM,KAAMvc,KAAM,aAAcwc,aAAa,GAC/C,CAAED,KAAM,KAAMvc,KAAM,aAAcwc,aAAa,GAC/C,CAAED,KAAM,KAAMvc,KAAM,WAAYwc,aAAa,GAC7C,CAAED,KAAM,KAAMvc,KAAM,iBAAkBwc,aAAa,GACnD,CAAED,KAAM,KAAMvc,KAAM,eAAgBwc,aAAa,GACjD,CAAED,KAAM,KAAMvc,KAAM,2BAA4Bwc,aAAa,GAC7D,CAAED,KAAM,KAAMvc,KAAM,OAAQwc,aAAa,GACzC,CAAED,KAAM,KAAMvc,KAAM,WAAYwc,aAAa,GAC7C,CAAED,KAAM,KAAMvc,KAAM,SAAUwc,aAAa,GAC3C,CAAED,KAAM,KAAMvc,KAAM,QAASwc,aAAa,GAC1C,CAAED,KAAM,KAAMvc,KAAM,eAAgBwc,aAAa,GACjD,CAAED,KAAM,KAAMvc,KAAM,cAAewc,aAAa,GAChD,CAAED,KAAM,KAAMvc,KAAM,eAAgBwc,aAAa,GACjD,CAAED,KAAM,KAAMvc,KAAM,iBAAkBwc,aAAa,GACnD,CAAED,KAAM,KAAMvc,KAAM,eAAgBwc,aAAa,GACjD,CAAED,KAAM,KAAMvc,KAAM,YAAawc,aAAa,GAC9C,CAAED,KAAM,KAAMvc,KAAM,QAASwc,aAAa,GAC1C,CAAED,KAAM,KAAMvc,KAAM,OAAQwc,aAAa,GACzC,CAAED,KAAM,KAAMvc,KAAM,UAAWwc,aAAa,GAC5C,CAAED,KAAM,KAAMvc,KAAM,iBAAkBwc,aAAa,GACnD,CAAED,KAAM,KAAMvc,KAAM,WAAYwc,aAAa,GAC7C,CAAED,KAAM,KAAMvc,KAAM,aAAcwc,aAAa,GAC/C,CAAED,KAAM,KAAMvc,KAAM,gBAAiBwc,aAAa,GAClD,CAAED,KAAM,KAAMvc,KAAM,YAAawc,aAAa,GAC9C,CAAED,KAAM,KAAMvc,KAAM,SAAUwc,aAAa,IAEhCC,EAASH,EAAOvU,OAAO2U,IAAMA,EAAEF,aAEjBF,EAAOvU,OAAO2U,GAAKA,EAAEF,4EChDzC,IAAMG,EAAa,MAApB,MAAOA,EA0CXla,YACmBma,EACAC,EACAC,EACAC,GAHArc,KAAAkc,oBACAlc,KAAAmc,cACAnc,KAAAoc,UACApc,KAAAqc,WA3CFrc,KAAA+S,WAAa,IAAIC,IAElBhT,KAAAsc,WAAa,mBACbtc,KAAAuc,SAAW,UACXvc,KAAAwc,QAAUtP,KAASC,MAAMsP,KACzBzc,KAAA0c,QAAUxP,KAASC,MAAMsP,KAAO,IAChCzc,KAAA2c,OAASZ,EACzB/b,KAAA4c,aAAc,EACd5c,KAAA6c,UAAW,EACH7c,KAAA8c,QAAU,IAAI9J,IACdhT,KAAA+c,WAAa,EACd/c,KAAAgd,SAAU,EAGVhd,KAAAid,KAAO,IAAIzH,KAAU,CAC1B0H,UAAW,IAAIxH,KAAY,GAAI,CAACyH,KAAWjD,SAAUiD,KAAWC,UAAU,MAC1EC,SAAU,IAAI3H,KAAY,GAAI,CAACyH,KAAWjD,SAAUiD,KAAWC,UAAU,MACzEnZ,MAAO,IAAIyR,KAAY,GAAI,CAACyH,KAAWjD,SAAUiD,KAAWG,UAAU,MACtEC,UAAW,IAAI7H,KAAY,GAAI,CAACyH,KAAWjD,SAAUiD,KAAWC,UAAU,OAC1EI,UAAW,IAAI9H,KAAY,GAAI,CAACyH,KAAWC,UAAU,OACrDK,aAAc,IAAI/H,KAAY,GAAI,CAACyH,KAAWjD,SAAUiD,KAAWC,UAAU,OAC7EM,cAAe,IAAIhI,KAAY,GAAI,CAACyH,KAAWjD,SAAUiD,KAAWC,UAAU,KAC9EO,YAAa,IAAIjI,KAAY,GAAI,CAACyH,KAAWjD,SAAUiD,KAAWC,UAAU,GAAID,KAAWS,QAAQ5d,KAAKuc,YACxGsB,OAAQ,IAAInI,KAAY,OAAQ,CAACyH,KAAWjD,WAC5C4D,MAAO,IAAIpI,KAAY,GAAI,CAACyH,KAAWjD,SAAUiD,KAAWS,QAAQ5d,KAAKsc,cACzEG,KAAM,IAAI/G,KAAY,GAAI,CAACyH,KAAWjD,SAAUiD,KAAWY,IAAI/d,KAAKwc,SAAUW,KAAWa,IAAIhe,KAAK0c,aAK7F1c,KAAAie,aAAc,EACdje,KAAAuW,QAAS,EACAvW,KAAAke,eAAiB,IAAIjZ,IAAsB,GAElDjF,KAAAme,cAA0B,GAC1Bne,KAAAoe,MAAgB,EAChBpe,KAAAqe,WAAqB,EACpBre,KAAAse,MAAQ,IAAI9H,eASpB,MAAMpL,EAAcpL,KAAKmc,YAAYzU,iBACrC1H,KAAKid,KAAK1F,WAAW,CACnB2F,UAAW9R,EAAYmT,UACvBlB,SAAUjS,EAAYoT,SACtBva,MAAOmH,EAAYqT,YACnBlB,UAAWnS,EAAYxF,SAASvC,SAChCma,UAAWpS,EAAYxF,SAASnC,SAChCga,aAAcrS,EAAYxF,SAAS9C,KACnC4a,cAAetS,EAAYxF,SAASlC,MACpCia,YAAavS,EAAYxF,SAASxC,MAEpCpD,KAAK0e,2BAA6B1e,KAAKqc,SAASsC,OAAOxU,OAAQ,qBAAuBvB,IACpF5I,KAAK4e,YAAYhW,EAAMiW,OAAM,EAEjC,CAEAnI,WAEE1W,KAAKid,KAAK/F,aAAahQ,QACrBsM,KAAI,KACFxT,KAAKse,MAAM7G,KAAKzX,KAAK6c,UAAY7c,KAAK4c,aAAe5c,KAAKid,KAAKqB,MAAK,IACrE,EACD1K,KAAU5T,KAAK+S,aACfc,WACJ,CAEAiL,kBACE9e,KAAKoc,QAAQ2C,WAAW,MACtB3G,OAAc,CACZpY,KAAKke,eAAexU,eACpB1J,KAAK8c,QAAQ5V,QAAKuL,MAAU,MAC3BvL,QACD8X,KAAU,EAAEvU,MAEV,GADAzK,KAAKuW,QAAS,GACT9L,EAAS,OAAOwU,IACrBjf,KAAKuW,QAAS,EACd,IACEvW,KAAKkf,KAAO,IAAIC,OAAO1U,EAAO,CAC5B2U,OAAQ,CACN5X,GAAI,cACJ6X,YAAa,sBACbC,MAAO,8CACP7c,KAAM,OACN8c,OAAQ,gBAEVC,IAAK,CACHhY,GAAI,WACJ6X,YAAa,MACbC,MAAO,8CACP7c,KAAM,SAGZ,OAASwD,GACPC,QAAQC,MAAMF,EAChB,CAEA,OAAAjG,KAAKkf,KAAKO,GAAG,uBAAwB,EAAG7C,cAAaC,eACnD7c,KAAK6c,SAAWA,EAChB7c,KAAK4c,YAAcA,EACnB5c,KAAKkc,kBAAkBwD,gBACvB1f,KAAKse,MAAM7G,KAAKzX,KAAK6c,UAAY7c,KAAK4c,aAAe5c,KAAKid,KAAKqB,MAAK,GAItEte,KAAKkf,KAAKO,GAAG,qBAAsB,EAAG7C,cAAaC,eACjD7c,KAAK6c,SAAWA,EAChB7c,KAAK4c,YAAcA,EACnB5c,KAAKkc,kBAAkBwD,gBACvB1f,KAAKse,MAAM7G,KAAKzX,KAAK6c,UAAY7c,KAAK4c,aAAe5c,KAAKid,KAAKqB,MAAK,IACrE,EAMM1W,MAAG+X,WAAW,IAAM3f,KAAKkf,KAAKU,eAAgB,GAAE,IACxD,EACDC,KAAW5Z,IACTC,QAAQC,MAAM,sBAAuBF,GAC9BgZ,OACR,EACDrL,KAAU5T,KAAK+S,aACfc,UAAU,CACV7N,KAAO8Z,IAIL5Z,QAAQ4O,IAAI,aAAY,EAE1B3O,MAAOF,GAAOC,QAAQC,MAAMF,IAC7B,GAGHjG,KAAKoc,QAAQ2D,QAAQrW,eAAemK,UAAUjL,IAC5C,MAAMR,EAASQ,EAAMoX,QAAQC,MAAM,uBAAuB,GACpDD,EAAUpX,EAAMoX,QAAQC,MAAM,2BAA2B,GAC/DjgB,KAAK4e,YAAY,IAAKhW,EAAOR,SAAQ4X,WAAS,EAElD,CAEApB,YAAY3Y,GACQ,KAAdA,EAAImC,QAAiBpI,KAAK+c,WAAa,GACzC/c,KAAK+c,aACL/c,KAAKkf,KAAO,KACZlf,KAAK8c,QAAQ9W,MAAK,IAGlBhG,KAAKgd,SAAU,EAEjBhd,KAAKuW,QAAS,CAChB,CA6Ba2J,WAAQ,IAAA/a,EAAAnF,KAAA,SAAAoF,KAAA,YACnB,OAAID,EAAK8X,KAAKjG,SAAY7R,EAAKyX,aAAgBzX,EAAK0X,SAE7C1X,EAAK+Z,KAAKgB,SADI/a,EAAK8X,KAAKtR,OADwC,IAE/B,EAHrB,EAIrB,CAGOuO,SAASiG,GACd,QAASngB,KAAKid,KAAKhG,IAAIkJ,IAAkBC,aAAajD,KAAWjD,SACnE,CAGOmG,SAASF,EAAyBha,OAAgBjC,GACvD,MAAM0S,EAAU5W,KAAKid,KAAKhG,IAAIkJ,GAC9B,QAAKvJ,GAAS0J,UACTna,IACIyQ,EAAQyJ,SAASla,GADLyQ,EAAQI,QAE/B,CAEAtG,SACE7M,SAAS6M,QACX,CAEAqE,cACE/U,KAAK0e,6BACL1e,KAAK+S,WAAW/M,MAAK,GACrBhG,KAAK+S,WAAWtJ,UAClB,CAAC1J,SAAAC,KAAA,UAAAwE,EAAA,mFAvNUyX,EAAa/b,KAAA,EAAAuK,MAAArK,qBAAA,CAAAqK,MAAAC,KAAA,CAAAD,MAAArK,UAAA,CAAAqK,MAAArK,cAAAD,OAAAC,4BAAAqP,YAAA1P,SAAAC,KAAA,UAAAwE,EAAA,0EAAbyX,EAAavM,SAAA,WAAAU,OAAA,CAAA+N,cAAA,gBAAAC,MAAA,QAAAC,UAAA,aAAAlE,QAAA,CAAAmE,MAAA,SAAAvO,SAAA3P,EAAA4P,SChB1B,2iLA8GAY,OAAA,8vCAAAV,aAAA,EAAAC,KAAA,YAAA1N,KAAAkI,KAAA+E,SAAA,iDAAAS,KAAA,YAAA1N,KAAAkI,KAAA+E,SAAA,iNAAAS,KAAA,YAAA1N,KAAAkI,KAAA+E,SAAA,oGAAAS,KAAA,YAAA1N,KAAAkI,KAAA+E,SAAA,8CAAAS,KAAA,YAAA1N,KAAAkI,KAAA+E,SAAA,6FAAAS,KAAA,YAAA1N,KAAAkI,KAAA+E,SAAA,yIAAAU,OAAA,eAAAD,KAAA,YAAA1N,KAAAkI,KAAA+E,SAAA,6EAAAU,OAAA,gBAAAD,KAAA,YAAA1N,KAAAkI,KAAA+E,SAAA,6EAAAU,OAAA,gBAAAD,KAAA,YAAA1N,KAAAkI,KAAA+E,SAAA,iHAAAU,OAAA,UAAAD,KAAA,YAAA1N,KAAAkI,KAAA+E,SAAA,iHAAAU,OAAA,UAAAD,KAAA,YAAA1N,KAAAkI,KAAA+E,SAAA,cAAAU,OAAA,cAAA+J,QAAA,aAAAtJ,SAAA,aAAAV,KAAA,YAAA1N,KAAAkI,KAAA+E,SAAA,oBAAAU,OAAA,yCAAA+J,QAAA,oBAAAhK,KAAA,YAAA1N,KAAAmI,KAAA8E,SAAA,YAAAU,OAAA,sBAAAD,KAAA,YAAA1N,KAAAmI,KAAA8E,SAAA,mBAAAU,OAAA,6CAAAD,KAAA,YAAA1N,KAAAmI,KAAA8E,SAAA,SAAAU,OAAA,iCAAAD,KAAA,YAAA1N,KAAAqO,KAAApB,SAAA,aAAAU,OAAA,0BAAA+J,QAAA,sBAAAtJ,SAAA,gBAAAV,KAAA,YAAA1N,KAAAwS,KAAAvF,SAAA,wBAAAU,OAAA,SAAAD,KAAA,YAAA1N,KAAAiY,KAAAhL,SAAA,WAAAU,OAAA,kDAAAS,SAAA,cAAAV,KAAA,YAAA1N,KAAAkY,KAAAjL,SAAA,aAAAU,OAAA,4SAAA+J,QAAA,mEAAAtJ,SAAA,yBD9FaoL,CAAa,gGAAbA,EAAapa,WAAA,OALzB4N,4BACW,WAAUO,SAAA,2iLAAAY,OAAA,g3CAyCXuN,cAAa,OAArBpD,UACQqD,MAAK,OAAbrD,UACQsD,UAAS,OAAjBtD,UACSuD,MAAK,OAAdrD,4DExDI,IAAKhP,EAAZ,SAAYA,GACRA,WAAAsU,QAAA,aACAtU,IAAAC,OAAA,YACAD,IAAC,aAAW,GAAX,YAHOA,CAIZ,CAJA,CAAYA,GAAe,kDCApB,IAAKsC,EAAZ,SAAYA,GACVA,WAAAC,WAAA,gBACAD,IAAAI,UAAA,eACAJ,IAAAM,KAAA,UAHUN,CAIZ,CAJA,CAAYA,GAAmB,8DCKxB,IAAMiS,EAAS,MAAhB,MAAOA,EAEXC,UAAU9U,EAAe+U,EAAcC,EAAsB,iBAC3D,IAAKhV,EACH,OAAOgV,EAET,IAAIC,EAAWjV,EAAM2P,QAAQ,MAAO,IACpC,MAAM2E,EACFW,EAASX,MADkB,KAAjBtU,EAAM/E,QAA8B,MAAb+E,EAAM,GACxB,4DACA,4DACnB,OAAIsU,IACFW,EAAwC,QAA7BX,EAAMY,OAAOC,SACpB,QAAUb,EAAMY,OAAOE,UAAe,MAAQd,EAAMY,OAAOG,QAC3D,IAAMf,EAAMY,OAAOC,SAAc,KAAOb,EAAMY,OAAOE,UAAe,MAAQd,EAAMY,OAAOG,SAE3FN,IAAOE,GAAY,IAAMF,GACtBE,CACT,CAAC7gB,SAAAC,KAAA,UAAAC,EAAA,mFAjBUugB,EAAStgB,KAAA,GAAAC,OAAAC,4BAAA6gB,OAAAlhB,SAAAC,KAAA,WAAAC,EAAA,gFAATugB,EAASlhB,KAAA,iBAATkhB,CAAS,gGAATA,EAAS3e,WAAA,OAHrBof,aAAK,CACJ3hB,KAAM,0ECGD,IAAM4hB,EAAoB,MAA3B,MAAOA,EACXnf,cAAgB,CAChB0e,UAAU1S,GACR,OAAOA,EAAKzB,kBAAoByB,EAAKrB,iBACvC,CAAC3M,SAAAC,KAAA,UAAAC,EAAA,mFAJUihB,EAAoBhhB,KAAA,GAAAC,OAAAC,4BAAA6gB,OAAAlhB,SAAAC,KAAA,WAAAC,EAAA,gFAApBihB,EAAoB5hB,KAAA,wBAApB4hB,CAAoB,gGAApBA,EAAoBrf,WAAA,OAHhCof,aAAK,CACJ3hB,KAAM,0MCcD,IAAM+R,EAAqB,MAA5B,MAAOA,EAOXtP,YACU+C,GAAA9E,KAAA8E,UAPF9E,KAAAmhB,aAAoC,KAG3BnhB,KAAAohB,cAAgB,IAAInc,IAA0C,GAC/DjF,KAAAuF,aAAevF,KAAKohB,cAAc1X,cAKlD,CAEM2X,OAAI,IAAAlc,EAAAnF,KAAA,SAAAoF,KAAA,YACR,IACE,eAAME,KAAeH,EAAKL,QAAQwc,kBAC3Bnc,EAAKuC,gBACd,OACE,OAAOvC,EAAKoc,mBACd,CAAC,EANO,EAOV,CAMAC,gBAAgBC,GACdC,aAAaC,QAAQniB,IAAYoV,KAAKgN,MAAOH,EAC/C,CAOAI,MAAMC,GACJ,OAAA9hB,KAAKwhB,gBAAgBM,EAAYF,OAC1B5hB,KAAK8E,QAAQ+c,MAAMC,GAAa5a,QACrCvB,KAAKoc,IACH,IAAKA,EAAW,OAAO,KACvB,MAAM1c,EAA4B,CAChCoF,MAAOsX,EAAQtX,SACZsX,EAAQC,aAEb,OAAOhiB,KAAKiiB,eAAe5c,EAAI,IAChC,EACD2Z,KAAW3Z,GACLA,EACKrF,KAAKkiB,kBAAkBJ,EAAYF,MAAOvc,EAAKI,gBAAgByB,QACpEvB,KAAI,IAAMN,KAAK,EAGVuC,MAAGvC,IAIlB,CAIA8c,aAActG,OAAMuG,SAAQC,iBAC1B,OAAOriB,KAAK8E,QAAQwd,kBAAkBF,EAAQvG,EAAMwG,GAAcnb,QAChEvB,KAAIoc,KAEAtX,MAAOsX,EAAQtX,SACZsX,EAAQC,eAKnB,CAMAO,YAAYC,EAAkBC,GAC5B,OAAOA,EACHziB,KAAK8E,QAAQ4d,oBAAoBF,EAAUA,GAC3CxiB,KAAK8E,QAAQyd,YAAYC,EAAUA,EACzC,CAMAG,2BAA2BlY,GAqBzBzK,KAAKiiB,eApB6B,CAChCxX,MAAOA,EACP8T,UAAW,GACXqE,cAAe,GACfpE,SAAU,GACVqE,SAAU,EACVC,kBAAmB,GACnBC,YAAa,GACbtE,YAAa,GACb7Y,aAAS1B,EACTiK,iBAAkB,GAClB6U,oBAAoB,EACpBvB,aAAc,GACdhc,gBAAgB,EAChBwd,aAAc,GACdC,SAAU,GACV7X,4BAAwBnH,EACxBif,8BAA+B,GAC/BC,wBAAyB,IAG7B,CAMMC,SAAM,IAAAjK,EAAApZ,KAAA,SAAAoF,KAAA,YACV,MAAMie,QAAM,EAAS/d,KAAe8T,EAAKtU,QAAQue,UAAUpc,MAAMhB,IAC/DC,QAAQC,MAAMF,GACP,OAETmT,SAAKmI,oBACE8B,CAAO,EANJ,EAOZ,CAsBAC,kBACE,OAAItjB,KAAK0H,kBAAoB1H,KAAK0H,iBAAiB+Z,aAC1CzhB,KAAK0H,iBAAiB+Z,aAExBC,aAAa6B,QAAQ/jB,IAAYoV,KAAKgN,MAC/C,CAQAla,iBACE,IAAK1H,KAAKmhB,aAAc,CACtB,MAAMqC,EAAa9O,eAAe6O,QAAQ/jB,IAAYoV,KAAKxJ,aACvDoY,IACFxjB,KAAKmhB,aAAe9J,KAAKoM,MAAMD,GAC/BxjB,KAAKohB,cAAcpb,KAAKhG,KAAKmhB,cAEjC,CACA,OAAOnhB,KAAKmhB,YACd,CAKAc,eACE7W,GAEA,OAAApL,KAAKmhB,aAAe/V,EACpBpL,KAAKohB,cAAcpb,KAAKoF,GACxBsJ,eAAeiN,QACbniB,IAAYoV,KAAKxJ,YACjBiM,KAAKC,UAAUlM,IAEjBsY,IAAQC,UAAU,CAAEvB,OAAQrT,OAAO3D,EAAYqW,gBACxCrW,CACT,CAKOmW,oBACLvhB,KAAKmhB,aAAe,KACpBnhB,KAAK6U,eAAiB,KACtB7U,KAAKohB,cAAcpb,KAAK,MACxB0O,eAAeC,WAAWnV,IAAYoV,KAAKxJ,aAC3CsJ,eAAeC,WAAWnV,IAAYoV,KAAKC,gBAC3CH,eAAeC,WAAWnV,IAAYoV,KAAKgP,kBAC3CF,IAAQC,UAAU,CAAEvB,OAAQ,IAC9B,CAMOyB,oCAAoCpb,EAA4B,IACrE,OAAOzI,KAAK8E,QAAQjB,SAAS4E,GAAavB,QACxCsM,KAAKsQ,IACHpP,eAAeC,WAAWnV,IAAYoV,KAAKC,gBACvCiP,GACFpP,eAAeiN,QAAQniB,IAAYoV,KAAKC,eAAgBwC,KAAKC,UAAUwM,GAAS,GAIxF,CAKO5B,kBAAkBN,EAAenc,GACtC,OAAQA,EAAiBzF,KAAK8E,QAAQif,uBAAuBnC,GAAS5hB,KAAK8E,QAAQ+P,eAAe+M,IAC/F1a,QACCsM,KAAKsQ,IACH9jB,KAAKgkB,uBAAuBF,EAAQ,GAE5C,CAKOG,yBACL,MAAMC,EAAqBxP,eAAe6O,QAAQ/jB,IAAYoV,KAAKC,gBACnE,OAAA7U,KAAK6U,eAAiBqP,EAAqB7M,KAAKoM,MAAMS,GAAsB,KACrElkB,KAAK6U,cACd,CAEOmP,uBAAuBnP,GAC5B,OAAIA,GACFH,eAAeiN,QAAQniB,IAAYoV,KAAKgP,iBAAkB,QAC1DlP,eAAeiN,QAAQniB,IAAYoV,KAAKC,eAAgBwC,KAAKC,UAAUzC,MAEvEH,eAAeiN,QAAQniB,IAAYoV,KAAKgP,iBAAkB,SAC1DlP,eAAeC,WAAWnV,IAAYoV,KAAKC,iBAEtCA,CACT,CAEOJ,wBAGL,MADyD,SADvBC,eAAe6O,QAAQ/jB,IAAYoV,KAAKgP,iBAG5E,CAEOO,sBAAsB/B,EAAgBvG,GAC3C,OAAO7b,KAAK8E,QAAQqf,sBAAsB/B,EAAQvG,EACpD,CACOuI,qBAAqBhC,EAAgBvG,EAAcwI,GACxD,OAAOrkB,KAAK8E,QAAQsf,qBAAqBhC,EAAQvG,EAAMwI,EACzD,CAACtkB,SAAAC,KAAA,UAAAgV,EAAA,mFA5PU3D,EAAqBnR,KAAA,EAAAuK,MAAAC,OAAAvK,OAAAC,4BAAAqE,aAAA1E,SAAAC,KAAA,WAAAgV,EAAA,sFAArB3D,EAAqB3M,WAFpB,gBAED2M,CAAqB,gGAArBA,EAAqBxP,WAAA,OAHjC4C,mBAAW,CACVC,WAAY,oHCTR,MAAOuP,EAAalU,SACjBC,KAAAskB,aAAwC,IAAIC,IAAgB,MAAKxkB,SACjEC,KAAAgU,YACLC,EAAcqQ,aAAa5a,eAAc3J,SAEpCC,KAAAwkB,WAAa,kBAAiBzkB,SAC9BC,KAAAykB,cAAgB,mCAAkC1kB,SAClDC,KAAA0kB,WAAa,sCAEpB3iB,cAAgB,CAQhB,YAAO4iB,CAAMC,GACXjF,WAAW,KACTiF,EAAK5M,cAAc2M,OAAK,EAE5B,CAEA,gBAAOzQ,CAAU2Q,GACf5Q,EAAcqQ,aAAate,KAAK6e,EAClC,CAAC9kB,SAAAC,KAAA,UAAAwP,EAAA,mFAzBUyE,EAAa/T,KAAA,GAAAC,OAAAC,4BAAAqE,aAAA1E,SAAAC,KAAA,WAAAwP,EAAA,sFAAbyE,EAAavP,WAFZ,oGAEDuP,EAAapS,WAAA,OAHzB4C,mBAAW,CACVC,WAAY,gJCEP,IAAMogB,EAAc,MAArB,MAAOA,EAGX/iB,YACYgjB,GAAA/kB,KAAA+kB,UAHJ/kB,KAAAglB,SAA2B,IAIhC,CAEUC,IAAI5gB,EAAasH,GAAU,IAAAxG,EAAAnF,KAAA,SAAAoF,KAAA,YACjB,MAAjBD,EAAK6f,WACP7f,EAAK6f,eAAiB7f,EAAK4f,QAAQG,gBAE/B/f,EAAK6f,SAASC,IAAI5gB,EAAKsH,EAC7B,EALsC,EAMxC,CAEasL,IAAI5S,GAAW,IAAA+U,EAAApZ,KAAA,SAAAoF,KAAA,YAC1B,OAAqB,MAAjBgU,EAAK4L,WACP5L,EAAK4L,eAAiB5L,EAAK2L,QAAQG,UAE9B9L,EAAK4L,SAAS/N,IAAI5S,EAAK,EAJJ,EAK5B,CAEa8gB,OAAO9gB,GAAW,IAAAsV,EAAA3Z,KAAA,SAAAoF,KAAA,YACR,MAAjBuU,EAAKqL,WACPrL,EAAKqL,eAAiBrL,EAAKoL,QAAQG,gBAE/BvL,EAAKqL,SAASG,OAAO9gB,EAC3B,EAL6B,EAM/B,CAACtE,SAAAC,KAAA,UAAAwE,EAAA,mFA5BUsgB,EAAc5kB,KAAA,EAAAuK,MAAAC,MAAAvK,OAAAC,4BAAAqE,aAAA1E,SAAAC,KAAA,WAAAwE,EAAA,sFAAdsgB,EAAcpgB,WAFb,gBAEDogB,CAAc,gGAAdA,EAAcjjB,WAAA,OAH1B4C,mBAAW,CACVC,WAAY,6CCGP,IAAK0gB,EAAZ,SAAYA,GACVA,WAAAC,MAAA,UACAD,IAAAE,MAAA,WACAF,IAAAG,QAAA,aACAH,IAAAI,MAAA,WACAJ,IAAAK,YAAA,iBACAL,IAAAM,QAAA,aANUN,CAOZ,CAPA,CAAYA,GAAQ,IAYb,IAAMO,EAAc,MAArB,MAAOA,EAyBX5jB,YACU6jB,EACAC,GADA7lB,KAAA4lB,WACA5lB,KAAA6lB,iBAnBH7lB,KAAA8lB,cAAgB,CACrBhR,IAAK,KACLiR,KAAM,KACN5f,MAAO,KACP6f,MAAO,KACPC,KAAM,MAEAjmB,KAAAkmB,WAAa,GACblmB,KAAAmmB,UAAY,GACZnmB,KAAA6R,QAAU,GACV7R,KAAAomB,oBAAqB,EAErBpmB,KAAAqmB,oBAAsB,YACtBrmB,KAAAsmB,WAAuBlB,EAASC,KAEhCrlB,KAAAumB,0BAA4B,IAMlCvmB,KAAK6lB,eACF5O,IAAIjX,KAAKqmB,qBACTG,KAAM7a,GAAW3L,KAAKymB,UAAY9a,EACvC,CAEA,wBAAW+a,GACT,OAAO,CAET,CAEA,wBAAWA,CAAqBC,GAC9B,MACMC,EAAkBD,KAD4B,MAA1B3mB,KAAK8lB,cAAchR,MAExC6R,IAAwB3mB,KAAKomB,qBAAuBpmB,KAAK6mB,cAC5DnD,IAAQoD,QAAQ,CACdrc,MAAO,mCACPsc,YAAavnB,IAAYkkB,QAAQqD,YAC7BvnB,IAAYkkB,QAAQqD,YACpB,kBACJ7gB,QAAS,CAAE8gB,SAAS,KAEtBhnB,KAAKomB,oBAAqB,EAC1BpmB,KAAK8U,IAAI,kCAEP8R,IACF5mB,KAAK8U,IACH6R,EACI,2DACA,oDAEN3mB,KAAKinB,qBAGAN,GAAuB3mB,KAAKsmB,aAAelB,EAASC,OACvDrlB,KAAKsmB,WAAalB,EAASE,OAGjC,CAEA,aAAWmB,GACT,OAAIzmB,KAAKsmB,aAAelB,EAASE,MAExBtlB,KAAK6mB,YAAczB,EAASM,QAAUN,EAASG,QAEjDvlB,KAAKsmB,UACd,CAEA,aAAWG,CAAUS,GACflnB,KAAKsmB,aAAeY,IACtBlnB,KAAK8U,IAAI,wBAAwBsQ,EAAS8B,MAC1ClnB,KAAKsmB,WAAaY,EACdlnB,KAAK0mB,wBAA0BQ,IAAa9B,EAASC,QACvDrlB,KAAK0mB,qBAAuBQ,IAAa9B,EAASC,MAEpDrlB,KAAK6lB,eAAeZ,IAAIjlB,KAAKqmB,oBAAqBa,GAAUV,OAEhE,CAEAW,sBAAwB,CAExBrS,IAAIkL,KAAiB1d,GACnBtC,KAAKonB,UAAUhC,EAASM,QAAS1F,EAAS1d,EAC5C,CAEA+kB,eAAerH,KAAoB1d,GACjCtC,KAAKonB,UAAUhC,EAASK,YAAazF,EAAS1d,EAChD,CAEAglB,SAAStH,KAAoB1d,GAC3BtC,KAAKonB,UAAUhC,EAASI,MAAOxF,EAAS1d,EAC1C,CAEAilB,WAAWvH,KAAoB1d,GAC7BtC,KAAKonB,UAAUhC,EAASG,QAASvF,EAAS1d,EAC5C,CAEAklB,SAASxH,KAAoB1d,GAC3BtC,KAAKonB,UAAUhC,EAASE,MAAOtF,EAAS1d,EAC1C,CAEQmlB,KAAKzH,KAAiB1d,GAC5BtC,KAAKonB,UAAUhC,EAASM,QAAS1F,EAAS1d,GAAM,EAClD,CAEQolB,OAAO1H,KAAiB1d,GAC9BtC,KAAKonB,UAAUhC,EAASE,MAAOtF,EAAS1d,GAAM,EAChD,CAEQqlB,MAAM3H,KAAiB1d,GAC7BtC,KAAKonB,UAAUhC,EAASG,QAASvF,EAAS1d,GAAM,EAClD,CAEQslB,OAAO5H,KAAiB1d,GAC9BtC,KAAKonB,UAAUhC,EAASI,MAAOxF,EAAS1d,GAAM,EAChD,CAEQulB,MAAM7H,KAAiB1d,GAC7BtC,KAAKonB,UAAUhC,EAASK,YAAazF,EAAS1d,GAAM,EACtD,CAEAwlB,mBACE,IAAK9nB,KAAK0mB,sBAAwB1mB,KAAKomB,mBACrC,IACE1C,IAAQC,UAAU,CAChBvB,OAAQpiB,KAAKkmB,WACbC,UAAWnmB,KAAKmmB,UAChBtU,QAAS7R,KAAK6R,SAElB,OAASkW,IAEN/nB,KAAK8lB,cAAc3f,OAASD,QAAQC,OACnC,4DACA4hB,EAEJ,CAEJ,CAEAC,cAAcC,GACZjoB,KAAKkmB,WAAa,GAAG+B,GAAQC,gBAAgBD,GAAQE,QACjDnoB,KAAKomB,oBACP1C,IAAQC,UAAU,CAChBvB,OAAQpiB,KAAKkmB,YAGnB,CAEAkC,aAAajC,GACXnmB,KAAKmmB,UAAYA,EACbnmB,KAAKomB,oBACP1C,IAAQC,UAAU,CAChBwC,UAAWnmB,KAAKmmB,WAGtB,CAEAkC,WAAWxW,GACT7R,KAAK6R,QAAUA,EACX7R,KAAKomB,oBACP1C,IAAQC,UAAU,CAChB9R,QAASA,GAGf,CAEA,eAAYgV,GACV,OAAQ7mB,KAAK4lB,SAAS0C,GAAG,SAC3B,CAEQrB,oBACDjnB,KAAK8lB,cAAchR,KAYtB5O,QAAQ4O,IAAM9U,KAAK8lB,cAAchR,IACjC5O,QAAQ6f,KAAO/lB,KAAK8lB,cAAcC,KAClC7f,QAAQC,MAAQnG,KAAK8lB,cAAc3f,MACnCD,QAAQ8f,MAAQhmB,KAAK8lB,cAAcE,MACnC9f,QAAQ+f,KAAOjmB,KAAK8lB,cAAcG,KAClCjmB,KAAK8lB,cAAchR,IACjB9U,KAAK8lB,cAAcC,KACnB/lB,KAAK8lB,cAAc3f,MACnBnG,KAAK8lB,cAAc3f,MACnBnG,KAAK8lB,cAAc3f,MACnB,OArBFnG,KAAK8lB,cAAchR,IAAM5O,QAAQ4O,IACjC9U,KAAK8lB,cAAcC,KAAO7f,QAAQ6f,KAClC/lB,KAAK8lB,cAAc3f,MAAQD,QAAQC,MACnCnG,KAAK8lB,cAAc3f,MAAQD,QAAQ8f,MACnChmB,KAAK8lB,cAAc3f,MAAQD,QAAQ+f,KACnC/f,QAAQ4O,IAAM,CAACkL,EAAS1d,IAAStC,KAAKynB,KAAK,YAAMzH,EAAS1d,GAC1D4D,QAAQ6f,KAAO,CAAC/F,EAAS1d,IAAStC,KAAK2nB,MAAM3H,EAAS1d,GACtD4D,QAAQC,MAAQ,CAAC6Z,EAAS1d,IAAStC,KAAK0nB,OAAO1H,EAAS1d,GACxD4D,QAAQ8f,MAAQ,CAAChG,EAAS1d,IAAStC,KAAK4nB,OAAO5H,EAAS1d,GACxD4D,QAAQ+f,KAAO,CAACjG,EAAS1d,IAAStC,KAAK6nB,MAAM,eAAM7H,EAAS1d,GAchE,CAEQ8kB,UACNF,EACAlH,EACA1d,EACAimB,GAEIvoB,KAAK0mB,qBACP1mB,KAAKwoB,qBAAqBtB,EAAUlH,EAAS1d,EAAMimB,IAGnDvoB,KAAKyoB,SAASvB,EAAUlH,EAAS1d,EAAMimB,GAEnCvoB,KAAKymB,WAAaS,IAAalnB,KAAK6mB,aACtC7mB,KAAK0oB,UAAU1I,EAAS1d,GAG9B,CAEQomB,UAAU1I,EAAiB1d,GACjCA,EAAOtC,KAAK2oB,sBAAsBrmB,GAClC,IACMA,aAAgBsmB,MAClBlF,IAAQmF,MAAMvmB,GAEdohB,IAAQmF,MADCvmB,EACK,CAAE0d,QAASA,EAAS1d,KAAMA,GAE1B0d,EAElB,OAAS+H,GAEP/nB,KAAKwoB,qBACHpD,EAASE,MACT,sCACAyC,EAEJ,CACF,CAEQU,SACNvB,EACAlH,EACA1d,EACAimB,GAEAjmB,EAAOtC,KAAK2oB,sBAAsBrmB,GAElCtC,KAAKwoB,qBAAqBtB,EAAUlH,EAAS1d,EAAMimB,EACrD,CAEQC,qBACNtB,EACAlH,EACA1d,EACAimB,GAEA,MAAMO,EAAO,CAAC9I,GAER+I,EAAUzmB,GAAQ0mB,MAAMD,QAAQzmB,GAMtC,GALIymB,GAAWzmB,EAAKsE,OAAS,EAC3BkiB,EAAKza,KAAK4a,MAAMH,EAAMxmB,IACZymB,GAAWzmB,GACrBwmB,EAAKza,KAAK/L,GAERimB,EAEF,OAAQrB,GACN,KAAK9B,EAASI,OACXxlB,KAAK8lB,cAAcE,OAAS9f,QAAQ8f,OAAOiD,MAAM/iB,QAAS4iB,GAC3D,MACF,KAAK1D,EAASK,aACXzlB,KAAK8lB,cAAcG,MAAQ/f,QAAQ+f,MAAMgD,MAAM/iB,QAAS4iB,GACzD,MACF,KAAK1D,EAASE,OACXtlB,KAAK8lB,cAAc3f,OAASD,QAAQC,OAAO8iB,MAAM/iB,QAAS4iB,GAC3D,MACF,KAAK1D,EAASG,SACXvlB,KAAK8lB,cAAcC,MAAQ7f,QAAQ6f,MAAMkD,MAAM/iB,QAAS4iB,GACzD,MACF,SACG9oB,KAAK8lB,cAAchR,KAAO5O,QAAQ4O,KAAKmU,MAAM/iB,QAAS4iB,QAMvD5B,IAAa9B,EAASE,OACvBtlB,KAAK8lB,cAAc3f,OAASD,QAAQC,OAAO8iB,MAAM/iB,QAAS4iB,IAE1D9oB,KAAK8lB,cAAchR,KAAO5O,QAAQ4O,KAAKmU,MAAM,YAAM/iB,QAAS4iB,EAGnE,CAEQH,sBAAsBrmB,GAC5B,OAAIA,GAAQ0mB,MAAMD,QAAQzmB,KACJ,IAAhBA,EAAKsE,OACPtE,EAAO,KACkB,IAAhBA,EAAKsE,SACdtE,EAAOA,EAAK,KAGTA,CACT,CAACvC,SAAAC,KAAA,UAAAwE,EAAA,mFAnTUmhB,EAAczlB,KAAA,EAAAuK,MAAAC,MAAA,CAAAD,MAAAE,IAAAxK,OAAAC,4BAAAqE,aAAA1E,SAAAC,KAAA,WAAAwE,EAAA,sFAAdmhB,EAAcjhB,WAFb,gBAEDihB,CAAc,gGAAdA,EAAc9jB,WAAA,OAH1B4C,mBAAW,CACVC,WAAY,2MCPP,IAAM8G,EAAW,MAAlB,MAAOA,EAAWzL,SAIfC,KAAAyL,eAA4C,CACjD3H,IAAK,WACLE,KAAK,YACNjE,SACMC,KAAAkpB,aAAuB,GAY9BnnB,YACUonB,EACAhN,GAER,IAAIlR,EAHIjL,KAAAmpB,aACAnpB,KAAAmc,cArBFnc,KAAAopB,WAAa,IAAI7E,KAAyB,GAC3CvkB,KAAA6V,UAAiC7V,KAAKopB,WAAW1f,eAOxD1J,KAAAgW,gBAA0C,CACxCqT,OAAQ7d,EAAYC,eACpB6d,KAAM9d,EAAY0d,aAClBK,kBAAkB,EAClBC,aAAa,EAEbC,sBAAuB,CACrBlf,SAAU,IASZ,MAAMa,EAAcpL,KAAKmc,YAAYzU,iBAC/B2D,EAAyBD,GAAaC,uBAE1CJ,EADEI,GAAwBC,iBAAmBD,GAAwBE,iBAClD,CAAEzH,IAAKuH,EAAuBC,gBAAiBtH,IAAKqH,EAAuBE,kBAE3EC,EAAYC,eAG5BL,GAAa3F,eAWhBzF,KAAKgW,gBAAgBqT,OAASpe,EAV9Bb,UAAUC,YAAYC,mBACpBqB,IACE3L,KAAKgW,gBAAgBqT,OAAS,CAC5BvlB,IAAK6H,EAAM7F,OAAOnC,SAClBK,IAAK2H,EAAM7F,OAAO/B,YAGtB,KAAQ/D,KAAKgW,gBAAgBqT,OAASpe,IAK1CjL,KAAK0pB,cAAc7V,WACrB,CAMQ6V,cACN,OAAO1pB,KAAKmpB,WACTQ,MACC,+CAA+CnqB,IAAYoqB,iCAC3D,YAED1iB,QACCvB,KAAI,KAAM,IAAI,EACd6N,KAAKqW,GAAQ7pB,KAAKopB,WAAWpjB,KAAK6jB,KAAI,EACtChK,KAAY1Z,IACVD,QAAQuT,MAAM,YAAMtT,GACpBnG,KAAKopB,WAAWpjB,MAAK,IAAK,EACnB4B,OAAG,MACX,EACDkiB,KAAK,GAEX,CAAC/pB,SAAAC,KAAA,UAAA+pB,EAAA,mFArEUve,EAAWtL,KAAA,EAAAuK,MAAAC,MAAA,CAAAD,MAAAE,MAAAxK,OAAAC,4BAAAqE,aAAA1E,SAAAC,KAAA,WAAA+pB,EAAA,sFAAXve,EAAW9G,WAFV,gBAED8G,CAAW,gGAAXA,EAAW3J,WAAA,OAHvB4C,mBAAW,CACVC,WAAY,+HCHP,IAAMslB,EAAmB,MAA1B,MAAOA,EACXjoB,YAAoBkoB,GAAAjqB,KAAAiqB,WAA0B,CAE9ClI,QAAQ/B,EAAiBkK,EAAiB1O,EAAmB,KAC3Dxb,KAAKiqB,UAAUE,KAAKnK,EAASkK,EAAQ,CAAE1O,SAAUA,EAAU4O,WAAY,CAAC,kCAC1E,CAEAjkB,MAAM6Z,EAAiBkK,EAAS,KAAM1O,OAAmBtX,GACvDlE,KAAKiqB,UAAUE,KAAK,UAAYnK,EAASkK,EAAQ,CAAE1O,SAAUA,EAAU4O,WAAY,CAAC,+BAAgCC,iBAAkB,OACxI,CAEAC,QAAQtK,EAAiBkK,EAAiB1O,EAAmB,KAC3Dxb,KAAKiqB,UAAUE,KAAK,YAAcnK,EAASkK,EAAQ,CAAE1O,SAAUA,EAAU4O,WAAY,CAAC,kCACxF,CAACrqB,SAAAC,KAAA,UAAAC,EAAA,mFAbU+pB,EAAmB9pB,KAAA,EAAAuK,MAAAC,OAAAvK,OAAAC,4BAAAqE,aAAA1E,SAAAC,KAAA,WAAAC,EAAA,sFAAnB+pB,EAAmBtlB,WAFlB,gBAEDslB,CAAmB,gGAAnBA,EAAmBnoB,WAAA,OAH/B4C,mBAAW,CACVC,WAAY,0LCYP,MAAM6lB,EAAe,IAAIC,iBAAuB,gBAEjD,MAAgBC,EAGlB1oB,cAFQ/B,KAAA0qB,oBAAqCxmB,CAE7B,CAOhBymB,WAAWxY,GACP,SAAOyY,MAAoBC,OAAgB1Y,CAC/C,CAMA2Y,gBAAgB3Y,GACPnS,MAAc+qB,UAAU/qB,KAAa+qB,QAAU5Y,EACxD,EAMG,IAAM6Y,EAAa,MAApB,MAAOA,UAAqBP,EAK9B1oB,YAAgCkpB,EAAoDF,GAChFG,QAHMlrB,KAAAmrB,sBAAmEjnB,EAIzElE,KAAKirB,KAAOA,EACZjrB,KAAK+qB,QAAmCA,GAA6B/qB,KAAK2qB,WAAW,qCACzF,CAMArJ,iBACI,IAAI8J,EAAOprB,KAAK+qB,QAAU,qCAC1BK,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAK8rB,sBAAsBD,KAClC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK8rB,sBAAsBD,EACtC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU+D,sBAAsBI,GAC5B,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMAE,YACI,IAAIxB,EAAOprB,KAAK+qB,QAAU,oCAC1BK,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAK6sB,iBAAiBhB,KAC7B3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK6sB,iBAAiBhB,EACjC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU8E,iBAAiBX,GACvB,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAOA7K,MAAMlU,GACF,IAAIyd,EAAOprB,KAAK+qB,QAAU,+BAC1BK,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAK8sB,aAAajB,KACzB3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK8sB,aAAajB,EAC7B,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU+E,aAAaZ,GACnB,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMArJ,SACI,IAAI+H,EAAOprB,KAAK+qB,QAAU,gCAC1BK,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAK+sB,cAAclB,KAC1B3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK+sB,cAAclB,EAC9B,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUgF,cAAcb,GACpB,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAKAM,gBACI,IAAI5B,EAAOprB,KAAK+qB,QAAU,mCAC1BK,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,KAI7B,OAAOzrB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAKitB,qBAAqBpB,KACjC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKitB,qBAAqBpB,EACrC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUkF,qBAAqBf,GAC3B,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,MACnDE,MAAc,QAEH,MAAXtkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMAQ,aAAaC,EAAsBC,GAC/B,IAAIhC,EAAOprB,KAAK+qB,QAAU,oEAC1B,GAAmD,MAAjBoC,EAC9B,MAAM,IAAIvE,MAAM,iDAEpB,GADAwC,EAAOA,EAAK9P,QAAQ,iBAAkB+R,mBAAmB,GAAKF,IACX,MAAjBC,EAC9B,MAAM,IAAIxE,MAAM,iDACpBwC,EAAOA,EAAK9P,QAAQ,iBAAkB+R,mBAAmB,GAAKD,IAC9DhC,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKstB,oBAAoBzB,KAChC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKstB,oBAAoBzB,EACpC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUuF,oBAAoBpB,GAC1B,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMAa,WAAWH,GACP,IAAIhC,EAAOprB,KAAK+qB,QAAU,kDAC1B,GAAmD,MAAjBqC,EAC9B,MAAM,IAAIxE,MAAM,iDACpBwC,EAAOA,EAAK9P,QAAQ,iBAAkB+R,mBAAmB,GAAKD,IAC9DhC,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKwtB,kBAAkB3B,KAC9B3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKwtB,kBAAkB3B,EAClC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUyF,kBAAkBtB,GACxB,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAQAhK,oBAAoB+K,EAAiCC,GACjD,IAAItC,EAAOprB,KAAK+qB,QAAU,8CAC1B,GAAoB,OAAhB0C,EACA,MAAM,IAAI7E,MAAM,+CAGpB,QAFyB1kB,IAAhBupB,IACLrC,GAAQ,eAAiBiC,mBAAmB,GAAKI,GAAe,KACzC,OAAvBC,EACA,MAAM,IAAI9E,MAAM,2DACY1kB,IAAvBwpB,IACLtC,GAAQ,sBAAwBiC,mBAAmB,GAAKK,GAAsB,KAClFtC,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAK2tB,2BAA2B9B,KACvC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK2tB,2BAA2B9B,EAC3C,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU4F,2BAA2BzB,GACjC,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMA/kB,4BAA4BtB,GACxB,IAAI+kB,EAAOprB,KAAK+qB,QAAU,sEAC1B,GAAqD,MAAlB1kB,EAC/B,MAAM,IAAIuiB,MAAM,kDACpBwC,EAAOA,EAAK9P,QAAQ,kBAAmB+R,mBAAmB,GAAKhnB,IAC/D+kB,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAK4tB,mCAAmC/B,KAC/C3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK4tB,mCAAmC/B,EACnD,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU6F,mCAAmC1B,GACzC,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMAmB,8BAA8BV,EAAsB9mB,GAChD,IAAI+kB,EAAOprB,KAAK+qB,QAAU,wFAC1B,GAAmD,MAAjBoC,EAC9B,MAAM,IAAIvE,MAAM,iDAEpB,GADAwC,EAAOA,EAAK9P,QAAQ,iBAAkB+R,mBAAmB,GAAKF,IACT,MAAlB9mB,EAC/B,MAAM,IAAIuiB,MAAM,kDACpBwC,EAAOA,EAAK9P,QAAQ,kBAAmB+R,mBAAmB,GAAKhnB,IAC/D+kB,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAK8tB,qCAAqCjC,KACjD3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK8tB,qCAAqCjC,EACrD,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU+F,qCAAqC5B,GAC3C,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAOAqB,oBAAoBpgB,GAChB,IAAIyd,EAAOprB,KAAK+qB,QAAU,6CAC1BK,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKguB,2BAA2BnC,KACvC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKguB,2BAA2BnC,EAC3C,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUiG,2BAA2B9B,GACjC,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAOAuB,sBAAsBC,EAAkCvgB,GACpD,IAAIyd,EAAOprB,KAAK+qB,QAAU,2EAC1B,GAA2E,MAA7BmD,EAC1C,MAAM,IAAItF,MAAM,6DACpBwC,EAAOA,EAAK9P,QAAQ,6BAA8B+R,mBAAmB,GAAKa,IAC1E9C,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKmuB,6BAA6BtC,KACzC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKmuB,6BAA6BtC,EAC7C,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUoG,6BAA6BjC,GACnC,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMA0B,0BAA0BC,GACtB,IAAIjD,EAAOprB,KAAK+qB,QAAU,4EAC1B,GAAqE,MAA1BsD,EACvC,MAAM,IAAIzF,MAAM,0DACpBwC,EAAOA,EAAK9P,QAAQ,0BAA2B+R,mBAAmB,GAAKgB,IACvEjD,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKsuB,iCAAiCzC,KAC7C3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKsuB,iCAAiCzC,EACjD,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUuG,iCAAiCpC,GACvC,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAOA6B,0BAA0BF,EAA+B1gB,GACrD,IAAIyd,EAAOprB,KAAK+qB,QAAU,4EAC1B,GAAqE,MAA1BsD,EACvC,MAAM,IAAIzF,MAAM,0DACpBwC,EAAOA,EAAK9P,QAAQ,0BAA2B+R,mBAAmB,GAAKgB,IACvEjD,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKwuB,iCAAiC3C,KAC7C3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKwuB,iCAAiC3C,EACjD,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUyG,iCAAiCtC,GACvC,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAKA+B,oBAAoBC,GAChB,IAAItD,EAAOprB,KAAK+qB,QAAU,8DAC1B,GAAuD,MAAnB2D,EAChC,MAAM,IAAI9F,MAAM,mDACpBwC,EAAOA,EAAK9P,QAAQ,mBAAoB+R,mBAAmB,GAAKqB,IAChEtD,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAK2uB,2BAA2B9C,KACvC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK2uB,2BAA2B9C,EAC3C,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU4G,2BAA2BzC,GACjC,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAOAkC,yBAAyBjhB,GACrB,IAAIyd,EAAOprB,KAAK+qB,QAAU,mDAC1BK,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAK6uB,gCAAgChD,KAC5C3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK6uB,gCAAgChD,EAChD,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU8G,gCAAgC3C,GACtC,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMA3I,uBAAuB+K,GACnB,IAAI1D,EAAOprB,KAAK+qB,QAAU,iDAC1B,GAAmB,OAAf+D,EACA,MAAM,IAAIlG,MAAM,mDACI1kB,IAAf4qB,IACL1D,GAAQ,cAAgBiC,mBAAmB,GAAKyB,GAAc,KAClE1D,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAK+uB,8BAA8BlD,KAC1C3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK+uB,8BAA8BlD,EAC9C,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUgH,8BAA8B7C,GACpC,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,EACAmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIwC,EAAiB,KACrBA,SAA8B,KAAlBxC,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,kBAClEwB,EAAe,cAAevkB,EAAQokB,EAAeF,EAAU0C,EAAS,IAE7D,MAAX5mB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMAuC,YAAYthB,GACR,IAAIyd,EAAOprB,KAAK+qB,QAAU,8BAC1BK,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKkvB,mBAAmBrD,KAC/B3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKkvB,mBAAmBrD,EACnC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUmH,mBAAmBhD,GACzB,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMAyC,OAAOxhB,GACH,IAAIyd,EAAOprB,KAAK+qB,QAAU,0BAC1BK,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKovB,cAAcvD,KAC1B3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKovB,cAAcvD,EAC9B,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUqH,cAAclD,GACpB,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMAtkB,OAAOinB,EAAkCX,EAAwB/gB,GAC7D,IAAIyd,EAAOprB,KAAK+qB,QAAU,sEAC1B,GAA2E,MAA7BsE,EAC1C,MAAM,IAAIzG,MAAM,6DAEpB,GADAwC,EAAOA,EAAK9P,QAAQ,6BAA8B+R,mBAAmB,GAAKgC,IACnB,MAAnBX,EAChC,MAAM,IAAI9F,MAAM,mDACpBwC,EAAOA,EAAK9P,QAAQ,mBAAoB+R,mBAAmB,GAAKqB,IAChEtD,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,sBAIxB,OAAOzrB,KAAKirB,KAAKU,QAAQ,QAASP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GACjE7rB,KAAKsvB,cAAczD,KAC1B3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKsvB,cAAczD,EAC9B,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUuH,cAAcpD,GACpB,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,MACnDE,MAAc,QAEH,MAAXtkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAOA6C,WAAW5hB,GACP,IAAIyd,EAAOprB,KAAK+qB,QAAU,mCAC1BK,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKwvB,kBAAkB3D,KAC9B3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKwvB,kBAAkB3D,EAClC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUyH,kBAAkBtD,GACxB,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMA1K,cACI,IAAIoJ,EAAOprB,KAAK+qB,QAAU,oCAC1BK,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAKyvB,mBAAmB5D,KAC/B3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKyvB,mBAAmB5D,EACnC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU0H,mBAAmBvD,GACzB,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CASApK,kBAAkBF,EAA4BvG,EAA0BwG,GACpE,IAAI+I,EAAOprB,KAAK+qB,QAAU,2CAC1B,GAAe,OAAX3I,EACA,MAAM,IAAIwG,MAAM,0CAGpB,QAFoB1kB,IAAXke,IACLgJ,GAAQ,UAAYiC,mBAAmB,GAAKjL,GAAU,KAC7C,OAATvG,EACA,MAAM,IAAI+M,MAAM,wCAGpB,QAFkB1kB,IAAT2X,IACLuP,GAAQ,QAAUiC,mBAAmB,GAAKxR,GAAQ,KACjC,OAAjBwG,EACA,MAAM,IAAIuG,MAAM,qDACM1kB,IAAjBme,IACL+I,GAAQ,gBAAkBiC,mBAAmB,GAAKhL,GAAgB,KACtE+I,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAK0vB,yBAAyB7D,KACrC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK0vB,yBAAyB7D,EACzC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU2H,yBAAyBxD,GAC/B,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAQAiD,wBAAwBvN,EAA4BC,GAChD,IAAI+I,EAAOprB,KAAK+qB,QAAU,kDAC1B,GAAe,OAAX3I,EACA,MAAM,IAAIwG,MAAM,0CAGpB,QAFoB1kB,IAAXke,IACLgJ,GAAQ,UAAYiC,mBAAmB,GAAKjL,GAAU,KACrC,OAAjBC,EACA,MAAM,IAAIuG,MAAM,qDACM1kB,IAAjBme,IACL+I,GAAQ,gBAAkBiC,mBAAmB,GAAKhL,GAAgB,KACtE+I,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAK4vB,+BAA+B/D,KAC3C3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK4vB,+BAA+B/D,EAC/C,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU6H,+BAA+B1D,GACrC,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAOAmD,eAAeC,GACX,IAAI1E,EAAOprB,KAAK+qB,QAAU,wCAC1B,GAAkB,OAAd+E,EACA,MAAM,IAAIlH,MAAM,kDACG1kB,IAAd4rB,IACL1E,GAAQ,aAAeiC,mBAAmB,GAAKyC,GAAa,KAChE1E,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAK+vB,sBAAsBlE,KAClC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK+vB,sBAAsBlE,EACtC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUgI,sBAAsB7D,GAC5B,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAQAvI,sBAAsB/B,EAA4BvG,GAC9C,IAAIuP,EAAOprB,KAAK+qB,QAAU,gDAC1B,GAAe,OAAX3I,EACA,MAAM,IAAIwG,MAAM,0CAGpB,QAFoB1kB,IAAXke,IACLgJ,GAAQ,UAAYiC,mBAAmB,GAAKjL,GAAU,KAC7C,OAATvG,EACA,MAAM,IAAI+M,MAAM,6CACF1kB,IAAT2X,IACLuP,GAAQ,QAAUiC,mBAAmB,GAAKxR,GAAQ,KACtDuP,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAKgwB,6BAA6BnE,KACzC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKgwB,6BAA6BnE,EAC7C,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUiI,6BAA6B9D,GACnC,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CASAtI,qBAAqBhC,EAA4BvG,EAA0BlO,GACvE,IAAIyd,EAAOprB,KAAK+qB,QAAU,+CAC1B,GAAe,OAAX3I,EACA,MAAM,IAAIwG,MAAM,0CAGpB,QAFoB1kB,IAAXke,IACLgJ,GAAQ,UAAYiC,mBAAmB,GAAKjL,GAAU,KAC7C,OAATvG,EACA,MAAM,IAAI+M,MAAM,6CACF1kB,IAAT2X,IACLuP,GAAQ,QAAUiC,mBAAmB,GAAKxR,GAAQ,KACtDuP,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKiwB,4BAA4BpE,KACxC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKiwB,4BAA4BpE,EAC5C,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUkI,4BAA4B/D,GAClC,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAOAwD,YAAYviB,GACR,IAAIyd,EAAOprB,KAAK+qB,QAAU,6BAC1BK,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKmwB,mBAAmBtE,KAC/B3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKmwB,mBAAmBtE,EACnC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUoI,mBAAmBjE,GACzB,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMA0D,aAAaziB,GACT,IAAIyd,EAAOprB,KAAK+qB,QAAU,8BAC1BK,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKqwB,oBAAoBxE,KAChC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKqwB,oBAAoBxE,EACpC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUsI,oBAAoBnE,GAC1B,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAOA4D,kBAAkBjC,EAA+B1gB,GAC7C,IAAIyd,EAAOprB,KAAK+qB,QAAU,4DAC1B,GAAqE,MAA1BsD,EACvC,MAAM,IAAIzF,MAAM,0DACpBwC,EAAOA,EAAK9P,QAAQ,0BAA2B+R,mBAAmB,GAAKgB,IACvEjD,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKuwB,yBAAyB1E,KACrC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKuwB,yBAAyB1E,EACzC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUwI,yBAAyBrE,GAC/B,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMA8D,kBAAkBnC,GACd,IAAIjD,EAAOprB,KAAK+qB,QAAU,4DAC1B,GAAqE,MAA1BsD,EACvC,MAAM,IAAIzF,MAAM,0DACpBwC,EAAOA,EAAK9P,QAAQ,0BAA2B+R,mBAAmB,GAAKgB,IACvEjD,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKywB,yBAAyB5E,KACrC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKywB,yBAAyB5E,EACzC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU0I,yBAAyBvE,GAC/B,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAOAgE,sBAAsB/iB,GAClB,IAAIyd,EAAOprB,KAAK+qB,QAAU,yCAC1BK,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAK2wB,6BAA6B9E,KACzC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK2wB,6BAA6B9E,EAC7C,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU4I,6BAA6BzE,GACnC,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAKAkE,YAAYlC,GACR,IAAItD,EAAOprB,KAAK+qB,QAAU,8CAC1B,GAAuD,MAAnB2D,EAChC,MAAM,IAAI9F,MAAM,mDACpBwC,EAAOA,EAAK9P,QAAQ,mBAAoB+R,mBAAmB,GAAKqB,IAChEtD,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAK6wB,mBAAmBhF,KAC/B3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK6wB,mBAAmBhF,EACnC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU8I,mBAAmB3E,GACzB,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAOAoE,gBAAgBpC,GACZ,IAAItD,EAAOprB,KAAK+qB,QAAU,mDAC1B,GAAuD,MAAnB2D,EAChC,MAAM,IAAI9F,MAAM,mDACpBwC,EAAOA,EAAK9P,QAAQ,mBAAoB+R,mBAAmB,GAAKqB,IAChEtD,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAK+wB,uBAAuBlF,KACnC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK+wB,uBAAuBlF,EACvC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUgJ,uBAAuB7E,GAC7B,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMAsE,6BACI,IAAI5F,EAAOprB,KAAK+qB,QAAU,8CAC1BK,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKixB,kCAAkCpF,KAC9C3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKixB,kCAAkCpF,EAClD,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUkJ,kCAAkC/E,GACxC,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAQAnK,YAAYkL,EAAiCC,GACzC,IAAItC,EAAOprB,KAAK+qB,QAAU,8BAC1B,GAAoB,OAAhB0C,EACA,MAAM,IAAI7E,MAAM,+CAGpB,QAFyB1kB,IAAhBupB,IACLrC,GAAQ,eAAiBiC,mBAAmB,GAAKI,GAAe,KACzC,OAAvBC,EACA,MAAM,IAAI9E,MAAM,2DACY1kB,IAAvBwpB,IACLtC,GAAQ,sBAAwBiC,mBAAmB,GAAKK,GAAsB,KAClFtC,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKkxB,mBAAmBrF,KAC/B3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKkxB,mBAAmBrF,EACnC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUmJ,mBAAmBhF,GACzB,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMA7X,eAAeia,GACX,IAAI1D,EAAOprB,KAAK+qB,QAAU,iCAC1B,GAAmB,OAAf+D,EACA,MAAM,IAAIlG,MAAM,mDACI1kB,IAAf4qB,IACL1D,GAAQ,cAAgBiC,mBAAmB,GAAKyB,GAAc,KAClE1D,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAKmxB,sBAAsBtF,KAClC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKmxB,sBAAsBtF,EACtC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUoJ,sBAAsBjF,GAC5B,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,EACAmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIwC,EAAiB,KACrBA,SAA8B,KAAlBxC,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,kBAClEwB,EAAe,cAAevkB,EAAQokB,EAAeF,EAAU0C,EAAS,IAE7D,MAAX5mB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMA7oB,SAAS8J,GACL,IAAIyd,EAAOprB,KAAK+qB,QAAU,yCAC1BK,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKoxB,gBAAgBvF,KAC5B3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKoxB,gBAAgBvF,EAChC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUqJ,gBAAgBlF,GACtB,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,EACAmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIwC,EAAiB,KACrBA,SAA8B,KAAlBxC,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,kBAClEwB,EAAe,cAAevkB,EAAQokB,EAAeF,EAAU0C,EAAS,IAE7D,MAAX5mB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMA2E,KAAKC,EAA8BC,EAA0C5jB,GACzE,IAAIyd,EAAOprB,KAAK+qB,QAAU,+EAC1B,GAAmE,MAAzBuG,EACtC,MAAM,IAAI1I,MAAM,yDAEpB,GADAwC,EAAOA,EAAK9P,QAAQ,yBAA0B+R,mBAAmB,GAAKiE,IACqB,MAArCC,EAClD,MAAM,IAAI3I,MAAM,qEACpBwC,EAAOA,EAAK9P,QAAQ,qCAAsC+R,mBAAmB,GAAKkE,IAClFnG,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKwxB,YAAY3F,KACxB3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKwxB,YAAY3F,EAC5B,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUyJ,YAAYtF,GAClB,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,EACAmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIwC,EAAiB,KACrBA,SAA8B,KAAlBxC,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,kBAClEwB,EAAe,cAAevkB,EAAQokB,EAAeF,EAAU0C,EAAS,IAE7D,MAAX5mB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAQA+E,YAAY9jB,GACR,IAAIyd,EAAOprB,KAAK+qB,QAAU,6BAC1BK,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAK0xB,mBAAmB7F,KAC/B3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK0xB,mBAAmB7F,EACnC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU2J,mBAAmBxF,GACzB,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMAhnB,iBACI,IAAI0lB,EAAOprB,KAAK+qB,QAAU,uCAC1BK,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAK2xB,sBAAsB9F,KAClC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK2xB,sBAAsB9F,EACtC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU4J,sBAAsBzF,GAC5B,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMAkF,mBACI,IAAIxG,EAAOprB,KAAK+qB,QAAU,yCAC1BK,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAK6xB,wBAAwBhG,KACpC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK6xB,wBAAwBhG,EACxC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU8J,wBAAwB3F,GAC9B,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMAoF,mBAAmBC,GACf,IAAI3G,EAAOprB,KAAK+qB,QAAU,gEAC1B,GAA6D,MAAtBgH,EACnC,MAAM,IAAInJ,MAAM,sDACpBwC,EAAOA,EAAK9P,QAAQ,sBAAuB+R,mBAAmB,GAAK0E,IACnE3G,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKgyB,0BAA0BnG,KACtC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKgyB,0BAA0BnG,EAC1C,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUiK,0BAA0B9F,GAChC,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMAuF,sBAAsBF,GAClB,IAAI3G,EAAOprB,KAAK+qB,QAAU,mEAC1B,GAA6D,MAAtBgH,EACnC,MAAM,IAAInJ,MAAM,sDACpBwC,EAAOA,EAAK9P,QAAQ,sBAAuB+R,mBAAmB,GAAK0E,IACnE3G,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKkyB,6BAA6BrG,KACzC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKkyB,6BAA6BrG,EAC7C,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUmK,6BAA6BhG,GACnC,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAOAyF,qBAAqBhF,EAAkCiF,GACnD,IAAIhH,EAAOprB,KAAK+qB,QAAU,yCAC1B,GAAqB,OAAjBoC,EACA,MAAM,IAAIvE,MAAM,gDAGpB,QAF0B1kB,IAAjBipB,IACL/B,GAAQ,gBAAkBiC,mBAAmB,GAAKF,GAAgB,KAChD,OAAlBiF,EACA,MAAM,IAAIxJ,MAAM,sDACO1kB,IAAlBkuB,IACLhH,GAAQ,iBAAmBiC,mBAAmB,GAAK+E,GAAiB,KACxEhH,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAKqyB,4BAA4BxG,KACxC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKqyB,4BAA4BxG,EAC5C,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUsK,4BAA4BnG,GAClC,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAKA4F,cACI,IAAIlH,EAAOprB,KAAK+qB,QAAU,6BAC1BK,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAKuyB,mBAAmB1G,KAC/B3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKuyB,mBAAmB1G,EACnC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUwK,mBAAmBrG,GACzB,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAKA8F,uBACI,IAAIpH,EAAOprB,KAAK+qB,QAAU,uCAC1BK,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAKyyB,4BAA4B5G,KACxC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKyyB,4BAA4B5G,EAC5C,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU0K,4BAA4BvG,GAClC,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAKAgG,uBACI,IAAItH,EAAOprB,KAAK+qB,QAAU,uCAC1BK,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAK2yB,4BAA4B9G,KACxC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK2yB,4BAA4B9G,EAC5C,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU4K,4BAA4BzG,GAClC,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAKAkG,kBACI,IAAIxH,EAAOprB,KAAK+qB,QAAU,kCAC1BK,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAK6yB,uBAAuBhH,KACnC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK6yB,uBAAuBhH,EACvC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU8K,uBAAuB3G,GAC7B,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMAoG,6BAA6BnlB,GACzB,IAAIyd,EAAOprB,KAAK+qB,QAAU,gDAC1BK,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAK+yB,oCAAoClH,KAChD3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK+yB,oCAAoClH,EACpD,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUgL,oCAAoC7G,GAC1C,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMAsG,6BAA6BC,EAAoBtlB,GAC7C,IAAIyd,EAAOprB,KAAK+qB,QAAU,6DAC1B,GAA+C,MAAfkI,EAC5B,MAAM,IAAIrK,MAAM,+CACpBwC,EAAOA,EAAK9P,QAAQ,eAAgB+R,mBAAmB,GAAK4F,IAC5D7H,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAKkzB,oCAAoCrH,KAChD3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKkzB,oCAAoCrH,EACpD,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUmL,oCAAoChH,GAC1C,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMAyG,eAAeC,EAA+BzlB,GAC1C,IAAIyd,EAAOprB,KAAK+qB,QAAU,yDAC1B,GAAqE,MAA1BqI,EACvC,MAAM,IAAIxK,MAAM,0DACpBwC,EAAOA,EAAK9P,QAAQ,0BAA2B+R,mBAAmB,GAAK+F,IACvEhI,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKqzB,sBAAsBxH,KAClC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKqzB,sBAAsBxH,EACtC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUsL,sBAAsBnH,GAC5B,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMA4G,eAAeL,EAAoBtlB,GAC/B,IAAIyd,EAAOprB,KAAK+qB,QAAU,8CAC1B,GAA+C,MAAfkI,EAC5B,MAAM,IAAIrK,MAAM,+CACpBwC,EAAOA,EAAK9P,QAAQ,eAAgB+R,mBAAmB,GAAK4F,IAC5D7H,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAKuzB,sBAAsB1H,KAClC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKuzB,sBAAsB1H,EACtC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUwL,sBAAsBrH,GAC5B,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAKA8G,YAAYP,GACR,IAAI7H,EAAOprB,KAAK+qB,QAAU,2CAC1B,GAA+C,MAAfkI,EAC5B,MAAM,IAAIrK,MAAM,+CACpBwC,EAAOA,EAAK9P,QAAQ,eAAgB+R,mBAAmB,GAAK4F,IAC5D7H,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAKyzB,mBAAmB5H,KAC/B3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKyzB,mBAAmB5H,EACnC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU0L,mBAAmBvH,GACzB,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMAgH,kBAAkBvG,EAAsBxf,GACpC,IAAIyd,EAAOprB,KAAK+qB,QAAU,oDAC1B,GAAmD,MAAjBoC,EAC9B,MAAM,IAAIvE,MAAM,iDACpBwC,EAAOA,EAAK9P,QAAQ,iBAAkB+R,mBAAmB,GAAKF,IAC9D/B,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAK2zB,yBAAyB9H,KACrC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK2zB,yBAAyB9H,EACzC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU4L,yBAAyBzH,GAC/B,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMAkH,kBAAkBX,EAAoBtlB,GAClC,IAAIyd,EAAOprB,KAAK+qB,QAAU,kDAC1B,GAA+C,MAAfkI,EAC5B,MAAM,IAAIrK,MAAM,+CACpBwC,EAAOA,EAAK9P,QAAQ,eAAgB+R,mBAAmB,GAAK4F,IAC5D7H,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAK6zB,yBAAyBhI,KACrC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK6zB,yBAAyBhI,EACzC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU8L,yBAAyB3H,GAC/B,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAKAoH,eAAeb,GACX,IAAI7H,EAAOprB,KAAK+qB,QAAU,+CAC1B,GAA+C,MAAfkI,EAC5B,MAAM,IAAIrK,MAAM,+CACpBwC,EAAOA,EAAK9P,QAAQ,eAAgB+R,mBAAmB,GAAK4F,IAC5D7H,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAK+zB,sBAAsBlI,KAClC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK+zB,sBAAsBlI,EACtC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUgM,sBAAsB7H,GAC5B,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAKAsH,uBAAuB7G,EAAsB1L,GACzC,IAAI2J,EAAOprB,KAAK+qB,QAAU,yEAC1B,GAAmD,MAAjBoC,EAC9B,MAAM,IAAIvE,MAAM,iDAEpB,GADAwC,EAAOA,EAAK9P,QAAQ,iBAAkB+R,mBAAmB,GAAKF,IACX,MAAjB1L,EAC9B,MAAM,IAAImH,MAAM,iDACpBwC,EAAOA,EAAK9P,QAAQ,iBAAkB+R,mBAAmB,GAAK5L,IAC9D2J,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAKi0B,8BAA8BpI,KAC1C3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKi0B,8BAA8BpI,EAC9C,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUkM,8BAA8B/H,GACpC,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMAwH,iBAAiB/G,EAAsBxf,GACnC,IAAIyd,EAAOprB,KAAK+qB,QAAU,kDAC1B,GAAmD,MAAjBoC,EAC9B,MAAM,IAAIvE,MAAM,iDACpBwC,EAAOA,EAAK9P,QAAQ,iBAAkB+R,mBAAmB,GAAKF,IAC9D/B,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKm0B,wBAAwBtI,KACpC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKm0B,wBAAwBtI,EACxC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUoM,wBAAwBjI,GAC9B,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMA0H,iBAAiB9C,EAA8B3jB,GAC3C,IAAIyd,EAAOprB,KAAK+qB,QAAU,0DAC1B,GAAmE,MAAzBuG,EACtC,MAAM,IAAI1I,MAAM,yDACpBwC,EAAOA,EAAK9P,QAAQ,yBAA0B+R,mBAAmB,GAAKiE,IACtElG,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKq0B,wBAAwBxI,KACpC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKq0B,wBAAwBxI,EACxC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUsM,wBAAwBnI,GAC9B,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAKA4H,oBAAoBnH,EAAsBmE,GACtC,IAAIlG,EAAOprB,KAAK+qB,QAAU,6EAC1B,GAAmD,MAAjBoC,EAC9B,MAAM,IAAIvE,MAAM,iDAEpB,GADAwC,EAAOA,EAAK9P,QAAQ,iBAAkB+R,mBAAmB,GAAKF,IACK,MAAzBmE,EACtC,MAAM,IAAI1I,MAAM,yDACpBwC,EAAOA,EAAK9P,QAAQ,yBAA0B+R,mBAAmB,GAAKiE,IACtElG,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAKu0B,2BAA2B1I,KACvC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKu0B,2BAA2B1I,EAC3C,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUwM,2BAA2BrI,GACjC,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAKA8H,mBAAmBrH,EAAsBmE,GACrC,IAAIlG,EAAOprB,KAAK+qB,QAAU,4EAC1B,GAAmD,MAAjBoC,EAC9B,MAAM,IAAIvE,MAAM,iDAEpB,GADAwC,EAAOA,EAAK9P,QAAQ,iBAAkB+R,mBAAmB,GAAKF,IACK,MAAzBmE,EACtC,MAAM,IAAI1I,MAAM,yDACpBwC,EAAOA,EAAK9P,QAAQ,yBAA0B+R,mBAAmB,GAAKiE,IACtElG,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAKy0B,0BAA0B5I,KACtC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKy0B,0BAA0B5I,EAC1C,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU0M,0BAA0BvI,GAChC,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMAgI,gCAAgCnD,EAA0CD,GACtE,IAAIlG,EAAOprB,KAAK+qB,QAAU,8GAC1B,GAA2F,MAArCwG,EAClD,MAAM,IAAI3I,MAAM,qEAEpB,GADAwC,EAAOA,EAAK9P,QAAQ,qCAAsC+R,mBAAmB,GAAKkE,IACf,MAAzBD,EACtC,MAAM,IAAI1I,MAAM,yDACpBwC,EAAOA,EAAK9P,QAAQ,yBAA0B+R,mBAAmB,GAAKiE,IACtElG,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAK20B,uCAAuC9I,KACnD3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK20B,uCAAuC9I,EACvD,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU4M,uCAAuCzI,GAC7C,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAMAkI,qBAAqBrD,EAA0CD,GAC3D,IAAIlG,EAAOprB,KAAK+qB,QAAU,kGAC1B,GAA2F,MAArCwG,EAClD,MAAM,IAAI3I,MAAM,qEAEpB,GADAwC,EAAOA,EAAK9P,QAAQ,qCAAsC+R,mBAAmB,GAAKkE,IACf,MAAzBD,EACtC,MAAM,IAAI1I,MAAM,yDACpBwC,EAAOA,EAAK9P,QAAQ,yBAA0B+R,mBAAmB,GAAKiE,IACtElG,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAK60B,4BAA4BhJ,KACxC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK60B,4BAA4BhJ,EAC5C,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU8M,4BAA4B3I,GAClC,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAOAoI,aAAa3H,EAAsBpP,EAAuBC,GACtD,IAAIoN,EAAOprB,KAAK+qB,QAAU,+CAC1B,GAAmD,MAAjBoC,EAC9B,MAAM,IAAIvE,MAAM,iDAEpB,GADAwC,EAAOA,EAAK9P,QAAQ,iBAAkB+R,mBAAmB,GAAKF,IAClD,OAARpP,EACA,MAAM,IAAI6K,MAAM,uCAGpB,QAFiB1kB,IAAR6Z,IACLqN,GAAQ,OAASiC,mBAAmBtP,EAAM,GAAKA,EAAIgX,cAAgB,IAAM,KACjE,OAAR/W,EACA,MAAM,IAAI4K,MAAM,4CACH1kB,IAAR8Z,IACLoN,GAAQ,OAASiC,mBAAmBrP,EAAM,GAAKA,EAAI+W,cAAgB,IAAM,KAC7E3J,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKg1B,oBAAoBnJ,KAChC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKg1B,oBAAoBnJ,EACpC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUiN,oBAAoB9I,GAC1B,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAKAuI,OAAOC,EAA0BC,EAAuBC,GACpD,IAAIhK,EAAOprB,KAAK+qB,QAAU,uEAC1B,GAA2D,MAArBmK,EAClC,MAAM,IAAItM,MAAM,qDAEpB,GADAwC,EAAOA,EAAK9P,QAAQ,qBAAsB+R,mBAAmB,GAAK6H,IACf,MAAjBC,EAC9B,MAAM,IAAIvM,MAAM,iDAEpB,GADAwC,EAAOA,EAAK9P,QAAQ,iBAAkB+R,mBAAmB,GAAK8H,IACD,MAAtBC,EACnC,MAAM,IAAIxM,MAAM,sDACpBwC,EAAOA,EAAK9P,QAAQ,sBAAuB+R,mBAAmB,GAAK+H,IACnEhK,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKq1B,cAAcxJ,KAC1B3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKq1B,cAAcxJ,EAC9B,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUsN,cAAcnJ,GACpB,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAKA4I,aAAanI,EAAsB+H,GAC/B,IAAI9J,EAAOprB,KAAK+qB,QAAU,gEAC1B,GAAmD,MAAjBoC,EAC9B,MAAM,IAAIvE,MAAM,iDAEpB,GADAwC,EAAOA,EAAK9P,QAAQ,iBAAkB+R,mBAAmB,GAAKF,IACH,MAArB+H,EAClC,MAAM,IAAItM,MAAM,qDACpBwC,EAAOA,EAAK9P,QAAQ,qBAAsB+R,mBAAmB,GAAK6H,IAClE9J,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKu1B,oBAAoB1J,KAChC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKu1B,oBAAoB1J,EACpC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEUwN,oBAAoBrJ,GAC1B,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAKA8I,WAAWrI,EAAsBmE,GAC7B,IAAIlG,EAAOprB,KAAK+qB,QAAU,mEAC1B,GAAmD,MAAjBoC,EAC9B,MAAM,IAAIvE,MAAM,iDAEpB,GADAwC,EAAOA,EAAK9P,QAAQ,iBAAkB+R,mBAAmB,GAAKF,IACK,MAAzBmE,EACtC,MAAM,IAAI1I,MAAM,yDACpBwC,EAAOA,EAAK9P,QAAQ,yBAA0B+R,mBAAmB,GAAKiE,IACtElG,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAKy1B,kBAAkB5J,KAC9B3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAKy1B,kBAAkB5J,EAClC,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU0N,kBAAkBvJ,GACxB,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAKAgJ,QAAQvI,EAAsBmE,GAC1B,IAAIlG,EAAOprB,KAAK+qB,QAAU,0EAC1B,GAAmD,MAAjBoC,EAC9B,MAAM,IAAIvE,MAAM,iDAEpB,GADAwC,EAAOA,EAAK9P,QAAQ,iBAAkB+R,mBAAmB,GAAKF,IACK,MAAzBmE,EACtC,MAAM,IAAI1I,MAAM,yDACpBwC,EAAOA,EAAK9P,QAAQ,yBAA0B+R,mBAAmB,GAAKiE,IACtElG,EAAOA,EAAK9P,QAAQ,QAAS,IAE7B,IAAI+P,EAAiB,CACjBC,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,MAAOP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAC/D7rB,KAAK21B,eAAe9J,KAC3B3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK21B,eAAe9J,EAC/B,OAAS9D,GACL,SAAOkE,KAAiBlE,EAC5B,CAEiC,GAE7C,CAEU4N,eAAezJ,GACrB,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAQAkJ,eAAeC,EAA4BC,EAAgDrU,EAAkC9T,GACzH,IAAIyd,EAAOprB,KAAK+qB,QAAU,wDAC1B,GAA+D,MAAvB8K,EACpC,MAAM,IAAIjN,MAAM,uDAEpB,GADAwC,EAAOA,EAAK9P,QAAQ,uBAAwB+R,mBAAmB,GAAKwI,IACjC,OAA/BC,EACA,MAAM,IAAIlN,MAAM,8DAGpB,QAFwC1kB,IAA/B4xB,IACL1K,GAAQ,8BAAgCiC,mBAAmB,GAAKyI,GAA8B,KAC7E,OAAjBrU,EACA,MAAM,IAAImH,MAAM,qDACM1kB,IAAjBud,IACL2J,GAAQ,gBAAkBiC,mBAAmB,GAAK5L,GAAgB,KACtE2J,EAAOA,EAAK9P,QAAQ,QAAS,IAI7B,IAAI+P,EAAiB,CACjB1d,KAHa0J,KAAKC,UAAU3J,GAI5B2d,QAAS,WACTC,aAAc,OACdC,QAAS,IAAIC,KAAY,CACrB,eAAgB,mBAChBC,OAAU,gBAIlB,OAAO1rB,KAAKirB,KAAKU,QAAQ,OAAQP,EAAMC,GAAUnkB,QAAK0kB,KAAqBC,GAChE7rB,KAAK+1B,sBAAsBlK,KAClC3kB,QAAK6kB,KAAkBF,IACvB,KAAIA,aAAqBG,MAOrB,SAAOC,KAAiBJ,GANxB,IACI,OAAO7rB,KAAK+1B,sBAAsBlK,EACtC,OAAS9D,IACL,SAAOkE,KAAiBlE,GAC5B,CAEiC,GAE7C,CAEUgO,sBAAsB7J,GAC5B,MAAM9jB,EAAS8jB,EAAS9jB,OAClB+jB,EACFD,aAAoBE,KAAeF,EAASve,KAC3Cue,EAAiB/lB,iBAAiBkmB,KAAQH,EAAiB/lB,WAAQjC,EAExE,IAAIooB,EAAgB,GAAI,GAAIJ,EAASV,QAAW,QAASnnB,KAAO6nB,EAASV,QAAQ5W,OAAU0X,EAASjoB,GAAO6nB,EAASV,QAAQvU,IAAI5S,GAChI,OAAe,MAAX+D,EACOmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIC,EAAiB,KACrBA,SAA8B,KAAlBD,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,mBAAgB,EAClFuB,MAAcD,EAAS,IAEZ,MAAXrkB,EACAmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,IAC1D,IAAIwC,EAAiB,KACrBA,SAA8B,KAAlBxC,EAAuB,KAAOnV,KAAKoM,MAAM+I,EAAexsB,KAAKmrB,kBAClEwB,EAAe,cAAevkB,EAAQokB,EAAeF,EAAU0C,EAAS,IAE7D,MAAX5mB,GAA6B,MAAXA,EAClBmkB,EAAWJ,GAAcjlB,QAAK0kB,KAAqBY,GACnDG,EAAe,uCAAwCvkB,EAAQokB,EAAeF,MACnF,EAECI,MAAc,KACzB,CAAC3sB,SAAAC,KAAA,UAAAwP,EAAA,mFAx3HQwb,EAAY9qB,KAAA,EAAAuK,MAKDurB,MAAU,CAAAvrB,MAAwC8f,EAAY0L,UAAA,IAAA91B,OAAAC,4BAAAqE,aAAA1E,SAAAC,KAAA,WAAAwP,EAAA,sFALzEwb,EAAYtmB,WAFT,gBAEHsmB,CAAa,gGAAbA,EAAYnpB,WAAA,OAHxB4C,mBAAW,CACRC,WAAY,4DAOCqM,eAAOilB,wCAA+BE,kBAAYnlB,eAAOwZ,SA+tMpE,MAAO4L,WAAyBvN,MAOlC7mB,YAAYie,EAAiB5X,EAAgB8jB,EAAkBV,EAAkC9oB,GAC7FwoB,QASMlrB,KAAAo2B,oBAAqB,EAP3Bp2B,KAAKggB,QAAUA,EACfhgB,KAAKoI,OAASA,EACdpI,KAAKksB,SAAWA,EAChBlsB,KAAKwrB,QAAUA,EACfxrB,KAAK0C,OAASA,CAClB,CAIA,yBAAO0zB,CAAmBC,GACtB,OAAkC,IAA3BA,EAAID,kBACf,EAGJ,SAASzJ,EAAe3M,EAAiB5X,EAAgB8jB,EAAkBV,EAAkC9oB,GACzG,OAAe,EACJupB,KADI,MAAXvpB,EACwBA,EAEA,IAAIyzB,GAAiBnW,EAAS5X,EAAQ8jB,EAAUV,EAAS,MACzF,CAEA,SAASe,EAAW+J,GAChB,OAAO,IAAIrsB,IAAoBC,IAC3B,GAAKosB,EAGE,CACH,IAAIC,EAAS,IAAIC,WACjBD,EAAOE,OAAS7tB,IACZsB,EAASlE,KAAM4C,EAAMzI,OAAeuC,QACpCwH,EAAST,UAAQ,EAErB8sB,EAAOG,WAAWJ,EACtB,MATIpsB,EAASlE,KAAK,IACdkE,EAAST,UAQb,EAER,+GClzMM,SAAUktB,EAAeC,EAAc,QAC3C,MAAMC,EAAeC,OAAOp3B,KAAoB,IAChD,GAAIm3B,GAAgB,EAAK,OAVrB,SAAUE,EAAqBH,GACnC,OAAOA,GACL,IAAK,KAAM,MAAO,qBAClB,IAAK,MAAO,MAAO,yBACnB,QAAS,MAAO,wBAEpB,CAIkCG,CAAqBH,GACrD,OAAOA,GACL,IAAK,KAAM,MAAO,QAAQC,IAC1B,IAAK,MAAO,MAAO,OAAOA,IAC1B,QAAS,MAAO,QAAQA,IAE5B,CAGO,MAAMG,EAA6B,CACxC,CACEC,OAAQ,iCACR33B,KAAMq3B,EAAe,QACrBO,YAAa,OACbC,aAAa,EACbpQ,YAAa,mBAEf,CACEkQ,OAAQ,oCACR33B,KAAMq3B,EAAe,MACrBO,YAAa,KACbC,aAAa,EACbpQ,YAAa,iBAEf,CACEkQ,OAAQ,qCACR33B,KAAMq3B,EAAe,OACrBO,YAAa,MACbC,aAAa,EACbpQ,YAAa,kBAEf,CACEkQ,OAAQ,0BACRC,YAAa,QACb53B,KAAMq3B,EAAe,OACrBQ,aAAa,EACbpQ,YAAa,mBAmCqBiQ,EACnC50B,OAAO,CAACC,EAAKu0B,SAAcv0B,EAAK,CAACu0B,EAAIt3B,MAAOs3B,IAAuB,2BC/E/D,IAAMQ,EAAY,MAAnB,MAAOA,EACXr1B,YAAoBs1B,GAAAr3B,KAAAq3B,iBAAmC,CAEvDC,aAAavhB,EAAcwhB,EAAwB,MACjD,IAAIC,EACJx3B,KAAKq3B,gBAAgBnS,OAAOnP,GAASyQ,KAAMrP,IACzCqgB,EAAWrgB,EAGXqgB,EAASC,eAAejR,KAAK,KACvB+Q,GACFA,GAAS,GAINC,EAASE,WAEpB,CAEMC,kBAAkB5hB,EAAcwhB,EAAwB,MAAI,IAAApyB,EAAAnF,KAAA,SAAAoF,KAAA,YAChE,MAAMoyB,QAAiBryB,EAAKkyB,gBAAgBnS,OAAOnP,SAC7CyhB,EAASE,gBACTF,EAASC,eACXF,GACFA,GACD,EAN+D,EAOlE,CAACx3B,SAAAC,KAAA,UAAAwE,EAAA,mFA1BU4yB,EAAYl3B,KAAA,EAAAuK,MAAAC,OAAAvK,OAAAC,4BAAAqE,aAAA1E,SAAAC,KAAA,WAAAwE,EAAA,sFAAZ4yB,EAAY1yB,WAFX,gBAED0yB,CAAY,gGAAZA,EAAYv1B,WAAA,OAHxB4C,mBAAW,CACVC,WAAY,4DCIP,MAAMmmB,EAAc,8BAMrB,SAAUD,EAAoBvmB,GAClC,MAAMuzB,EAAOztB,OAAOtG,SAAS+zB,KAC7B,IAAIlN,EAAiB,iCACrB,GAAImN,KAAUC,mBACZpN,EAAiBhJ,aAAa6B,QAAQlf,IAAQ,sCAE9C,OAAQuzB,GACN,IAAK,iBAAkBlN,EAAiB,0BAA2B,MACnE,IAAK,iBAAkBA,EAAiBhJ,aAAa6B,QAAQlf,IAAQ,qCAAsC,MAC3G,IAAK,qBAAsBqmB,EAAiB,iCAAkC,MAC9E,QAGIA,EAFEkN,EAAKG,WAAW,cAAgBH,EAAKG,WAAW,aAEjCrW,aAAa6B,QAAQlf,IAAQ,qCAE7B,eAAeuzB,IAKxC,OAAOlN,CACT,CAOO,IAAMsN,EAAe,MAAtB,MAAOA,EAUXj2B,YACUk2B,EACAnzB,GADA9E,KAAAi4B,eACAj4B,KAAA8E,UAVO9E,KAAAk4B,WAAarN,EAGb7qB,KAAAm4B,OAAwBnB,EACtC50B,OAAO,CAACC,EAAKu0B,SAAcv0B,EAAK,CAACu0B,EAAIt3B,MAAOs3B,IAAuB,IAE/D52B,KAAAo4B,eAA6Bp4B,KAAKq4B,mBAKrC,CAGJC,eACE,OAAOt4B,KAAKm4B,OAAO,yBAAyBlB,SAAWz3B,IAAYy3B,MACrE,CAGAoB,oBACE,OAAOrB,EAAauB,KAAKC,GAAWA,EAAQvB,SAAWz3B,IAAYy3B,SAAWD,EAAa,EAC7F,CAGOyB,gBACL,MAAMC,EAAU14B,KAAKo4B,gBAAgBO,iBAA2D,YAAxC34B,KAAKo4B,eAAeO,gBAAgC34B,KAAKo4B,eAAeO,qBAAkBz0B,EAC5I00B,EAAe,CACnBC,SAAU,yBACVC,OAAQ,iBACRC,UAAW,kBAAkB/4B,KAAKo4B,eAAelB,gBAAgBl3B,KAAKo4B,eAAe94B,SAAYo5B,EAAW,YAAcA,EAAU,IAAO,KAC3I1Y,QAAS,GACTgZ,QAAS,CACP,CAAE3lB,KAAM,SAAUwlB,SAAU,WAC5B,CACExlB,KAAM,KACNwlB,SAAU,YACV/Y,QAAUmZ,GAA4Bj5B,KAAKk5B,gBAAgBD,KAG/D7oB,OAAQ4mB,EAAarxB,IAAI6yB,KACvB/1B,KAAM,QACN02B,MAAO,GAAGX,EAAQtB,gBAAgBsB,EAAQl5B,QAC1CqM,MAAO6sB,EACPY,QAASZ,EAAQvB,SAAWz3B,IAAYy3B,WAG5Cj3B,KAAKi4B,aAAaX,aAAasB,EACjC,CAKQM,gBAAgBG,GACtB3X,aAAaC,QAAQ3hB,KAAKk4B,WAAYmB,EAAgBpC,QACtDpzB,SAAS6M,QACX,CAAC3Q,SAAAC,KAAA,UAAAwE,EAAA,mFAzDUwzB,EAAe93B,KAAA,EAAAuK,MAAAC,GAAA,CAAAD,MAAAE,OAAAxK,OAAAC,4BAAAqE,aAAA1E,SAAAC,KAAA,WAAAwE,EAAA,sFAAfwzB,EAAetzB,WAHd,gBAGDszB,CAAe,gGAAfA,EAAen2B,WAAA,OAJ3B4C,mBAAW,CACVC,WAAY,6HC9BP,IAAM6H,EAAiB,MAAxB,MAAOA,EACXxK,cAAgB,CAAChC,SAEVC,KAAAs5B,WAAa,WAKpB,kBAAOtqB,CAAYnP,EAAc05B,EAAe,QAAS92B,EAAoC,QAC3F,IAAK5C,EAAQ,OAAO,KACpB,MAAO25B,EAAMC,GAAUF,EAAOA,EAAKtqB,MAAM,KAAKtJ,IAAKkkB,GAAQiN,OAAOjN,IAAQ,CAAC,EAAG,GACxEpd,EAAeS,KAASwsB,QAAQ75B,GAAMolB,IAAI,CAAEuU,OAAMC,WAExD,OAAQh3B,GACN,IAAK,WAAY,OAAOgK,EACxB,IAAK,MAAO,OAAOA,EAAaktB,MAAM,CAAEC,eAAe,IACvD,QAAS,OAAOntB,EAAaotB,QAAQC,WAEzC,CAEA,oBAAOttB,EAAgB3M,OAAM4M,iBAC3B,IAAKA,EAAgB,OAAO,KAC5B,MAAMstB,EAAQ7sB,KAASC,MACvB,IAAKV,EAAgB,OAAOS,KAASC,MAAMC,KAAK,CAAEC,MAAO,IAAKE,SAAS,SACvE,MAAOisB,EAAMC,GAAUhtB,EAAawC,MAAM,KAAKtJ,IAAKkkB,GAAQiN,OAAOjN,IAC7DmQ,EAAa9sB,KAASwsB,QAAQ75B,GAAMolB,IAAI,CAAEuU,OAAMC,WAAUrsB,KAAK,CAAEC,MAAO,IAC9E,OAAI2sB,EAAWC,cAAgBF,EAAME,YAC5BD,EAAWzsB,SAAS,SAEtBL,KAASwsB,QAAQ75B,GAAMolB,IAAI,CAAEuU,KAAM,GAAIC,OAAQ,KAAMlsB,SAAS,QACvE,CAMA,cAAO2sB,CAAQztB,GAIb,OAHaS,KAASwsB,QAAQjtB,EAAc,CAAE0tB,KAAM,QAASC,UAAU7sB,SACrEhB,EAAkB+sB,WAGtB,CAOA,0BAAOe,CAAoBrsB,GAIzB,OAHad,KAASwsB,QAAQ1rB,EAAU,CAAEmsB,KAAM,QAASC,UAAU7sB,SACjE,aAGJ,CAOA,kBAAO+sB,CAAY7tB,GAIjB,OAHaS,KAASwsB,QAAQjtB,EAAc,CAAE0tB,KAAM,QAASC,UAAU7sB,SACrE,UAGJ,CAMA,cAAOgtB,CAAQ9tB,GAEb,OADaA,EAAeS,KAASwsB,QAAQjtB,EAAc,CAAE0tB,KAAM,QAASC,UAAU7sB,SAAS,SAAW,IAE5G,CAMA,qBAAOitB,CAAe/tB,GAEpB,OADaA,EAAeS,KAASwsB,QAAQjtB,EAAc,CAAE0tB,KAAM,QAASC,UAAU7sB,SAAS,UAAY,IAE7G,CAEA,yBAAOktB,CAAmBC,GACxB,OAAOxtB,KAASwsB,QAAQgB,GAAUntB,SAAShB,EAAkB+sB,WAC/D,CAMA,cAAOqB,CAAQluB,GACb,OAAOA,EAAeS,KAASwsB,QAAQjtB,EAAc,CAAE0tB,KAAM,QAASC,UAAU7sB,SAAS,MAAQ,IACnG,CAMA,gBAAOqtB,CAAUnuB,GACf,OAAOA,EAAeS,KAASwsB,QAAQjtB,EAAc,CAAE0tB,KAAM,QAASC,UAAU7sB,SAAS,SAAW,IACtG,CAMA,gBAAOstB,CAAUpuB,GACf,OAAOA,EAAeS,KAASwsB,QAAQjtB,EAAc,CAAE0tB,KAAM,QAASC,UAAU7sB,SAAS,MAAQ,IACnG,CAMA,kBAAOutB,CAAYruB,GACjB,OAAOA,EAAeS,KAASwsB,QAAQjtB,EAAc,CAAE0tB,KAAM,QAASC,UAAU7sB,SAAS,KAAO,IAClG,CAEA,aAAOwtB,CAAO7vB,GAGZ,MAAQoB,mBAAkBI,qBAAsBxB,EAC1CrL,EAAOqN,KAASwsB,QAAQxuB,EAAWiB,WAAY,CAAE6uB,SAAS,IAC1DC,EAAS3uB,EAAmBzM,EAAKolB,IAAI1Y,EAAkB2uB,aAAa5uB,IAAqB,KACzF6uB,EAAUzuB,EAAoB7M,EAAKolB,IAAI1Y,EAAkB2uB,aAAaxuB,IAAsB,KAClG,MAAO,CACLsB,SAAUnO,EAAKg6B,QAAQC,WACvB/sB,WAAYkuB,GAAQpB,QAAQC,YAAc,KAC1CrsB,YAAa0tB,GAAStB,QAAQC,YAAc,KAEhD,CAEA,mBAAOoB,CAAa3B,GAClB,IAAKA,EAAQ,OAAO,KACpB,MAAOlsB,EAAOsO,GAAW4d,EAAKtqB,MAAM,KACpC,MAAO,CAAEuqB,KAAM1C,OAAOzpB,GAAQosB,OAAQ3C,OAAOnb,GAC/C,CAAC5b,SAAAC,KAAA,UAAAwP,EAAA,mFA3IUjD,EAAiBrM,KAAA,GAAAC,OAAAC,4BAAAqE,aAAA1E,SAAAC,KAAA,WAAAwP,EAAA,sFAAjBjD,EAAiB7H,WAFhB,gBAED6H,CAAiB,gGAAjBA,EAAiB1K,WAAA,OAH7B4C,mBAAW,CACVC,WAAY,sICLd,MAAM02B,EAA8B,CAClC,CAAEC,aAAc,EAAG/7B,KAAM,YAAag8B,QAAS,iBAAkBC,KAAM,UAAWC,UAAW,WAC7F,CAAEH,aAAc,EAAG/7B,KAAM,SAAUi8B,KAAM,SAAUD,QAAS,cAAeE,UAAW,WACtF,CAAEH,aAAc,EAAG/7B,KAAM,YAAai8B,KAAM,QAASD,QAAS,iBAAkBE,UAAW,WAC3F,CAAEH,aAAc,EAAG/7B,KAAM,WAAYi8B,KAAM,eAAgBD,QAAS,gBAAiBE,UAAW,YAGrFC,EAAW,CACtBC,KAAM,IAAIN,GACV9yB,KAAM,CACJhJ,KAAM87B,EAAUh5B,OAAO,CAACC,EAAKiF,SAAejF,EAAK,CAACiF,EAAKhI,MAAUgI,IAAS,IAC1EE,GAAI4zB,EAAUh5B,OAAO,CAACC,EAAKiF,SAAejF,EAAK,CAACiF,EAAK+zB,cAAkB/zB,IAAS,IAChF+zB,aAAcD,EAAUh5B,OAAO,CAACC,EAAKiF,SAAejF,EAAK,CAACiF,EAAK+zB,cAAkB/zB,IAAS,KAE5FgH,QAAU9G,GAAe4zB,EAAU7C,KAAKnwB,GAAUA,EAAOizB,eAAiB7zB,GAC1Em0B,UAAYr8B,GAAiB87B,EAAU7C,KAAKnwB,GAAUA,EAAO9I,OAASA,kBCPjE,IAAMs8B,EAAa,MAApB,MAAOA,EAOX75B,YACmB+C,GAAA9E,KAAA8E,UAGjB9E,KAAK6N,0BAA0B3G,QAAK4iB,KAAK,IAAIjW,YAC7C7T,KAAK67B,0BAA0B30B,QAAK4iB,KAAK,IAAIjW,YAC7C7T,KAAK87B,qBAAqB50B,QAAK4iB,KAAK,IAAIjW,YACxC7T,KAAK+7B,iBAAiB70B,QAAK4iB,KAAK,IAAIjW,WACtC,CAEQmoB,SAAeN,EAAar3B,GAClC,OAAOq3B,EAAKt5B,OAAO,CAACC,EAAKiF,SAAejF,EAAK,CAACiF,EAAKjD,IAAOiD,IAAS,GACrE,CAEQ20B,UAAgBP,EAAap8B,EAAc48B,GACjD,MAAO,CACLR,OACApzB,KAAM,CAAC,OAAQ4zB,GAAS95B,OAAO,CAACC,EAAKgC,SACvBhC,EAAK85B,CAAC93B,GAAMrE,KAAKg8B,SAASN,EAAc,SAARr3B,EAAiB/E,EAAO+E,KACnE,IACHiK,QAAU9G,GAAek0B,EAAKnD,KAAKjxB,GAAQA,EAAK40B,IAAY10B,GAC5Dm0B,UAAYr8B,GAAiBo8B,EAAKnD,KAAKjxB,GAAQA,EAAKhI,OAASA,GAAQgI,EAAK80B,QAAU98B,GAExF,CAMAy8B,eAAeM,GAAiB,GAC9B,OAAIr8B,KAAKsyB,cAAgB+J,KAAgBz0B,MAAG5H,KAAKsyB,aAC1CtyB,KAAK8E,QAAQwtB,cAAcprB,QAChCvB,KAAI22B,GAAOt8B,KAAKi8B,UAAsBK,EAAK,OAAQ,cAAW,EAC9D9oB,KAAI8oB,GAAOt8B,KAAKsyB,YAAcgK,GAElC,CAMAzuB,wBAAwBwuB,GAAiB,GACvC,OAAIr8B,KAAKwyB,uBAAyB6J,KAAgBz0B,MAAG5H,KAAKwyB,sBACnDxyB,KAAK8E,QAAQ0tB,uBAAuBtrB,QACzCvB,KAAI22B,GAAOt8B,KAAKi8B,UAA+BK,EAAK,OAAQ,uBAAoB,EAChF9oB,KAAI8oB,GAAOt8B,KAAKwyB,qBAAuB8J,GAE3C,CAMAT,wBAAwBQ,GAAiB,GACvC,OAAIr8B,KAAK0yB,uBAAyB2J,KAAgBz0B,MAAG5H,KAAK0yB,sBACnD1yB,KAAK8E,QAAQ4tB,uBAAuBxrB,QACzCvB,KAAI22B,GAAOt8B,KAAKi8B,UAA+BK,EAAK,OAAQ,uBAAoB,EAChF9oB,KAAI8oB,GAAOt8B,KAAK0yB,qBAAuB4J,GAE3C,CAOAR,mBAAmBO,GAAQ,GAOzB,SAAOz0B,MAAG6zB,EACZ,CAAC17B,SAAAC,KAAA,UAAAwE,EAAA,mFAjFUo3B,EAAa17B,KAAA,EAAAuK,MAAAC,OAAAvK,OAAAC,4BAAAqE,aAAA1E,SAAAC,KAAA,WAAAwE,EAAA,sFAAbo3B,EAAal3B,WAFZ,gBAEDk3B,CAAa,gGAAbA,EAAa/5B,WAAA,OAHzB4C,mBAAW,CACVC,WAAY,gLCCP,IAAM63B,EAAyB,MAAhC,MAAOA,EACX,iBAAWC,GACT,MAAmC,QAA5B3E,KAAU4E,aACnB,CAEA16B,YACU26B,EACA9W,GADA5lB,KAAA08B,SACA18B,KAAA4lB,UACN,CAESjC,UAAUgZ,GAAyB,IAAAx3B,EAAAnF,KAAA,SAAAoF,KAAA,YAE9C,OADAc,QAAQ4O,IAAI,4BACR3P,EAAKq3B,cAAsBz0B,QAAQC,UAChC7C,EAAKu3B,OAAO/Y,UAAU,CAC3B6U,QAASmE,EAAOnE,QAChBoE,MAAOD,EAAOC,OACb,EAN2C,EAOhD,CAEaC,mBAAgB,IAAAzjB,EAAApZ,KAAA,SAAAoF,KAAA,YAE3B,OADAc,QAAQuT,MAAM,2CACVL,EAAKojB,cAAsB,CAAEI,MAAO,IAAKpE,QAAS,kBAC/Cpf,EAAKsjB,OAAOG,kBAAmB,EAHX,EAI7B,CAEOC,oBACL,OAAI98B,KAAKw8B,cAAsBz0B,QAAQC,aAAQ9D,GACxClE,KAAK08B,OAAOI,mBACrB,CAEaC,uBAAoB,IAAApjB,EAAA3Z,KAAA,SAAAoF,KAAA,YAC/B,OAAIuU,EAAK6iB,cAAsB,UACR7iB,EAAK+iB,OAAOK,wBACnBp3B,IAAIq3B,GAAMrjB,EAAKsjB,gBAAgBD,IAAK31B,OAAO61B,GAAW,MAANA,EAAqD,EAHtF,EAIjC,CAEaC,iBAAc,IAAAC,EAAAp9B,KAAA,SAAAoF,KAAA,YACzB,GAAIg4B,EAAKZ,cAAe,MAAO,CAAEa,WAAW,GAC5C,MAAMC,QAAYF,EAAKV,OAAOS,iBAC9B,MAAO,CACLE,UAAWC,EAAID,UACf3E,QAAS4E,EAAIC,MACbC,WAAYF,EAAIvpB,SAChB0pB,4BAA6BH,EAAIG,4BACjCtrB,IAAKmrB,EAAInrB,IACT,EATuB,EAU3B,CAEaurB,KACX7f,EACA8f,GAAyC,IAAAC,EAAA59B,KAAA,SAAAoF,KAAA,YAGzC,GAAIw4B,EAAKpB,cAAe,OACxB,MAAMqB,QAAqBD,EAAKlB,OAAOgB,KAAK,CAAEI,aAAcjgB,GAAU8f,GACtE,OAAOC,EAAKX,gBAAgBY,EAAc,EALD,EAM3C,CAEQZ,gBAAgBlpB,GACtB,OAAOA,EACH,CACAykB,QAASzkB,EAASykB,QAClBE,QAAS3kB,EAAS2kB,QAClBqF,UAAWhqB,EAASgqB,UACpBC,kBAAmBjqB,EAASiqB,kBAC5BC,kBAAmBlqB,EAASkqB,wBAE5B/5B,CACN,CAACnE,SAAAC,KAAA,UAAAwE,EAAA,mFApEU+3B,EAAyBr8B,KAAA,EAAAuK,MAAAC,KAAA,CAAAD,MAAAE,OAAAxK,OAAAC,4BAAAqE,aAAA1E,SAAAC,KAAA,WAAAwE,EAAA,sFAAzB+3B,EAAyB73B,WAFxB,gBAED63B,CAAyB,gGAAzBA,EAAyB16B,WAAA,OAHrC4C,mBAAW,CACVC,WAAY,0FCOR,MAAO6M,EACXxR,SACcC,KAAAk+B,gBAAkBx+B,KAMhC,mBAAIy+B,GAA6B,OAAOn+B,KAAKo+B,gBAAkB,CAC/D,mBAAID,CAAgBE,GAClBr+B,KAAKo+B,iBAAmBC,EACxBr+B,KAAKs+B,kBAAkBt4B,KAAKq4B,EAC9B,CAcAt8B,YACUw8B,EACAC,EACDlpB,EACAmpB,EACA7Y,GAJC5lB,KAAAu+B,kBACAv+B,KAAAw+B,iBACDx+B,KAAAsV,sBACAtV,KAAAy+B,cACAz+B,KAAA4lB,WA1BC5lB,KAAAo+B,kBAAmB,EACZp+B,KAAAs+B,kBAAoB,IAAI/Z,IAAyBvkB,KAAKo+B,kBACvDp+B,KAAA0+B,iBAAwC1+B,KAAKs+B,kBAAkB50B,eAQ/E1J,KAAA2+B,aAAiC,KACjB3+B,KAAA+R,cAAgB,IAAIwS,IAAyC,MAC7EvkB,KAAA4+B,iBAA2B,EAG3B5+B,KAAA6+B,4BAA6B,EAC7B7+B,KAAA8+B,eAAiB,GACjB9+B,KAAA++B,wBAAyB,EACzB/+B,KAAAo4B,eAAyB,EAUzB,CAEA,mBAAI4G,GACF,OAAOh/B,KAAK2+B,aAAe3+B,KAAK2+B,aAAaZ,UAAa/9B,KAAKi/B,eAAeC,kBAAoB,MACpG,CACA,mBAAIvG,GACF,OAAO34B,KAAK2+B,aAAe3+B,KAAK2+B,aAAajG,QAAW14B,KAAKi/B,eAAeE,gBAAkB,SAChG,CACA,6BAAIC,GACF,OAAOp/B,KAAK2+B,aAAe3+B,KAAK2+B,aAAaV,kBAAqBj+B,KAAKi/B,eAAehB,mBAAqB,SAC7G,CACA,gBAAInsB,GACF,OAAOzS,IAAUM,aACnB,CACA,aAAI0/B,GACF,OAAOhgC,IAAUQ,IACnB,CAGAy/B,WAAW9G,GACLx4B,KAAKo4B,gBAAkBI,IACzBx4B,KAAKo4B,eAAiBI,EACtBx4B,KAAKi/B,mBAAgB/6B,EACrBlE,KAAK2+B,kBAAez6B,EACpBlE,KAAK+R,cAAc/L,KAAK,MACxBhG,KAAK4+B,iBAAkB,EAE3B,CAGAW,oBAAoBC,GAClBx/B,KAAKw/B,iBAAmBA,EAEpBx/B,KAAKw/B,kBACPx/B,KAAKy/B,mBAAmBz/B,KAAKo4B,eAEjC,CAEMsH,sBAAmB,IAAAv6B,EAAAnF,KAAA,SAAAoF,KAAA,YAEvB,GADAc,QAAQuT,MAAM,YAAM,8BAA+BtU,EAAK85B,eACpD95B,EAAKizB,iBAAmBjzB,EAAK85B,cAC7B,UAC8B95B,EAAKo5B,gBAAgB5a,UAAU,CAAEiZ,MAAOv9B,IAAUE,WAAYi5B,QAASrzB,EAAKizB,iBACxGjzB,EAAK85B,oBAAsB95B,EAAKo5B,gBAAgB1B,mBAChD32B,QAAQuT,MAAM,YAAM,qBAAsBtU,EAAK85B,cACjD,OAASh5B,GACPC,eAAQC,MAAMF,IACP,CACT,CAEJ,OAAO,CAAK,EAZW,EAazB,CAEM05B,qBAAqBC,GAAsB,GAAI,IAAAxmB,EAAApZ,KAAA,SAAAoF,KAAA,YACnD,GAAIyyB,KAAUC,sBAAwB1e,EAAKulB,cAAgBiB,GACzD,WACYxmB,EAAKsmB,yBACbtmB,EAAKulB,mBAAqBvlB,EAAKmlB,gBAAgBzB,oBAC/C1jB,EAAKrH,cAAc/L,KAAKoT,EAAKulB,cAC7BvlB,EAAKwlB,yBAA2BxlB,EAAKmlB,gBAAgBpB,mBAAmBE,UACxEn3B,QAAQuT,MAAM,YAAM,kCAAmCL,EAAKulB,cAEhE,OAAS14B,GACPC,QAAQC,MAAM,oEAAqEF,EACrF,CACD,EAZkD,EAarD,CAEMw5B,mBAAmBjH,GAAgB,IAAA7e,EAAA3Z,KAAA,SAAAoF,KAAA,YAEvC,IAAKyyB,KAAUC,mBAAoB,OAEnC,GAAIU,IAAuB,gBAAXA,GAAwC,IAAXA,GAE3C,YADAtyB,QAAQ6f,KAAK,0DAKfpM,EAAK2lB,WAAW9G,GAAW7e,EAAKye,gBAEhC,MAAMyH,QAAgBlmB,EAAK8kB,YAAYvZ,OAAO,CAC5C4a,QAAS,WACT9f,QAAS,4BAGX,UACQ6f,EAAQnI,gBAGR/d,EAAKgmB,uBAEX,MAAM5B,EAAYpkB,EAAKqlB,gBAEvB,GAAIrlB,EAAKilB,gBAAiB,CACxB14B,QAAQ4O,IAAI,YAAM,2BAClB+qB,EAAQ7f,QAAU,0BAElB,MAAM+f,EAAYC,IAChBH,EAAQ7f,QAAU,qBAAqBggB,qCAAU,EAE7CC,QAAatmB,EAAK4kB,gBAAgBb,KAAK,OAAQqC,GACrD75B,QAAQuT,MAAM,2BAAqBwmB,GACnC/5B,QAAQuT,MAAM,+BAAyBskB,GAEnCkC,GAAQlC,IAAckC,EAAKlC,WAC7B73B,QAAQ4O,IAAI,yBACZ6E,EAAKglB,aAAesB,EACpBtmB,EAAK5H,cAAc/L,KAAKi6B,KAExB/5B,QAAQ4O,IAAI,oCACZ+qB,EAAQ7f,QAAU,yBAClB6f,EAAQrvB,UAEZ,MACEtK,QAAQ4O,IAAI,oCACZ+qB,EAAQ7f,QAAU,yBAClB6f,EAAQrvB,SAEZ,OAASvK,GACPC,QAAQC,MAAM,0BAA2BF,GACzC0T,EAAKrE,oBAAoBgV,QACvB,kEAEJ,SACEuV,EAAQrvB,SACV,CAAC,EAzDsC,EA0DzC,CAACzQ,SAAAC,KAAA,UAAAwE,EAAA,mFA/JU+M,EAAcrR,KAAA,EAAAuK,MAAAC,GAAA,CAAAD,MAAAE,KAAA,CAAAF,MAAAG,KAAA,CAAAH,MAAAqG,MAAA,CAAArG,MAAAqG,OAAA3Q,OAAAC,4BAAAqE,aAAA1E,SAAAC,KAAA,WAAAwE,EAAA,sFAAd+M,EAAc7M,WAFb,oGAED6M,EAAc1P,WAAA,OAH1B4C,mBAAW,CACVC,WAAY,mVCsEP,IAAMw7B,EAAY,MAAnB,MAAOA,EAAYngC,SAAAC,KAAA,UAAAmgC,EAAA,mFAAZD,EAAYhgC,KAAA,GAAAC,OAAAC,4BAAAC,WAAAN,SAAAC,KAAA,UAAAmgC,EAAA,oFAAZD,EAAYE,aAAA,CAxDrB9wB,IACA6L,IACAnK,IACA2B,IACAtC,IACA6K,IACAhG,IACA+G,IAEAuE,IACAU,KAAoBtf,QAAA,CA4BpBy+B,KACAC,KACAC,KACAC,KACAC,KACA3gC,IACA4gC,KACAC,KAEAC,KAEAC,MAAgBvgC,QAAA,CAlChBggC,KACAC,KACAzgC,IACA2gC,KACAC,KACAC,KAEAG,KACAxxB,IACA6L,IACAnK,IACA2B,IACAuI,IACAhG,IACA+G,IAEAuE,IACAogB,KACA1f,IAEA2f,QAAgB9gC,SAAAC,KAAA,UAAAmgC,EAAA,oFAqBPD,EAAYvwB,UALZ,IACToxB,SAAkBC,SAAsB,EAAIC,UAAkB,EAC9DC,SACDt/B,QAAA,CAhBCy+B,KACAC,KACAC,KACAC,KACAC,KACA3gC,IACA4gC,KACAC,KA9BAL,KACAC,KACAzgC,IACA2gC,KACAC,KACAC,KAEAG,eAkCSZ,CAAY,gGAAZA,EAAYr+B,WAAA,OA3DxBxB,iBAAS,CACR+/B,aAAc,CAEZ9wB,IACA6L,IACAnK,IACA2B,IACAtC,IACA6K,IACAhG,IACA+G,IAEAuE,IACAU,KAGF5gB,QAAS,CAEPggC,KACAC,KACAzgC,IACA2gC,KACAC,KACAC,KAEAG,KACAxxB,IACA6L,IACAnK,IACA2B,IACAuI,IACAhG,IACA+G,IAEAuE,IACAogB,KACA1f,IAEA2f,MAEFj/B,QAAS,CACPy+B,KACAC,KACAC,KACAC,KACAC,KACA3gC,IACA4gC,KACAC,KAEAC,KAEAC,MAEFlxB,UAAW,IACToxB,SAAkBC,SAAsB,EAAIC,UAAkB,EAC9DC,4CC5EE,SAAUvrB,EACdiB,GAEA,GAAIA,EAAQjL,MAAO,CACjB,MAAMw1B,KAASvqB,EAAQjL,MAAMhI,UAAYy9B,KAAKC,IAAIzqB,EAAQjL,MAAMhI,UAAY,GACtE29B,KAAS1qB,EAAQjL,MAAM5H,WAAaq9B,KAAKC,IAAIzqB,EAAQjL,MAAM5H,WAAa,GAG9E,OADco9B,GAAUG,GADT1qB,EAAQjL,MAAMvI,KAAOwT,EAAQjL,MAAMvI,IAAIwD,OAAS,EAEhD,KAAO,CAAE26B,aAAc,CAAEjjB,OAAO,EAAO3S,MAAOiL,EAAQjL,OACvE,CACA,OAAO,IACT,gECdO,MAAMnM,EAAc,CACzBgiC,YAAY,EAEZC,QAAS,cACTC,SAAU,MACV9vB,YAAa,eACbqlB,OAAQ,iCACR13B,WAAY,WACZq9B,MAAO,yBAEP+E,iBAAkB,EAClB/X,cAAe,0CACflG,QAAS,CACPjZ,MAAO,mCACPuc,SAAS,EACTD,YAAa,kBACb7gB,QAAS,CAAE07B,SAAS,IAEtBhtB,KAAM,CACJxJ,YAAa,8BACbwW,MAAO,wBACP/M,eAAgB,qBAChB+O,iBAAkB,gCAGpBjS,SAAU,CACRkwB,QAAS,iFACTC,4BAA4B,oICpBzB,IAAMC,EAA+B,MAAtC,MAAOA,EAA+BhiC,SAAAC,KAAA,UAAAwE,EAAA,mFAA/Bu9B,EAA+B7hC,KAAA,GAAAC,OAAAC,4BAAAqP,YAAA1P,SAAAC,KAAA,UAAAwE,EAAA,0EAA/Bu9B,EAA+BryB,SAAA,8BAAAK,SAAA3P,EAAA4P,SCP5C,u5IAsHAY,OAAA,KAAAV,aAAA,EAAAC,KAAA,YAAA1N,KAAAiI,KAAAgF,SAAA,sCAAAS,KAAA,YAAA1N,KAAAkI,IAAA+E,SAAA,wBD/GaqyB,CAA+B,gGAA/BA,EAA+BlgC,WAAA,OAL3C4N,4BACW,8BAA6BO,SAAA,kkJEWlC,IAAMgyB,EAAa,MAApB,MAAOA,EAIXjgC,cAFQ/B,KAAAiiC,sBAAwD,IAEhD,CAEhB,oBAAWnK,GACT,OAAOD,KAAUC,kBACnB,CAEaoK,mBAAmBC,GAA6B,GAAK,IAAAh9B,EAAAnF,KAAA,SAAAoF,KAAA,YAEhE,IAAK+8B,GAAuBh9B,EAAK88B,sBAAuB,OAAO98B,EAAK88B,sBAEpE,MAAM/b,QAA+Bkc,IAAOC,UACtCC,EAAmBzK,KAAUC,yBACzByK,IAAIF,UACV,CACA/iC,KAAME,IAAYiiC,QAClBj6B,GAAIhI,IAAYo9B,MAChBW,MAAOl+B,KAAUM,cAAc2b,QAAQ,QAAS,IAChDzJ,QAASxS,KAAUM,eAGvBwF,SAAK88B,sBAAwB,CAE3BO,KAAM,YACIJ,IAAOK,WACdH,EACHna,MAAOjC,EAAWiC,MAClBvC,SAAUM,EAAWN,SACrB8c,gBAAiBxc,EAAWyc,eAC5Bza,aAAchC,EAAWgC,aACzB0a,iBAAkBljC,QAGlBmjC,iBAAkBP,GAASzwB,QAC3BC,aAAcwwB,GAAS/E,MACvBuF,cAAeR,GAAS96B,GACxBu7B,gBAAiBT,GAAShjC,MAGrB6F,EAAK88B,qBAAsB,EAhC8B,EAiClE,CAACliC,SAAAC,KAAA,UAAAwE,EAAA,mFA3CUw9B,EAAa9hC,KAAA,GAAAC,OAAAC,4BAAAqE,aAAA1E,SAAAC,KAAA,WAAAwE,EAAA,sFAAbw9B,EAAat9B,WAFZ,gBAEDs9B,CAAa,gGAAbA,EAAangC,WAAA,OAHzB4C,mBAAW,CACVC,WAAY,iDCIP,IAAMs+B,EAAa,MAApB,MAAOA,EAIXjhC,YACUy8B,EACAyE,EACAC,EACAp+B,EACAq+B,EACA7tB,GALAtV,KAAAw+B,iBACAx+B,KAAAijC,kBACAjjC,KAAAkjC,iBACAljC,KAAA8E,UACA9E,KAAAmjC,gBACAnjC,KAAAsV,sBARVtV,KAAAojC,YAAc,EAWd,CAEMC,iBAAc,IAAAl+B,EAAAnF,KAAA,SAAAoF,KAAA,YAClB,IACEc,QAAQ4O,IAAI,YAAM,yBAClB,MAAMwuB,QAAgBn+B,EAAKg+B,cAAcjB,qBACzCh8B,QAAQuT,MAAM,YAAM,oBAAqB6pB,GACzCp9B,QAAQuT,MAAM,YAAM,qBAAqBtU,EAAK89B,gBAAgB7K,gBAAgB94B,QAC9E,MAAM+5B,EAA0Bl0B,EAAK89B,gBAAgB7K,gBAAgB94B,KAOrE,GANA4G,QAAQuT,MAAM,YAAM,2BAA2B4f,KAAmBl0B,EAAK89B,gBAAgB7K,gBAAgBnB,UAEvG9xB,EAAK8iB,OAAS,IAAKqb,EAASC,aAAclK,EAAiBmK,0BAAsBt/B,EAAWu/B,kBAAcv/B,GAC1GgC,QAAQuT,MAAM,YAAM,eAAgBtU,EAAK8iB,QAGrC4P,KAAUC,mBACZ,IACI5xB,QAAQuT,MAAM,YAAM,iCACpB,MAAMyS,QAAQ,EAAS5mB,KAAeH,EAAKL,QAAQmqB,YAAY9pB,EAAK8iB,SACpE/hB,QAAQ4O,IAAI,YAAM,qBAAsBoX,EAASwX,qBACjDv+B,EAAK+9B,eAAe/E,gBAAkBjS,EAASwX,oBAC3CxX,EAASwX,qBACXC,MAAM,4GAEV,OAAS19B,GACPd,QAAKmQ,oBAAoBnP,MAAM,yDAA0D,KAAM,MAC/FD,QAAQC,MAAM,2DAEdub,aAAa/M,WAAWkW,MAClB5kB,CACR,CAGJ,GAAId,EAAK+9B,eAAe/E,gBAAiB,OAGzCh5B,EAAK+9B,eAAe5D,WAAWjG,GAG/B,WACYl0B,EAAK+9B,eAAexD,yBAC5Bv6B,EAAK89B,gBAAgB7K,eAAeO,gBAAkBxzB,EAAK+9B,gBAAgBvK,gBAE/E,OAAS1yB,GACPC,QAAQC,MAAM,gEAAiEF,EACjF,CAEAC,QAAQuT,MAAM,YAAM,kBAAmBtU,EAAK89B,gBAAgB7K,gBAExDjzB,EAAK89B,gBAAgB7K,eAAejB,aACtCjxB,QAAQuT,MAAM,uCAERtU,EAAK+9B,eAAezD,sBAE1Bv5B,QAAQ6f,KAAK,yCAAyCsT,qBAGxDl0B,EAAKq5B,eAAexW,cAAc7iB,EAAK8iB,OACzC,OAASF,GACP7hB,QAAQC,MAAM4hB,EAChB,CAAC,EA1DiB,EA2DpB,CAAChoB,SAAAC,KAAA,UAAAwE,EAAA,mFA1EUw+B,EAAa9iC,KAAA,EAAAuK,MAAAC,KAAA,CAAAD,MAAAE,MAAA,CAAAF,MAAAG,KAAA,CAAAH,MAAAqG,MAAA,CAAArG,MAAAwK,GAAA,CAAAxK,MAAAiQ,MAAAva,OAAAC,4BAAAqE,aAAA1E,SAAAC,KAAA,WAAAwE,EAAA,sFAAbw+B,EAAat+B,WAFZ,gBAEDs+B,CAAa,gGAAbA,EAAanhC,WAAA,OAHzB4C,mBAAW,CACVC,WAAY,sICEP,IAAMk/B,GAAY,MAAnB,MAAOA,EAMX7hC,YACmB8hC,EACAC,EACA7b,EACAljB,EACAm+B,EACAtwB,EACjBwpB,IANiBp8B,KAAA6jC,eACA7jC,KAAA8jC,YACA9jC,KAAAioB,SACAjoB,KAAA+E,OACA/E,KAAAkjC,iBACAljC,KAAA4S,SAVH5S,KAAAo8B,MAAQ58B,IAAYiiC,QACpBzhC,KAAA+jC,MAAQvkC,IAAYkiC,SACnB1hC,KAAA+S,WAAa,IAAIC,IAWhChT,KAAKgkC,cACL5H,GAAM6H,SAASjkC,KAAKo8B,MACtB,CAEM1lB,WAAQ,IAAAvR,EAAAnF,KAAA,SAAAoF,KAAA,YACZD,EAAK+9B,eAAexE,iBAAiBx3B,QACnC0M,KAAUzO,EAAK4N,aAAU,EACzBR,QAAoB,EACpBlL,KAAOsE,GAASA,IAAK,EACrBqT,KAAU,IAAM7Z,EAAKyN,OAAOsxB,SAAS,CAAC,sBACtCrwB,kBAGI1O,EAAKJ,KAAKsc,OAChBnb,QAAQ4O,IAAI,YAAM,yBACZ3P,EAAK8iB,OAAOob,iBAClBn9B,QAAQ4O,IAAI,YAAM,eAAgB,EAZtB,EAad,CAMAkvB,cAEgB,CACZ,YAEIxhC,QAAQ+4B,IACZ,MACM4I,EAAgBnkC,KAAK8jC,UAAUM,+BADxB,mBAAmB7I,SAEhCv7B,KAAK6jC,aAAaQ,WAAW9I,EAAM4I,EAAa,EAEpD,CAEApvB,cACE/U,KAAK+S,WAAW/M,MAAK,GACrBhG,KAAK+S,WAAWtJ,UAClB,CAAC1J,SAAAC,KAAA,UAAAwE,EAAA,mFArDUo/B,EAAY1jC,KAAA,EAAAuK,MAAAC,MAAA,CAAAD,MAAAE,MAAA,CAAAF,MAAAG,GAAA,CAAAH,MAAAqG,KAAA,CAAArG,MAAAwK,KAAA,CAAAxK,MAAAiQ,MAAA,CAAAjQ,MAAAE,OAAAxK,OAAAC,4BAAAqP,YAAA1P,SAAAC,KAAA,UAAAwE,EAAA,0EAAZo/B,EAAYl0B,SAAA,WAAAK,SAAA3P,EAAA4P,SChBzB,0HAIAY,OAAA,KAAAV,aAAA,EAAAC,KAAA,YAAA1N,KAAAiY,KAAAhL,SAAA,gBAAAU,OAAA,SAAA+J,QAAA,4CAAAtJ,SAAA,aAAAV,KAAA,YAAA1N,KAAAkY,IAAAjL,SAAA,wBDYak0B,CAAY,gGAAZA,GAAY/hC,WAAA,OALxB4N,4BACW,WAAUO,SAAA,qQEFf,IAAMs0B,EAAS,MAAhB,MAAOA,EAHbviC,cAKmB/B,KAAA4S,UAAS1B,UAAOC,MAChBnR,KAAA+E,QAAOmM,UAAOG,KAE/BkzB,YACEv+B,EACAtC,GAEA,OAAO1D,KAAK+E,KAAKQ,aAAa2B,QAC5BvB,KAAIN,KACEA,GACc,WAAd3B,EAAMyO,KACEnS,KAAK4S,OAAO4xB,cAAc,CAAC,aACxC,EACD3kB,KAAY5Z,IACVC,QAAQC,MAAMF,IACI,EAAmB2B,MAAnB,WAAdlE,EAAMyO,KACAnS,KAAK4S,OAAO4xB,cAAc,CAAC,cAG3C,CAACzkC,SAAAC,KAAA,UAAAwE,EAAA,mFArBU8/B,EAASpkC,KAAA,GAAAC,OAAAC,4BAAAqE,aAAA1E,SAAAC,KAAA,WAAAwE,EAAA,sFAAT8/B,EAAS5/B,WAFR,gBAED4/B,CAAS,gGAATA,EAASziC,WAAA,OAHrB4C,mBAAW,CACVC,WAAY,4CCCP,IAAM+/B,EAAqB,MAA5B,MAAOA,EALb1iC,cAOmB/B,KAAAkjC,kBAAiBhyB,UAAOK,KACzBvR,KAAA+R,cAAgB/R,KAAKkjC,eAAenxB,cAAc7K,OAC3DlH,KAAA6R,QAAkB7R,KAAKkjC,eAAepxB,aAE7C,aAAW4yB,GACT,OAAQ7M,KAAU4E,eAChB,IAAK,MAAO,MAAO,YACnB,IAAK,UAAW,MAAO,aACvB,QAAS,MAAO,QAEpB,CAAC18B,SAAAC,KAAA,UAAAwE,EAAA,mFAZUigC,EAAqBvkC,KAAA,GAAAC,OAAAC,4BAAAqP,YAAA1P,SAAAC,KAAA,UAAAwE,EAAA,0EAArBigC,EAAqB/0B,SAAA,qBAAAK,SAAA3P,EAAA4P,SCTlC,shBAeAY,OAAA,yHAAAV,aAAA,EAAAC,KAAA,YAAA1N,KAAAiI,KAAAgF,SAAA,SAAAU,OAAA,iCAAAD,KAAA,YAAA1N,KAAAkI,KAAA+E,SAAA,sCAAAS,KAAA,YAAA1N,KAAAmI,IAAA8E,SAAA,eAAAS,KAAA,OAAA1N,KAAAiI,KAAApL,KAAA,mBDNamlC,CAAqB,gGAArBA,EAAqB5iC,WAAA,OALjC4N,4BACW,qBAAoBO,SAAA,shBAAAY,OAAA,2IEIzB,IAAM+zB,EAAgB,MAAvB,MAAOA,EALb5iC,cAOmB/B,KAAAoR,SAAQF,UAAOG,KACfrR,KAAAiR,WAAUC,UAAOC,MAClBnR,KAAA4kC,MAAQ5kC,KAAKoR,MAAM7L,aAG5Bs/B,SACL3+B,eAAQ4O,IAAI,4BACL9U,KAAKiR,QAAQizB,SAAS,CAAC,WAChC,CAACnkC,SAAAC,KAAA,UAAAwE,EAAA,mFAVUmgC,EAAgBzkC,KAAA,GAAAC,OAAAC,4BAAAqP,YAAA1P,SAAAC,KAAA,UAAAwE,EAAA,0EAAhBmgC,EAAgBj1B,SAAA,cAAAK,SAAA3P,EAAA4P,SCT7B,i6BA8BAY,OAAA,iJAAAV,aAAA,EAAAC,KAAA,YAAA1N,KAAAiI,KAAAgF,SAAA,SAAAU,OAAA,iCAAAD,KAAA,YAAA1N,KAAAkI,KAAA+E,SAAA,sCAAAS,KAAA,YAAA1N,KAAAmI,IAAA8E,SAAA,eAAAS,KAAA,OAAA1N,KAAAiI,KAAApL,KAAA,UAAA6Q,KAAA,OAAA1N,KAAAqO,IAAAxR,KAAA,mBDrBaqlC,CAAgB,gGAAhBA,EAAgB9iC,WAAA,OAL5B4N,4BACW,cAAaO,SAAA,i6BAAAY,OAAA,uJEIzB,MAAMk0B,EAAiB,CACrB,CAAE1xB,KAAM,GAAI2xB,WAAY,QAASC,UAAW,QAC5C,CACE5xB,KAAM,GACN6xB,aAAcA,IACZl9B,QAAAm9B,IAAA,CAAAC,EAAApd,EAAA,MAAAod,EAAApd,EAAA,OAAAvB,KAAA2e,EAAAC,KAAAD,EAAA,MAA+B3e,KAAM2V,GAAMA,EAAEkJ,cAEjD,CACEjyB,KAAM,aACN6xB,aAAcA,IACZl9B,QAAAm9B,IAAA,CAAAC,EAAApd,EAAA,MAAAod,EAAApd,EAAA,OAAAvB,KAAA2e,EAAAC,KAAAD,EAAA,MAA+B3e,KAAM2V,GAAMA,EAAEkJ,cAEjD,CACEjyB,KAAM,0BACNkyB,UAAWvD,GAEb,CACE3uB,KAAM,QACN6xB,aAAcA,IACZl9B,QAAAm9B,IAAA,CAAAC,EAAApd,EAAA,MAAAod,EAAApd,EAAA,QAAAvB,KAAA2e,EAAAC,KAAAD,EAAA,OAA+B3e,KAAM2V,GAAMA,EAAEoJ,aAC/ChB,YAAa,CAACD,IAEhB,CACElxB,KAAM,WACN6xB,aAAcA,IACZl9B,QAAAm9B,IAAA,CAAAC,EAAApd,EAAA,MAAAod,EAAApd,EAAA,QAAAvB,KAAA2e,EAAAC,KAAAD,EAAA,OAAqC3e,KAAM2V,GAAMA,EAAEqJ,gBACrDjB,YAAa,CAACD,IAEhB,CACElxB,KAAM,GACN6xB,aAAcA,IACZl9B,QAAAm9B,IAAA,CAAAC,EAAApd,EAAA,MAAAod,EAAApd,EAAA,QAAAvB,KAAA2e,EAAAC,KAAAD,EAAA,OAA2C3e,KACxC2V,GAAMA,EAAEsJ,kBAEblB,YAAa,CAACD,IAEhB,CACElxB,KAAM,iBACN6xB,aAAcA,IACZl9B,QAAAm9B,IAAA,CAAAC,EAAApd,EAAA,MAAAod,EAAApd,EAAA,QAAAvB,KAAA2e,EAAAC,KAAAD,EAAA,OAAiD3e,KAC9C2V,GAAMA,EAAEuJ,sBAGf,CAAEtyB,KAAM,iBAAkBkyB,UAAWb,GACrC,CAAErxB,KAAM,UAAWkyB,UAAWX,EAAkBJ,YAAa,CAACD,IAC9D,CAAElxB,KAAM,KAAMkyB,UAAWpqB,MAcpB,IAAMyqB,EAAgB,MAAvB,MAAOA,EAAgB5lC,SAAAC,KAAA,UAAAwE,EAAA,mFAAhBmhC,EAAgBzlC,KAAA,GAAAC,OAAAC,4BAAAC,WAAAN,SAAAC,KAAA,UAAAwE,EAAA,oFAAhBmhC,EAAgB/jC,QAAA,CAAA8I,KAAAC,MAAArK,QAAA,CAFjBmgC,QAAY1gC,SAAAC,KAAA,UAAAwE,EAAA,oFAEXmhC,EAAgB/jC,QAAA,CATzB6+B,KAAamF,QAAQd,EAAQ,CAAEe,0BAA2B,aAC1DC,KAAmBF,QAAQ,CACzBtmC,KAAM,SACNymC,YAAa,CAAC,YAAa,SAAU,YAI/BtF,eAECkF,CAAgB,gGAAhBA,EAAgB9jC,WAAA,OAX5BxB,iBAAS,CACRuB,QAAS,CACP6+B,KAAamF,QAAQd,EAAQ,CAAEe,0BAA2B,aAC1DC,KAAmBF,QAAQ,CACzBtmC,KAAM,SACNymC,YAAa,CAAC,YAAa,SAAU,aAIzCzlC,QAAS,CAACmgC,2BClEL,MACM5e,GAAQ,CACnBpX,MAAS,cACTuX,YAAe,CACbP,aAAgB,8BAChBhc,gBAAkB,EAClBwd,aAAgB,cAChBC,SAAY,KACZ7X,uBAA0B,CACxBgkB,yBAA4B,uCAC5B/vB,KAAQ,mBACR2E,MAAS,aACT+hC,WAAc,KACdC,gBAAmB,uCACnB36B,gBAAmB,UACnBC,kBAAoB,WAEtB6X,wBAA2B,CACzB,CACEiM,yBAA4B,uCAC5B/vB,KAAQ,mBACR2E,MAAS,aACT+hC,WAAc,KACdC,gBAAmB,uCACnB36B,gBAAmB,UACnBC,kBAAoB,YAGxB4X,8BAAiC,GACjC5E,UAAa,SACbqE,cAAiB,KACjBpE,SAAY,SACZqE,SAAY,EACZC,kBAAqB,KACrBC,YAAe,wBACftE,YAAe,KACf7Y,QAAW,CACTxB,UAAa,IACb9E,KAAQ,GACR+D,SAAY,6BACZI,SAAY,GACZX,KAAQ,WACRY,MAAS,KACTN,IAAO,QACPL,OAAU,GACVY,SAAY,UACZI,WAAa,UACbE,MAAS,KACTE,YAAc,GAEhBgK,iBAAoB,GACpB6U,oBAAsB,EACtBkjB,eAAiB,ICpDRrxB,GAAiB,CAC5BjD,YAAe,mBACf6M,YAAe,aACf0nB,eAAkB,KAClBC,iBAAoB,GACpBC,2BAA8B,KAC9BC,0BAA6B,cAC7BC,oBAAsB,EACtBC,2CAA6C,EAC7CC,iCAAoC,KACpCC,+BAAkC,KAClCC,6BAA+B,EAC/BC,8BAAgC,EAChCC,yBAA2B,EAC3BC,uBAAyB,EACzBC,uCAA0C,EAC1CC,uBAAyB,EACzBC,gDAAkD,EAClDC,yBAA2B,EAC3BC,uBAAyB,EACzBC,8BAAgC,EAChCC,+BAAiC,EACjC9V,iCAAoC,IACpC+V,kBAAqB,GACrBC,gBAAmB,qBCfd,IAAMC,GAAW,MAAlB,MAAOA,EADbzlC,cAGE/B,KAAAqS,YAAa,EACIrS,KAAAivB,YAAe,CAAEyU,qBAAsB,EAAOlL,QAAU,yBACjEx4B,KAAAynC,YAAqC,GAE7CxwB,IAAI0U,GACF,MAAMxZ,EAAMwZ,EAAQxZ,IACdxE,EAAOge,EAAQhe,KAAO0J,KAAKoM,MAAMkI,EAAQhe,MAAQ,KAEvD,IAAIue,EA0CJ,GAzCI,uBAAuB/X,KAAKhC,KAAQ+Z,EAAWlsB,KAAKivB,aAEpD,wBAAwB9a,KAAKhC,KAC/BnS,KAAKqS,YAAa,EAClB6Z,EAAWrK,IAET,8BAA8B1N,KAAKhC,KAAQ+Z,EAAWlsB,KAAKqS,YAC3D,yBAAyB8B,KAAKhC,KAAQ+Z,GAAW,GAEjD,yBAAyB/X,KAAKhC,KAAQ+Z,EAAWrX,IACjD,kCAAkCV,KAAKhC,KACzC+Z,GAA8B,IAAnBve,EAAK+5B,UACd,CAAEC,eAAgB3nC,KAAKynC,YAAaG,aAAc5nC,KAAKynC,YAAY7gC,OAAQihC,SAAS,KACpF,CAAEF,eAAe,GAAIC,aAAc,EAAGC,SAAS,MAE/C,uCAAuC1zB,KAAKhC,KAAQ+Z,EAAW,CAAEyb,eAAe,GAAIC,aAAc,EAAGC,SAAS,MAE9G,gCAAgC1zB,KAAKhC,KAAQ+Z,EAAW,IAGxD,8BAA8B/X,KAAKhC,KACrC+Z,EAAWve,EAAKhI,IAAIgmB,IAClB,MAAMmc,EAAW9nC,KAAK+nC,kBACpBpc,EAAQvf,cAAczI,SACtBgoB,EAAQvf,cAAcrI,UACtB4nB,EAAQtf,eAAe1I,SACvBgoB,EAAQtf,eAAetI,WAEnB4X,GAAUqsB,MAAMF,GAAY,EAAe,GAAXA,EAChCtsB,GAAWtO,MAASC,MAAM86B,QAAQ,QAAQ76B,KAAK,CAAEuO,aAAWpO,SAAS,gBAC3E,MAAO,CAAEoe,UAAS0F,KAAMrxB,KAAKkoC,SAASJ,GAAWA,WAAUtsB,YAAQ,IAInE,uBAAuBrH,KAAKhC,KAAQ+Z,EAAWve,EAAKw6B,UAAUxiC,IAAIoI,IAClE,MAAMme,EAAWlsB,KAAKooC,yBAAyBr6B,EAAKs6B,aACpD,OAAAroC,KAAKynC,YAAYp5B,KAAK6d,GACfA,KAIP,6BAA6B/X,KAAKhC,GAAM,CAC1C,MAAMm2B,EAASn2B,EAAI8N,MAAM,yBAAyBY,QAAQynB,OACpDv6B,EAAO/N,KAAKynC,YAAYlP,KAAKxqB,IAAQA,GAAKw6B,gBAAgB3X,YAAY7iB,KAAKu6B,SAAWA,GACxFv6B,IAAQA,EAAKw6B,gBAAgB3X,YAAY7iB,KAAKstB,aAAe,GACjEnP,EAAW,CAAEsc,gBAAgB,yBAA0BC,WAAU,EACnE,CAEA,MAAO,CACL1mB,aAAsB7d,IAAbgoB,EACTA,WAEJ,CAEQgc,SAASJ,GACf,OAAkB,KAAXA,CACT,CAEQC,kBAAkBW,EAAcC,EAAcC,EAAcC,GAClE,KAAKH,GAASC,GAASC,GAAQC,GAAQ,OAAO,EAC9C,MACMC,EAAI1H,KAAK2H,GAAK,IAEd5xB,GAAI,GAAMiqB,KAAK4H,KAAKJ,EAAOF,GAAQI,GAAK,EAC9B1H,KAAK4H,IAAIN,EAAOI,GAAK1H,KAAK4H,IAAIJ,EAAOE,IACpC,EAAI1H,KAAK4H,KAAKH,EAAOF,GAAQG,IAAM,EAG9CG,GADe,MAAQ7H,KAAK8H,KAAK9H,KAAK+H,KAAKhyB,KACpB,MAE7B,OADwB2f,OAAOmS,GAAMG,oBAAellC,EAAW,CAAEmlC,sBAAuB,IAAK/tB,QAAQ,KAAM,IAE7G,CAEQ8sB,yBAAyBr6B,GAC/B,MAAM+5B,EAAW9nC,KAAK+nC,kBACpBh6B,EAAK3B,cAAczI,SACnBoK,EAAK3B,cAAcrI,UACnBgK,EAAK1B,eAAe1I,SACpBoK,EAAK1B,eAAetI,WAEhBsH,EAAyBwW,GAAMG,YAAYoB,wBAAwB,GACzE,MAAO,CACLmlB,gBAAiB,CACfe,wBAAyB,EACzBC,oBAAqB,KACrBC,qBAAsB,KACtBlqC,KAAM,GACNsxB,YAAa,CACX6Y,OAAQ,KACRC,QAAS,KACTC,oBAAqB,IAAIl4B,KAAK,uBAC9B1D,KAAM,IACDA,EACHu6B,OAAQ72B,KAAKtE,MAAMmM,WACnB+hB,aAAc,EACdhM,yBAA0BhkB,EAAuBgkB,yBACjDhpB,cAAewb,GAAMG,YAAYiB,aACjC2mB,UAAW,GAAG/nB,GAAMG,YAAYzD,aAAasD,GAAMG,YAAYxD,YAC/DyE,aAAcpB,GAAMG,YAAYiB,aAChC7W,cAAe,IAAK2B,EAAK3B,cAAe9M,KAAM,GAAI8E,UAAWqN,KAAKtE,MAAMmM,WAAYrV,MAAO,KAAME,YAAY,GAC7GkI,eAAgB,IAAK0B,EAAK1B,eAAgB/M,KAAM,GAAI8E,UAAWqN,KAAKtE,MAAMmM,WAAYrV,MAAO,KAAME,YAAY,IAEjH+J,WAAY,MAEd2Q,OAAQ,+BACRgrB,uBAAwB,KACxB37B,WAAYlO,KAAKkoC,SAASJ,IAE5Bz8B,yBAEJ,CAACtL,SAAAC,KAAA,UAAAwE,EAAA,mFAzHUgjC,EAAWtnC,KAAA,GAAAC,OAAAC,4BAAAqE,aAAA1E,SAAAC,KAAA,WAAAwE,EAAA,sFAAXgjC,EAAW9iC,WADE,gBACb8iC,CAAW,gGAAXA,GAAW3lC,WAAA,OADvB4C,mBAAW,CAAEC,WAAY,aCKnB,IAAMolC,GAAe,MAAtB,MAAOA,EADb/nC,cAGmB/B,KAAA+K,WAAUmG,UAAOG,KACjBrR,KAAA+pC,QAAO74B,UAAOs2B,IACdxnC,KAAAkjC,kBAAiBhyB,UAAOK,KAEzCy4B,UACEre,EACA3lB,GAIA,GAAIhG,KAAKkjC,eAAe/E,gBACtB,MAAM,IAAIvV,MAAM,iCAGlB,MAAQne,QAAOwY,gBAAiBjjB,KAAK+K,QAAQrD,kBAAoB,IACzDyK,OAAQwZ,GAAW,CAAExZ,IAAK,IAE5BxE,EAAOge,EAAQhe,KAAO0J,KAAKoM,MAAMkI,EAAQhe,MAAQ,KAEvD,GACEsV,IAAiBpB,GAAMpX,OAErBkD,GAAMiU,OAAOqoB,gBAAkBpoB,IAAOG,aAAaP,cAAcwoB,eHrCjD,kBGsCbt8B,GAAM6U,SAEX,CACA,MAAQT,WAASmK,aAAalsB,KAAK+pC,KAAK9yB,IAAI0U,GAE5C,GADAzlB,QAAQ+f,KAAK,eAAK,eAAgBiG,IAC9BnK,GACF,SAAOna,MAAG,IAAIwkB,MAAa,CACzBze,KAAM,IAAI0e,KAAK,CAAEhV,KAAKC,UAAU4U,KAAa,CAAEzpB,KAAM,cACrD2F,OAAQ,IACR8hC,WAAY,OAGlB,CAEA,OAAIz/B,GAAS0H,EAAI5K,SAAS/H,IAAYy3B,UACpCtL,EAAUA,EAAQwe,MAAM,CACtBC,WAAY,CACVC,cAAe,UAAU5/B,QAKxBzE,EAAKskC,OAAO3e,GAASzkB,QAC1B2Y,KAAW5Z,KACT,MAAQmC,UAAQ4X,YAAY/Z,GAC5BC,cAAQC,MAAM,wBAAyBgM,EAAK/J,GAAQ4X,IAC9C/Z,KAGZ,CAAClG,SAAAC,KAAA,UAAAwE,EAAA,mFAtDUslC,EAAe5pC,KAAA,GAAAC,OAAAC,4BAAAqE,aAAA1E,SAAAC,KAAA,WAAAwE,EAAA,sFAAfslC,YAAe,gGAAfA,GAAejoC,WAAA,OAD3B4C,4ECLM,IAAM8lC,GAAY,MAAnB,MAAOA,EACXxoC,YAAoByoC,GAAAxqC,KAAAwqC,UAAyB,CAE7CC,uBAAuBC,GACrBxkC,QAAQuT,MAAM,YAAM,kBAAmBixB,GACvC1qC,KAAKwqC,SAASG,kBAAkBt6B,KAAuB,CACrD+Z,WAAY,iBACZ9nB,KAAMooC,GAEV,CAAC3qC,SAAAC,KAAA,UAAAwE,EAAA,mFATU+lC,EAAYrqC,KAAA,EAAAuK,MAAAC,QAAAvK,OAAAC,4BAAAqE,aAAA1E,SAAAC,KAAA,WAAAwE,EAAA,sFAAZ+lC,EAAY7lC,WAFX,gBAED6lC,CAAY,gGAAZA,GAAY1oC,WAAA,OAHxB4C,mBAAW,CACVC,WAAY,+CCEP,IAAMkmC,GAAkB,MAAzB,MAAOA,EACX7oC,YACU8oC,EACAC,GADA9qC,KAAA6qC,WACA7qC,KAAA8qC,eACN,CAEJlsB,YAAYzY,GAEVD,QAAQ6f,KAAK5f,EAAM6Z,QAAS7Z,GAC5BnG,KAAK8qC,cAActjB,SAASrhB,EAAM6Z,QAAS7Z,GAG3Cud,KAAQmF,MAAM1iB,EAAM4kC,eAAiB5kC,EACvC,CAACpG,SAAAC,KAAA,UAAAwE,EAAA,mFAbUomC,EAAkB1qC,KAAA,EAAAuK,MAAAC,IAAA,CAAAD,MAAAE,MAAAxK,OAAAC,4BAAAqE,aAAA1E,SAAAC,KAAA,WAAAwE,EAAA,sFAAlBomC,YAAkB,gGAAlBA,GAAkB/oC,WAAA,OAD9B4C,qFCAM,IAAMumC,GAAmB,MAA1B,MAAOA,EACXhB,UAAUiB,EAAuBjlC,GAC/B,GAAIilC,EAAI94B,IAAI4lB,WAAWv4B,IAAYy3B,QAAS,CAC1C,MAAMiU,EAAgBD,EAAId,MAAM,CAAE3e,QAASyf,EAAIzf,QAAQvG,IAAI,iBAAkBzlB,IAAYkiC,YACzF,OAAO17B,EAAKskC,OAAOY,EACrB,CACA,OAAOllC,EAAKskC,OAAOW,EACrB,CAAClrC,SAAAC,KAAA,UAAAwE,EAAA,mFAPUwmC,EAAmB9qC,KAAA,GAAAC,OAAAC,4BAAAqE,aAAA1E,SAAAC,KAAA,WAAAwE,EAAA,sFAAnBwmC,YAAmB,KCuB1B,SAAUG,KACd,MAAMh5B,KAAMyY,MAAoBC,MAChCrrB,WAAYy3B,OAAS9kB,EACdA,CACT,4FD3Ba64B,GAAmBnpC,WAAA,OAD/B4C,iBC8DM,IAAM2mC,GAAS,MAAhB,MAAOA,EAASrrC,SAAAC,KAAA,UAAAwE,EAAA,mFAAT4mC,EAASlrC,KAAA,GAAAC,OAAAC,4BAAAC,WAAAN,SAAAC,KAAA,UAAAwE,EAAA,oFAAT4mC,EAASC,UAAA,CAFRzH,IAAYxD,aAAA,CA5BtBwD,GACA7B,EACA0C,EACAE,GAAgB/iC,QAAA,CAGhB0pC,KACA3F,EACA4F,MACArL,KAAYx1B,KAAAC,KAAAC,SAAA7K,SAAAC,KAAA,UAAAwE,EAAA,oFAqBH4mC,EAASz7B,UAVT,CACT,CAAEC,QAAS2a,KAAcihB,WAAYL,IACrC,CAAEv7B,QAAS67B,MAAmBC,SAAU5B,GAAiB6B,OAAO,GAChE,CAAE/7B,QAAS67B,MAAmBC,SAAUV,GAAqBW,OAAO,GACpE,CAAE/7B,QAASg8B,IAAoBF,SAAUG,MACzC,CAAEj8B,QAASk8B,eAAcJ,SAAUd,IACnCmB,MACDnqC,QAAA,CArBC0pC,KACA3F,EACA4F,MACArL,KACAG,KAAYuF,UACZE,KAAmBF,UACnBoG,MAAoBC,SAAS,iBAAkB,CAC7CjlB,QAASxnB,IAAYgiC,WAGrB0K,qBAAsB,uCAcfd,CAAS,gGAATA,GAASvpC,WAAA,OAhCrBxB,iBAAS,CACR+/B,aAAc,CACZwD,GACA7B,EACA0C,EACAE,GAEF/iC,QAAS,CACP0pC,KACA3F,EACA4F,MACArL,KACAG,KAAYuF,UACZE,KAAmBF,UACnBoG,MAAoBC,SAAS,iBAAkB,CAC7CjlB,QAASxnB,IAAYgiC,WAGrB0K,qBAAsB,8BAG1B5rC,QAAS,GACTqP,UAAW,CACT,CAAEC,QAAS2a,KAAcihB,WAAYL,IACrC,CAAEv7B,QAAS67B,MAAmBC,SAAU5B,GAAiB6B,OAAO,GAChE,CAAE/7B,QAAS67B,MAAmBC,SAAUV,GAAqBW,OAAO,GACpE,CAAE/7B,QAASg8B,IAAoBF,SAAUG,MACzC,CAAEj8B,QAASk8B,eAAcJ,SAAUd,IACnCmB,MAEFV,UAAW,CAACzH,UCzDVpkC,IAAYgiC,eACd2K,oBAIE3sC,IAAYkkB,SACdA,KAAQoD,QAAQtnB,IAAYkkB,SAG9B0oB,SAASC,iBAAiB,mBAAoB,KAC5CC,OACGC,gBAAgBnB,IAChBnkC,MAAOhB,GAAQC,QAAQC,MAAMF,GAAI,GAGtC,MAAM2xB,GAAOztB,OAAOtG,SAAS+zB,KAC7B,IAAI4U,GAEJ,OAAQ5U,IACN,IAAK,iBAAkB4U,GAAO,yBAA0B,MACxD,IAAK,iBAAkBA,GAAO9qB,aAAa6B,QAAQ,gCAAkC,iCAAkC,MACvH,IAAK,qBAAsBipB,GAAO,iCAAkC,MACpE,QAASA,GAAO,eAAe5U,KAG5Bp4B,IAAYy3B,SACfz3B,IAAYy3B,OAAS,GAAGuV,sBClC1B,IAAA7mC,EAAA,CACA,8BACA,KACA,KACA,MAEA,+BACA,KACA,KACA,MAEA,wBACA,KACA,KACA,MAEA,wBACA,KACA,KACA,MAEA,2BACA,KACA,MAEA,8BACA,KACA,KACA,MAEA,2BACA,KACA,MAEA,+BACA,KACA,KACA,MAEA,2BACA,KACA,MAEA,yBACA,KACA,MAEA,2BACA,KACA,MAEA,uBACA,KACA,MAEA,wBACA,KACA,MAEA,kCACA,KACA,KACA,MAEA,6BACA,KACA,KACA,KACA,MAEA,wBACA,KACA,KACA,MAEA,sBACA,IACA,KAEA,oCACA,KACA,KACA,MAEA,wCACA,KACA,KACA,MAEA,wBACA,IACA,KACA,KAEA,gCACA,KACA,KACA,MAEA,yBACA,KACA,KACA,MAEA,0BACA,KACA,KACA,MAEA,yBACA,KACA,KACA,MAEA,wBACA,KACA,KACA,MAEA,wBACA,IACA,KACA,KAEA,uCACA,KACA,MAEA,gCACA,KACA,KACA,MAEA,yBACA,KACA,MAEA,0BACA,KACA,KACA,MAEA,+BACA,KACA,MAEA,0BACA,KACA,KACA,MAEA,wBACA,IACA,KACA,KAEA,8BACA,IACA,KACA,KAEA,4BACA,KACA,KACA,MAEA,gCACA,KACA,MAEA,0BACA,KACA,MAEA,4BACA,KACA,KACA,MAEA,4BACA,IACA,KACA,KAEA,2BACA,KACA,KACA,MAEA,0BACA,IACA,KACA,KAEA,6BACA,KACA,MAEA,4BACA,KACA,KACA,MAEA,wBACA,KACA,MAEA,uBACA,IACA,KAEA,2BACA,KACA,KACA,MAEA,wBACA,KACA,KACA,MAEA,yBACA,KACA,KACA,OAGA,SAAA8mC,EAAAxB,GACA,IAAA9F,EAAAuH,EAAA/mC,EAAAslC,GACA,OAAAljC,QAAAC,UAAAwe,KAAA,KACA,IAAAuB,EAAA,IAAAa,MAAA,uBAAAqiB,EAAA,KACA,MAAAljB,EAAAlM,KAAA,mBACAkM,IAIA,IAAA4kB,EAAAhnC,EAAAslC,GAAAzjC,EAAAmlC,EAAA,GACA,OAAA5kC,QAAAm9B,IAAAyH,EAAAp4B,MAAA,GAAA5O,IAAAw/B,EAAApd,IAAAvB,KAAA,IACA2e,EAAA39B,GAEA,CACAilC,EAAA73B,KAAA,IAAAg4B,OAAAh4B,KAAAjP,GACA8mC,EAAAjlC,GAAA,KACAqlC,EAAAvsC,QAAAmsC","names":["buildInfo","name","ionicAppId","environment","ionicAppChannel","packageJson","publicVersion","internalVersion","date","MaterialModule","static","this","_angular_core__WEBPACK_IMPORTED_MODULE_0__","deps","target","i0","NgModule","exports","MatAutocompleteModule","MatBadgeModule","MatButtonModule","MatCheckboxModule","MatDatepickerModule","MatDialogModule","MatFormFieldModule","MatIconModule","MatInputModule","MatMenuModule","MatNativeDateModule","MatProgressSpinnerModule","MatRadioModule","MatSelectModule","MatSortModule","MatStepperModule","MatTabsModule","MatTooltipModule","MatSnackBarModule","MatPaginatorModule","MatSlideToggleModule","imports","decorators","AddressParserService","constructor","parseAddressFromPlace","place","byType","address_components","reduce","acc","data","types","forEach","type","result","streetNumber","getAddressComponent","streetName","city","county","stateShort","stateLong","countryShort","countryLong","zip","address1","getAddressLine1","place_res","short_name","address2","state","latitude","geometry","location","lat","longitude","lng","phone","undefined","isFavorite","addressId","key","short","long_name","core","Injectable","providedIn","AddressSearchService","ngZone","addressParser","proxies","auth","previousRiderLocations$","ReplaySubject","refreshRiderAddressHistory","_this","_asyncToGenerator","user","firstValueFrom","currentUser$","mappedAddresses","isDelegateUser","addressHistory","map","address","description","coords","isGoogleResult","next","err","console","error","search","vendorRiderId","searchText","autoCompleteService","sanitizedSearchText","trim","toUpperCase","validSearch","length","googleSearch$","loadGooglePlaces","forkJoin","loadPreviousLocations","catch","pipe","addresses","predictions","filter","item","includes","id","place_id","getCurrentUser","delegateRiderAddressHistory","of","geocodeAddress","geocoder","Promise","resolve","reject","geocode","results","status","google","maps","GeocoderStatus","OK","coordinates","toJSON","getAddressFromGeoCode","event","latLng","hasCriteria","searchCriteria","subject","AsyncSubject","getPlacePredictions","input","componentRestrictions","country","places","PlacesServiceStatus","ZERO_RESULTS","complete","asObservable","getPlaceDetails","placesService","getDetails","placeId","status1","getCurrentDeviceLocation","Observable","observer","window","navigator","geolocation","getCurrentPosition","position","run","token","i1","i2","i3","RequestBuilderService","DEFAULT_LOCATION","authSvc","valueSvc","fallbackLocation","formValues","isReturn","currentUser","transportationProvider","defaultLatitude","defaultLongitude","MapsService","DEFAULT_CENTER","deviceLocation","value","listTransportationProviders","availableTransportationProviders","getCurrentUserRole","getReturnRideValues","reservationTypeId","ReservationType","Pickup","dateString","pickupAddress","dropoffAddress","pickupTimeString","TimeHelperService","getReturnTime","priorityTime","dropoffTimeString","returnRide","reset","requestForm","newRider","pickupTime","requestRideResponse","startDateTime","DateTime","now","plus","hours","startDate","toFormat","startPickUpTime","dropoffTime","mapRides","body","requirementTypes","getRideRequirementTypes","_ride","ride","rideDate","escorts","fareAmount","rideRequirements","wheelchairRequired","push","getById","RideRequirementType","Wheelchair","rideRequirementId","stretcherRequired","Stretcher","liftRequired","Lift","formattedPickupTime","String","getDateTime","split","formattedDropoffTime","formattedRideDate","dropOffTime","_angular_core__WEBPACK_IMPORTED_MODULE_9__","StepsComponent","CdkStepper","_angular_core__WEBPACK_IMPORTED_MODULE_1__","Component","selector","providers","provide","useExisting","usesInheritance","ngImport","template","isInline","dependencies","kind","inputs","ErrorDisplayComponent","snackbarRef","close","dismiss","retry","reload","MAT_SNACK_BAR_DATA","styles","exportAs","i4","Inject","FooterComponent","_router","inject","Router","_auth","AuthenticationService","_versionService","VersionService","currentYear","Date","getFullYear","features","companyName","version","buildVersion","snapshotInfo$","returnUrl$","events","NavigationEnd","url","login$","isLoggedIn","showActions$","distinctUntilChanged","_hideActions","startWith","_angular_core__WEBPACK_IMPORTED_MODULE_3__","HeaderComponent","router","route","requestBuilder","destroyed$","Subject","hideBackBtn","hideBackBtnUrls","returnUrls","path","text","payments","agreement","tap","back","getBackValue","hideBackButton","takeUntil","subscribe","queryParams","snapshot","previousUrl","HelperService","updateUrl","test","queryStartIndex","indexOf","rootPage","slice","cancel","getIsProviderAssigned","sessionStorage","removeItem","keys","portalSettings","log","ngOnDestroy","_angular_core__WEBPACK_IMPORTED_MODULE_10__","i5","MapComponent","mapsService","addressSearchService","controlContainer","notificationService","searchGroup","FormGroup","searchInput","FormControl","addressValidator","apiLoaded$","isLoaded$","apiLoaded","options","DEFAULT_OPTIONS","showSearch","locationOptions","searchLocations","previouslyUsedLocations","marker","draggable","loaded","EventEmitter","addressChange","ngOnInit","parentForm","control","addressInValid","controls","controlName","invalid","get","valueChanges","a","b","JSON","stringify","patchValue","takeWhile","emit","interval","finalize","geoCoderService","Geocoder","AutocompleteService","searchElementRef","nativeElement","PlacesService","handleMarker","vendorIdControl","combineLatest","debounceTime","searchTerm","riderVendorId","searchFilterChanged","ngOnChanges","changes","disabled","searchControl","disable","enable","googleMap","panTo","riderId","updateLocationFromSelection","$event","_this2","option","toString","isGeoCoded","updateLocationFromAddress","debug","updateLocationOnDragEnd","_this3","searchInputControl","getDisplayAddress","preventSubmission","preventDefault","stopPropagation","_angular_core__WEBPACK_IMPORTED_MODULE_7__","required","outputs","viewQueries","propertyName","first","predicate","descendants","usesOnChanges","i6","i7","i8","i9","i10","Input","ViewChild","Output","NotFoundComponent","RideComponent","findTimeClass","toLocaleLowerCase","replace","formatDuration","duration","parts","parseInt","minutes","STATES","code","isTerritory","States","s","StaxComponent","changeDetectorRef","authService","ngZones","renderer","monthRegex","zipRegex","minYear","year","maxYear","states","validNumber","validCvv","reload$","retryCount","crashed","form","firstname","Validators","maxLength","lastname","minLength","address_1","address_2","address_city","address_state","address_zip","pattern","method","month","min","max","staxInvalid","providerToken$","selectedRides","total","showTitle","valid","firstName","lastName","phoneNumber","unhandledrejectionListener","listen","handleError","reason","ngAfterViewInit","runGuarded","switchMap","EMPTY","stax","StaxJs","number","placeholder","style","format","cvv","on","detectChanges","setTimeout","showCardForm","catchError","handler","onError","message","match","tokenize","formControlName","hasValidator","getError","touched","Dropoff","PhonePipe","transform","ext","noPhoneText","newValue","groups","areaCode","telPrefix","lineNum","Pipe","RidePriorityTimePipe","_currentUser","_currentUser$","init","loginCheckPOST","removeCurrentUser","setEmailAddress","emailAddress","localStorage","setItem","email","login","credentials","success","userProfile","setCurrentUser","getPortalSettings","verifyEmail","userId","providerCode","emailVerification","setPassword","password","isProvider","delegateSetPassword","setDelegateInvitationToken","middleInitial","genderId","genderDescription","dateOfBirth","prefersTextMessage","portalUserId","comments","vendorTransportationProviders","transportationProviders","logout","getEmailAddress","getItem","storedJSON","parse","TrackJS","configure","providerAssigned","getProviderPortalSettingsByLocation","settings","delegatePortalSettings","setLocalPortalSettings","getLocalPortalSettings","portalSettingsJSON","forgotPasswordConfirm","forgotPasswordChange","changePasswordModel","_previousUrl","BehaviorSubject","emailRegex","passwordRegex","phoneRegex","focus","elem","previous","StorageService","storage","_storage","set","create","remove","LogLevel","None","Fatal","Warning","Debug","Information","Verbose","LoggingService","platform","storageService","backupConsole","warn","trace","info","deviceInfo","sessionId","isTrackJsInstalled","verbosityStorageKey","_verbosity","maxMessagesToKeepInMemory","then","verbosity","simpleLoggingEnabled","enableSimpleLogging","hasStateChanged","isSimulator","install","application","enabled","toggleLogOverride","logLevel","clearLoggedMessages","handleLog","logInformation","logTrace","logWarning","logFatal","_log","_error","_warn","_trace","_info","reportCurrentLog","e","setDeviceInfo","device","manufacturer","model","setSessionId","setVersion","is","isConsoleOverride","logToConsoleInternal","localLog","remoteLog","prepareDataForLogging","Error","track","args","isArray","Array","apply","DEFAULT_ZOOM","httpClient","_isLoaded$","center","zoom","disableDefaultUI","zoomControl","mapTypeControlOptions","loadMapsApi","jsonp","googleMapsAPI","val","take","_angular_core__WEBPACK_IMPORTED_MODULE_8__","NotificationService","_snackBar","action","open","panelClass","verticalPosition","warning","API_BASE_URL","InjectionToken","RiderPortalServiceProxyBase","startupBaseUrl","getBaseUrl","ConstructStartupUrl","STORAGE_KEY","overrideBaseUrl","baseUrl","ServiceProxy","http","super","jsonParseReviver","url_","options_","observe","responseType","headers","HttpHeaders","Accept","request","_observableMergeMap","response_","processLoginCheckPOST","_observableCatch","HttpResponseBase","_observableThrow","response","responseBlob","HttpResponse","Blob","_headers","blobToText","_responseText","result200","_observableOf","throwException","roleCheck","processRoleCheck","processLogin","processLogout","loginCheckGET","processLoginCheckGET","tpListRiders","tpResourceId","searchString","encodeURIComponent","processTpListRiders","listRiders","processListRiders","newpassword","newPasswordConfirm","processDelegateSetPassword","processDelegateRiderAddressHistory","tpDelegateRiderAddressHistory","processTpDelegateRiderAddressHistory","delegateRequestRide","processDelegateRequestRide","tpDelegateRequestRide","tpDelegateOrganizationId","processTpDelegateRequestRide","cancelDelegateRequestRide","rideRequestResourceId","processCancelDelegateRequestRide","updateDelegateRequestRide","processUpdateDelegateRequestRide","delegateRideDetails","rideResourceId","processDelegateRideDetails","listDelegateRideRequests","processListDelegateRideRequests","riderEmail","processDelegatePortalSettings","result400","channelInfo","processChannelInfo","assign","processAssign","transportationProviderId","processStatus","newAccount","processNewAccount","processUserProfile","processEmailVerification","resendEmailVerification","processResendEmailVerification","forgotPassword","userEmail","processForgotPassword","processForgotPasswordConfirm","processForgotPasswordChange","requestRide","processRequestRide","requestRides","processRequestRides","updateRequestRide","processUpdateRequestRide","cancelRequestRide","processCancelRequestRide","listRiderRideRequests","processListRiderRideRequests","rideDetails","processRideDetails","rideReturnReady","processRideReturnReady","listRequestsPendingPayment","processListRequestsPendingPayment","processSetPassword","processPortalSettings","processLocation","fare","portalUserResourceId","transportationProviderResourceId","processFare","sendMessage","processSendMessage","processAddressHistory","addressFavorites","processAddressFavorites","addAddressFavorite","addressResourceId","processAddAddressFavorite","removeAddressFavorite","processRemoveAddressFavorite","vendorTpPendingRides","daysFromToday","processVendorTpPendingRides","genderTypes","processGenderTypes","rideRequirementTypes","processRideRequirementTypes","rideReservationTypes","processRideReservationTypes","rideStatusTypes","processRideStatusTypes","createTransportationProvider","processCreateTransportationProvider","updateTransportationProvider","resourceId","processUpdateTransportationProvider","createDelegate","delegateOrgResourceId","processCreateDelegate","updateDelegate","processUpdateDelegate","getDelegate","processGetDelegate","createDelegateOrg","processCreateDelegateOrg","updateDelegateOrg","processUpdateDelegateOrg","getDelegateOrg","processGetDelegateOrg","vendorTpEmailAvailable","processVendorTpEmailAvailable","createPortaluser","processCreatePortaluser","updatePortaluser","processUpdatePortaluser","disableTpPortaluser","processDisableTpPortaluser","enableTpPortaluser","processEnableTpPortaluser","resendDelegateEmailVerification","processResendDelegateEmailVerification","resendDelegateInvite","processResendDelegateInvite","pendingRides","toISOString","processPendingRides","vendor","tpRideResourceId","rideAccepted","rideStatusMessage","processVendor","rideDetails2","processRideDetails2","blockRider","processBlockRider","summary","processSummary","inviteToPortal","tpResourceIdString","portalUserResourceIdString","processInviteToPortal","HttpClient","optional","Optional","SwaggerException","isSwaggerException","obj","blob","reader","FileReader","onload","readAsText","getChannelName","env","majorVersion","Number","getLegacyChannelName","APP_CHANNELS","apiUrl","displayName","autoUpdates","AlertService","alertController","presentAlert","onDismiss","alertObj","onDidDismiss","present","presentAlertAsync","host","Capacitor","isNativePlatform","startsWith","SettingsService","alertService","storageKey","envMap","currentChannel","getCurrentChannel","isProduction","find","channel","changeChannel","buildId","snapshotBuildId","alertOptions","cssClass","header","subHeader","buttons","selectedEnv","onChannelChange","label","checked","selectedChannel","DateFormat","time","hour","minute","fromISO","toISO","includeOffset","toUTC","toJSDate","today","returnTime","toISODate","getDate","zone","toLocal","getDateInFormFormat","getLongDate","getTime","getDisplayTime","getNonAdjustedDate","datetime","getHour","get24Hour","getMinute","getMeridiem","getUTC","setZone","pickup","getTimeSplit","dropOff","_statuses","rideStatusId","toolTip","icon","iconColor","STATUSES","list","getByName","ValuesService","getRideReservationTypes","getRideStatusTypes","getGenderTypes","buildMap","buildList","fieldId","m","title","force","res","SnapshotManagementService","isWebPlatform","getPlatform","deploy","config","appId","getConfiguration","getCurrentVersion","getAvailableVersions","ss","mapSnapshotInfo","x","checkForUpdate","_this4","available","rsp","build","snapshotId","incompatibleUpdateAvailable","sync","progressCallback","_this5","syncResponse","updateMethod","versionId","binaryVersionCode","binaryVersionName","SoftwareVersion","binaryOutOfDate","_binaryOutOfDate","outOfDate","_binaryOutOfDate$","snapshotService","loggingService","loadingCtrl","binaryOutOfDate$","snapshotInfo","updateAvailable","showPlayStoreUpgradeButton","upgradeMessage","forceUpdateBeforeLogin","snapshotVersion","configuration","currentVersionId","currentBuildId","snapshotBinaryVersionName","buildDate","setChannel","setVersionOutOfDate","versionOutOfDate","checkForNewVersion","verifyConfiguration","checkSnapshotVersion","forceCheck","loading","spinner","progress","percentage","resp","SharedModule","_angular_core__WEBPACK_IMPORTED_MODULE_11__","declarations","IonicModule","FormsModule","ReactiveFormsModule","CommonModule","RouterModule","ScrollingModule","GoogleMapsModule","NgxMaskPipe","NgxMaskDirective","CdkStepperModule","provideHttpClient","withInterceptorsFromDi","withJsonpSupport","provideNgxMask","hasLat","Math","abs","hasLng","missingValue","production","appName","brandKey","maxLoginAttempts","display","helpUrl","showAccessibilityStatement","AccessibilityStatementComponent","PluginService","cachedEnvironmentInfo","getEnvironmentInfo","forceCacheRefresh","Device","getInfo","appInfo","App","uuid","getId","platformVersion","webViewVersion","capacitorVersion","playStoreVersion","applicationId","applicationName","DeviceService","settingsService","versionService","pluginService","packageName","registerDevice","envInfo","ionicChannel","ionicSnapshotBuildId","serialNumber","storeUpdateRequired","alert","AppComponent","iconRegistry","sanitizer","brand","handleIcons","setTitle","navigate","sanitizedPath","bypassSecurityTrustResourceUrl","addSvgIcon","AuthGuard","canActivate","createUrlTree","OutOfSupportComponent","storeName","ProfileComponent","user$","delete","routes","redirectTo","pathMatch","loadChildren","all","__webpack_require__","bind","LoginModule","component","RidesModule","PaymentsModule","SelectRideModule","RiderLocationModule","AppRoutingModule","forRoot","scrollPositionRestoration","IonicStorageModule","driverOrder","logoImgUrl","webPaymentToken","isTestAccount","companyLogoUrl","defaultAccountId","defaultAccountDisplayValue","defaultAccountDisplayName","allowCancellations","allowRideRequestsFromSelfRegisteredRiders","denyBasedOnMinDaysBeforeRideDate","maximumNumberOfDaysInTheFuture","denyBasedOnOutOfServiceDate","denyBasedOnRouteAvailability","acceptBasedOnScheduling","denyBasedOnScheduling","minimumNumberOfHoursBeforePriorityTime","denyIfRiderIsInactive","denyIfRideIsSoonerThanPriorityTimeMinimumHours","allowRiderToPayForRides","requirePaymentForRide","allowRiderToPutMoneyOnPasses","denyIfRideIsTooFarInTheFuture","outOfServiceDates","paymentProvider","MockService","futureRides","pastRides","requestedRides","totalRecords","pageSize","distance","crowFliesDistance","isNaN","startOf","calcFare","rideFares","buildRideRequestResponse","rideRequest","rideId","responseDetails","responseMessage","cancelled","lat1","lon1","lat2","lon2","p","PI","cos","miles","asin","sqrt","toLocaleString","maximumFractionDigits","rideRequestResponseCode","initialAcceptStatus","initialAcceptMessage","driver","vehicle","scheduledPickupTime","riderName","scheduledPickupTimeUTC","AuthInterceptor","mock","intercept","toLowerCase","statusText","clone","setHeaders","Authorization","handle","ErrorService","snackBar","showGlobalErrorMessage","errorMessage","openFromComponent","GlobalErrorHandler","errorSvc","loggerService","originalError","AppBrandInterceptor","req","clonedRequest","initialConfig","AppModule","bootstrap","BrowserModule","BrowserAnimationsModule","useFactory","HTTP_INTERCEPTORS","useClass","multi","RouteReuseStrategy","IonicRouteStrategy","ErrorHandler","Deploy","ServiceWorkerModule","register","registrationStrategy","enableProdMode","document","addEventListener","__NgCli_bootstrap_1","bootstrapModule","base","webpackAsyncContext","o","ids","Object","module"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./src/app/config/build-info.ts","./src/app/material/material.module.ts","./src/app/select-ride/services/address-parser.service.ts","./src/app/select-ride/services/address-search.service.ts","./src/app/select-ride/services/request-builder.service.ts","./src/app/shared/components/cdk-steps/cdk-steps.component.ts","./src/app/shared/components/error-display/error-display.component.ts","./src/app/shared/components/error-display/error-display.component.html","./src/app/shared/components/footer/footer.component.ts","./src/app/shared/components/footer/footer.component.html","./src/app/shared/components/header/header.component.ts","./src/app/shared/components/header/header.component.html","./src/app/shared/components/map/map.component.ts","./src/app/shared/components/map/map.component.html","./src/app/shared/components/not-found/not-found.component.ts","./src/app/shared/components/not-found/not-found.component.html","./src/app/shared/components/ride/ride.component.ts","./src/app/shared/components/ride/ride.component.html","./src/app/shared/models/states.model.ts","./src/app/shared/components/stax/stax.component.ts","./src/app/shared/components/stax/stax.component.html","./src/app/shared/enums/reservation-type.enum.ts","./src/app/shared/enums/ride-requirement.enum.ts","./src/app/shared/pipes/phone.pipe.ts","./src/app/shared/pipes/priorityTime.pipe.ts","./src/app/shared/services/authentication.service.ts","./src/app/shared/services/helper.service.ts","./src/app/shared/services/storage.service.ts","./src/app/shared/services/logging.service.ts","./src/app/shared/services/maps.service.ts","./src/app/shared/services/notification.service.ts","./src/app/shared/services/nswag/service-proxies.ts","./src/app/shared/services/settings.utility.ts","./src/app/shared/services/alert.service.ts","./src/app/shared/services/settings.service.ts","./src/app/shared/services/time-helper.service.ts","./src/app/shared/models/ride-status.model.ts","./src/app/shared/services/values.service.ts","./src/app/select-ride/services/snapshot-management.service.ts","./src/app/shared/services/version.service.ts","./src/app/shared/shared.module.ts","./src/app/shared/validators/address.validator.ts","./src/environments/environment.cts.ts","./src/app/accessibility-statement/accessibility-statement.component.ts","./src/app/accessibility-statement/accessibility-statement.component.html","./src/app/select-ride/services/plugin.service.ts","./src/app/shared/services/device.service.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/shared/guards/auth.guard.ts","./src/app/out-of-support/out-of-support.component.ts","./src/app/out-of-support/out-of-support.component.html","./src/app/profile/profile.component.ts","./src/app/profile/profile.component.html","./src/app/app.routing.ts","./src/app/shared/services/mocks/data/login.ts","./src/app/shared/services/mocks/data/portal-settings.ts","./src/app/shared/services/mocks/mock.service.ts","./src/app/shared/auth.interceptor.ts","./src/app/shared/services/error.service.ts","./src/app/shared/global-error.handler.ts","./src/app/shared/brand.interceptor.ts","./src/app/app.module.ts","./src/main.ts","./node_modules/@ionic/core/dist/esm/ lazy ^\\.\\/.*\\.entry\\.js$ include: \\.entry\\.js$ exclude: \\.system\\.entry\\.js$ namespace object"],"sourcesContent":["import packageJson from 'package.json';\r\nimport { environment } from '../../environments/environment';\r\n// Note: do not check in over this. When we run locally, we will be able to identify local testing using this.\r\nexport const buildInfo = {\r\n name: 'TripPortal',\r\n ionicAppId: environment.ionicAppId,\r\n ionicAppChannel: `dev.${packageJson.version}[0]`,\r\n publicVersion: packageJson.version,\r\n internalVersion: '2025.02.04-15.17.59.191',\r\n date: '2025-02-04T15:17:59.191Z',\r\n};\r\n","import { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatBadgeModule } from '@angular/material/badge';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { NgModule } from '@angular/core';\r\n\r\n@NgModule({\r\n exports: [\r\n MatAutocompleteModule,\r\n MatBadgeModule,\r\n MatButtonModule,\r\n MatCheckboxModule,\r\n MatDatepickerModule,\r\n MatDialogModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatMenuModule,\r\n MatNativeDateModule,\r\n MatProgressSpinnerModule,\r\n MatRadioModule,\r\n MatSelectModule,\r\n MatSortModule,\r\n MatStepperModule,\r\n MatTabsModule,\r\n MatTooltipModule,\r\n MatSnackBarModule,\r\n MatIconModule,\r\n MatPaginatorModule,\r\n MatSlideToggleModule,\r\n ],\r\n})\r\nexport class MaterialModule { }\r\n","import { AddressModel } from '../../shared/services/nswag/service-proxies';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AddressParserService {\r\n address: AddressModel;\r\n\r\n constructor() { }\r\n\r\n parseAddressFromPlace(place: google.maps.places.PlaceResult): AddressModel {\r\n const byType = (place.address_components || []).reduce(function (\r\n acc,\r\n data,\r\n ) {\r\n data.types.forEach(function (type) {\r\n acc[type] = data;\r\n });\r\n return acc;\r\n },\r\n {});\r\n\r\n const result = {\r\n name: place.name,\r\n streetNumber: getAddressComponent('street_number'),\r\n streetName: getAddressComponent('route'),\r\n city:\r\n getAddressComponent('locality') ||\r\n getAddressComponent('sublocality') ||\r\n getAddressComponent('sublocality_level_1') ||\r\n getAddressComponent('neighborhood') ||\r\n getAddressComponent('administrative_area_level_3') ||\r\n getAddressComponent('administrative_area_level_2'),\r\n county: getAddressComponent('administrative_area_level_2'),\r\n stateShort: getAddressComponent('administrative_area_level_1', true),\r\n stateLong: getAddressComponent('administrative_area_level_1'),\r\n countryShort: getAddressComponent('country', true),\r\n countryLong: getAddressComponent('country'),\r\n zip: getAddressComponent('postal_code'),\r\n };\r\n\r\n return {\r\n name: result.name,\r\n address1: getAddressLine1(result),\r\n address2: null,\r\n city: result.city,\r\n state: result.stateShort,\r\n zip: result.zip,\r\n county: result.county,\r\n latitude: place.geometry.location.lat(),\r\n longitude: place.geometry.location.lng(),\r\n phone: undefined,\r\n isFavorite: undefined,\r\n addressId: undefined,\r\n } as AddressModel;\r\n\r\n function getAddressLine1(place_res) {\r\n const line1 = place_res.streetNumber\r\n ? `${place_res.streetNumber} ${place_res.streetName} `\r\n : place.address_components[0].short_name;\r\n return line1;\r\n }\r\n\r\n function getAddressComponent(key, short?) {\r\n if (!(key in byType)) {\r\n return '';\r\n }\r\n return short ? byType[key].short_name : byType[key].long_name;\r\n }\r\n }\r\n}\r\n","import { AddressModel, ServiceProxy } from '../../shared/services/nswag/service-proxies';\r\nimport { AsyncSubject, BehaviorSubject, Observable, ReplaySubject, combineLatest, firstValueFrom, forkJoin, of } from 'rxjs';\r\nimport { Injectable, NgZone } from '@angular/core';\r\nimport { catchError, map, startWith, switchMap, tap } from 'rxjs/operators';\r\n\r\nimport { AddressParserService } from './address-parser.service';\r\nimport { AuthenticationService } from '../../shared/services/authentication.service';\r\nimport { LocationModel } from 'src/app/models/location';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AddressSearchService {\r\n\r\n public readonly previousRiderLocations$ = new ReplaySubject(1);\r\n\r\n constructor(\r\n private ngZone: NgZone,\r\n private addressParser: AddressParserService,\r\n private proxies: ServiceProxy,\r\n private auth: AuthenticationService,\r\n ) {\r\n }\r\n\r\n async refreshRiderAddressHistory(): Promise {\r\n try {\r\n const user = await firstValueFrom(this.auth.currentUser$);\r\n const addresses = user && !user.isDelegateUser ? await firstValueFrom(this.proxies.addressHistory()) : [];\r\n const mappedAddresses = addresses.map(address => ({\r\n description: `${address.name ? address.name + ' - ' : ''} ${address.address1} ${address.address2} ${address.city}, ${address.state}`,\r\n coords: { lat: address.latitude, lng: address.longitude },\r\n address,\r\n isGoogleResult: false,\r\n }));\r\n this.previousRiderLocations$.next(mappedAddresses);\r\n return mappedAddresses;\r\n } catch (err) {\r\n console.error(err);\r\n return [];\r\n }\r\n }\r\n\r\n search(\r\n vendorRiderId: string,\r\n searchText: string,\r\n autoCompleteService: google.maps.places.AutocompleteService,\r\n ): Observable {\r\n const sanitizedSearchText = searchText?.trim()?.toUpperCase();\r\n const validSearch = sanitizedSearchText.length >= 2;\r\n\r\n const googleSearch$ = this.loadGooglePlaces(validSearch, sanitizedSearchText, autoCompleteService);\r\n\r\n return forkJoin([\r\n firstValueFrom(this.loadPreviousLocations(vendorRiderId)).catch(err => { console.error(err); return []; }),\r\n firstValueFrom(googleSearch$),\r\n ]).pipe(\r\n map(([addresses, predictions]) => {\r\n const previousLocations: LocationModel[] = addresses\r\n .filter(item => !validSearch || item.description.toUpperCase().includes(sanitizedSearchText));\r\n\r\n const googleLocations: LocationModel[] =\r\n predictions.map(location => {\r\n return {\r\n id: location.place_id,\r\n description: location.description,\r\n coords: { lat: 0, lng: 0 },\r\n address: undefined,\r\n isGoogleResult: true,\r\n };\r\n });\r\n\r\n return [...previousLocations, ...googleLocations];\r\n }),\r\n );\r\n }\r\n\r\n /** Get previously used locations for a user */\r\n loadPreviousLocations(vendorRiderId: string): Observable {\r\n\r\n const user = this.auth.getCurrentUser();\r\n\r\n if (!user) { return of([]); }\r\n if (!user.isDelegateUser) { return this.previousRiderLocations$; }\r\n if (!vendorRiderId) { return of([]); }\r\n\r\n return this.proxies.delegateRiderAddressHistory(vendorRiderId).pipe(\r\n map((addresses: AddressModel[]) => addresses.map(address => {\r\n return {\r\n description: `${address.name ? address.name + ' - ' : ''} ${address.address1} ${address.address2} ${address.city}, ${address.state}`,\r\n coords: { lat: address.latitude, lng: address.longitude },\r\n address,\r\n isGoogleResult: false,\r\n };\r\n })),\r\n );\r\n }\r\n\r\n geocodeAddress(\r\n address: AddressModel,\r\n geocoder: google.maps.Geocoder,\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n if (!address) {\r\n reject('Address not found');\r\n }\r\n const searchCriteria = `${address.address1}, ${address.city}, ${address.state} ${address.zip}`;\r\n geocoder.geocode({ address: searchCriteria }, (results, status) => {\r\n if (status !== google.maps.GeocoderStatus.OK) {\r\n reject('Cannot geocode this address.');\r\n }\r\n const place: google.maps.GeocoderResult = results[0];\r\n const coordinates = place.geometry.location.toJSON();\r\n resolve({\r\n ...address,\r\n latitude: coordinates.lat,\r\n longitude: coordinates.lng,\r\n });\r\n });\r\n });\r\n }\r\n\r\n getAddressFromGeoCode(\r\n event: google.maps.MapMouseEvent,\r\n geocoder: google.maps.Geocoder,\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n if (!location) {\r\n reject('Coordinates not found');\r\n }\r\n geocoder.geocode({ location: event.latLng }, (results, status) => {\r\n if (status !== google.maps.GeocoderStatus.OK) {\r\n reject('Cannot geocode this location.');\r\n }\r\n const place: google.maps.GeocoderResult = results[0];\r\n const address = this.addressParser.parseAddressFromPlace(place);\r\n const coordinates = place.geometry.location.toJSON();\r\n resolve({\r\n ...address,\r\n latitude: coordinates.lat,\r\n longitude: coordinates.lng,\r\n });\r\n });\r\n });\r\n }\r\n\r\n loadGooglePlaces(\r\n hasCriteria: boolean,\r\n searchCriteria: string,\r\n autoCompleteService: google.maps.places.AutocompleteService,\r\n ): Observable {\r\n if (!hasCriteria) {\r\n return of([]);\r\n }\r\n const subject = new AsyncSubject();\r\n autoCompleteService.getPlacePredictions({\r\n input: searchCriteria,\r\n componentRestrictions: { country: 'us' },\r\n },\r\n (predictions, status) => {\r\n if (\r\n status !== google.maps.places.PlacesServiceStatus.OK &&\r\n status !== google.maps.places.PlacesServiceStatus.ZERO_RESULTS\r\n ) {\r\n subject.error(\r\n 'Something went wrong with that location - please try another one.',\r\n );\r\n } else {\r\n subject.next(predictions || []);\r\n }\r\n subject.complete();\r\n },\r\n );\r\n return subject.asObservable();\r\n }\r\n\r\n getPlaceDetails(\r\n id: string,\r\n placesService: google.maps.places.PlacesService,\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n placesService.getDetails({ placeId: id }, (result, status1) => {\r\n if (status1 !== google.maps.places.PlacesServiceStatus.OK) {\r\n reject(\r\n 'Something went wrong with that location - please try another one.',\r\n );\r\n }\r\n const address = this.addressParser.parseAddressFromPlace(result);\r\n resolve(address);\r\n });\r\n });\r\n }\r\n\r\n getCurrentDeviceLocation(): Observable {\r\n return new Observable((observer) => {\r\n if (window.navigator && window.navigator.geolocation) {\r\n window.navigator.geolocation.getCurrentPosition(\r\n (position) => {\r\n const latLng: google.maps.LatLngLiteral = {\r\n lat: position.coords.latitude,\r\n lng: position.coords.longitude,\r\n };\r\n this.ngZone.run(() => {\r\n observer.next(latLng);\r\n observer.complete();\r\n });\r\n },\r\n (error) => observer.error(error),\r\n );\r\n } else {\r\n observer.error('Unsupported Browser');\r\n }\r\n });\r\n }\r\n}\r\n","import { RequestRideResponse, RideRequest, TransportationProviderModel, UserProfile } from '../../shared/services/nswag/service-proxies';\r\n\r\nimport { AuthenticationService } from 'src/app/shared/services/authentication.service';\r\nimport { DateTime } from 'luxon';\r\nimport { Injectable } from '@angular/core';\r\nimport { MapsService } from '../../shared/services/maps.service';\r\nimport { PortalUserRole } from 'src/app/shared/enums/user-role.enum';\r\nimport { ReservationType } from 'src/app/shared/enums/reservation-type.enum';\r\nimport { TimeHelperService } from 'src/app/shared/services/time-helper.service';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { ValuesService } from '../../shared/services/values.service';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { RideRequirementType } from '../../shared/enums/ride-requirement.enum';\r\nimport { ExtendedRideRequest } from '../../shared/models/ride.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RequestBuilderService {\r\n static DEFAULT_LOCATION: google.maps.LatLngLiteral = {\r\n lat: 39.8283459,\r\n lng: -98.5794797,\r\n };\r\n\r\n deviceLocation: google.maps.LatLngLiteral;\r\n\r\n /** Holds a new unregistered rider (delegate view) to be submitted along with the ride. */\r\n newRider: UserProfile;\r\n\r\n /** Holds found provider which will be providing the ride */\r\n transportationProvider: TransportationProviderModel;\r\n availableTransportationProviders: TransportationProviderModel[];\r\n requestRideResponse: RequestRideResponse;\r\n pickupTime: string;\r\n\r\n formValues: UntypedFormGroup['value'] = {};\r\n isReturn: boolean = false;\r\n\r\n constructor(\r\n private authSvc: AuthenticationService,\r\n private valueSvc: ValuesService,\r\n ) {\r\n let fallbackLocation: google.maps.LatLngLiteral;\r\n const currentUser = this.authSvc.getCurrentUser();\r\n const transportationProvider = currentUser?.transportationProvider;\r\n if (transportationProvider?.defaultLatitude && transportationProvider?.defaultLongitude) {\r\n fallbackLocation = { lat: transportationProvider.defaultLatitude, lng: transportationProvider.defaultLongitude };\r\n } else {\r\n fallbackLocation = MapsService.DEFAULT_CENTER;\r\n }\r\n\r\n if (!currentUser?.isDelegateUser) {\r\n navigator.geolocation.getCurrentPosition(\r\n value => {\r\n this.deviceLocation = {\r\n lat: value.coords.latitude,\r\n lng: value.coords.longitude,\r\n };\r\n },\r\n () => { this.deviceLocation = fallbackLocation; },\r\n );\r\n } else {\r\n this.deviceLocation = fallbackLocation;\r\n }\r\n }\r\n\r\n /** Lists all available transportation providers for the current user. */\r\n listTransportationProviders(): TransportationProviderModel[] {\r\n return this.availableTransportationProviders;\r\n }\r\n\r\n /** Returns current user as a number. Rider = 1, Delegate = 2 */\r\n getCurrentUserRole(): PortalUserRole {\r\n return this.authSvc.getCurrentUser().isDelegateUser ? 2 : 1;\r\n }\r\n\r\n /** get return values for form */\r\n getReturnRideValues(value: UntypedFormGroup['value']) {\r\n const returnReservationType = ReservationType.Pickup;\r\n const priorityTime = value.pickupTimeString || value.dropoffTimeString;\r\n\r\n\r\n const returnValues = {\r\n reservationTypeId: returnReservationType,\r\n dateString: value.dateString,\r\n pickupAddress: value.dropoffAddress,\r\n dropoffAddress: value.pickupAddress,\r\n pickupTimeString: TimeHelperService.getReturnTime({ date: value.dateString, priorityTime }),\r\n dropoffTimeString: null,\r\n returnRide: true,\r\n };\r\n\r\n return returnValues;\r\n }\r\n\r\n reset(requestForm?: UntypedFormGroup): void {\r\n this.newRider = null;\r\n this.formValues = {};\r\n this.isReturn = false;\r\n this.transportationProvider = null;\r\n this.availableTransportationProviders = null;\r\n this.pickupTime = null;\r\n this.requestRideResponse = null;\r\n\r\n if (requestForm) {\r\n // reset form values\r\n const startDateTime: DateTime = DateTime.now().plus({ hours: 2 });\r\n const startDate: string = startDateTime.toFormat('yyyy-MM-dd');\r\n const startPickUpTime: string = startDateTime.toFormat('HH:mm');\r\n\r\n requestForm.reset({\r\n date: startDate,\r\n pickupTime: startPickUpTime,\r\n dropoffTime: startPickUpTime,\r\n });\r\n }\r\n }\r\n\r\n async mapRides(body: any[]): Promise {\r\n const requirementTypes = await firstValueFrom(this.valueSvc.getRideRequirementTypes());\r\n return body.map(_ride => {\r\n const ride = { ..._ride };\r\n const rideDate = ride.dateString;\r\n const pickupTimeString = ride.pickupTimeString;\r\n const dropoffTimeString = ride.dropoffTimeString;\r\n const escorts = ride.escorts ?? 0;\r\n const fareAmount = ride.fareAmount ?? 0;\r\n\r\n const rideRequirements = [];\r\n\r\n if (ride.wheelchairRequired) {\r\n rideRequirements.push(requirementTypes.getById(RideRequirementType.Wheelchair).rideRequirementId);\r\n }\r\n if (ride.stretcherRequired) {\r\n rideRequirements.push(requirementTypes.getById(RideRequirementType.Stretcher).rideRequirementId);\r\n }\r\n if (ride.liftRequired) {\r\n rideRequirements.push(requirementTypes.getById(RideRequirementType.Lift).rideRequirementId);\r\n }\r\n\r\n const formattedPickupTime = pickupTimeString ?\r\n String(TimeHelperService.getDateTime(rideDate, pickupTimeString, 'ISO')).split('.')[0] + 'Z' : null;\r\n const formattedDropoffTime = dropoffTimeString ?\r\n String(TimeHelperService.getDateTime(rideDate, dropoffTimeString, 'ISO')).split('.')[0] + 'Z' : null;\r\n const formattedRideDate = ride.dateString ?\r\n String(TimeHelperService.getDateTime(rideDate, dropoffTimeString, 'ISO')).split('.')[0] + 'Z' : null;\r\n\r\n ride.pickupTime = formattedPickupTime;\r\n ride.dropOffTime = formattedDropoffTime;\r\n ride.rideDate = formattedRideDate;\r\n ride.rideRequirements = rideRequirements;\r\n ride.escorts = escorts;\r\n ride.fareAmount = fareAmount;\r\n\r\n return ride;\r\n });\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CdkStepper } from '@angular/cdk/stepper';\r\n\r\n@Component({\r\n selector: 'app-cdk-steps',\r\n template:\r\n '',\r\n providers: [{ provide: CdkStepper, useExisting: StepsComponent }],\r\n})\r\nexport class StepsComponent extends CdkStepper {}\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MatSnackBarRef, MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\r\n\r\n@Component({\r\n selector: 'app-error-display',\r\n templateUrl: './error-display.component.html',\r\n styleUrls: ['./error-display.component.scss'],\r\n})\r\nexport class ErrorDisplayComponent {\r\n constructor(\r\n private snackbarRef: MatSnackBarRef,\r\n @Inject(MAT_SNACK_BAR_DATA) public data?: string,\r\n ) { }\r\n\r\n close() {\r\n this.snackbarRef.dismiss();\r\n }\r\n\r\n retry() {\r\n window.location.reload();\r\n }\r\n}\r\n","Oops, something went wrong!\r\n\r\n

{{ data }}

\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n\r\n

For assistance, please contact support:

\r\n
\r\n","import { Component, inject } from '@angular/core';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { distinctUntilChanged, filter, map, startWith, tap } from 'rxjs/operators';\r\n\r\nimport { AuthenticationService } from '../../services/authentication.service';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { VersionService } from '../../services/version.service';\r\nimport { ExtendedUserProfile } from '../../../models/profile.type';\r\n\r\n@Component({\r\n selector: 'app-footer',\r\n templateUrl: './footer.component.html',\r\n styleUrls: ['./footer.component.scss'],\r\n})\r\nexport class FooterComponent {\r\n\r\n private readonly _router = inject(Router);\r\n private readonly _auth = inject(AuthenticationService);\r\n private readonly _versionService = inject(VersionService);\r\n\r\n public readonly currentYear: number = new Date().getFullYear();\r\n public readonly features = environment.features;\r\n public readonly companyName = environment.companyName;\r\n public readonly version: string = this._versionService.buildVersion;\r\n public readonly snapshotInfo$ = this._versionService.snapshotInfo$;\r\n\r\n public readonly returnUrl$: Observable = this._router.events.pipe(\r\n filter((event) => event instanceof NavigationEnd),\r\n map((event: NavigationEnd) => event.url),\r\n );\r\n\r\n public readonly login$: Observable<{ isLoggedIn: boolean, user: ExtendedUserProfile}>\r\n = this._auth.currentUser$.pipe(\r\n map(user => ({ isLoggedIn: !!user, user })),\r\n );\r\n\r\n public readonly showActions$ = this._router.events\r\n .pipe(\r\n filter((event) => event instanceof NavigationEnd),\r\n distinctUntilChanged(),\r\n map((event: NavigationEnd) => !this._hideActions(event.url)),\r\n startWith(!this._hideActions(this._router.url)),\r\n );\r\n\r\n private _hideActions(url: string): boolean {\r\n const hideBackBtnUrls: string[] = ['/out-of-support'];\r\n return hideBackBtnUrls.includes(url);\r\n }\r\n\r\n\r\n}\r\n","\r\n","import { ActivatedRoute, NavigationEnd, Params, Router } from '@angular/router';\r\nimport { Component, OnDestroy } from '@angular/core';\r\nimport { distinctUntilChanged, filter, takeUntil, tap } from 'rxjs/operators';\r\n\r\nimport { HelperService } from '../../services/helper.service';\r\nimport { RequestBuilderService } from '../../../select-ride/services/request-builder.service';\r\nimport { Subject } from 'rxjs';\r\nimport { AuthenticationService } from '../../services/authentication.service';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Component({\r\n selector: 'app-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss'],\r\n})\r\nexport class HeaderComponent implements OnDestroy {\r\n destroyed$: Subject = new Subject();\r\n hideBackBtn: boolean = false;\r\n back: { path: string[]; text: string };\r\n previousUrl: string;\r\n queryParams: Params;\r\n private hideBackBtnUrls: string[] = ['/rides/future', '/rides', '/login', '/logout', '/', '/out-of-support'];\r\n returnUrls = {\r\n 'accessibility-statement': { path: ['/rides'], text: 'back' },\r\n 'recover-account': { path: ['/login'], text: 'back' },\r\n 'accept-invitation/agreement/rider': { path: ['/accept-invitation'], text: 'back' },\r\n 'verify-email/agreement': { path: ['/verify-email'], text: 'back' },\r\n 'rides/future': { path: ['/rides/future'], text: 'back' },\r\n 'payments': { path: ['/rides'], text: 'back' },\r\n 'create-account': { path: ['/create-account'], text: 'back' },\r\n agreement: { text: 'back' },\r\n\r\n 'request-ride': { path: ['/rides'], text: 'cancel' },\r\n 'create-rider': { path: ['/request-ride'], text: 'cancel' },\r\n 'ride/edit': { path: ['/rides'], text: 'cancel' },\r\n };\r\n\r\n constructor(\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private requestBuilder: RequestBuilderService,\r\n private authSvc: AuthenticationService,\r\n ) {\r\n this.router.events\r\n .pipe(\r\n filter((event) => event instanceof NavigationEnd),\r\n distinctUntilChanged(),\r\n tap((event: NavigationEnd) => {\r\n this.back = this.getBackValue(event.url);\r\n this.hideBackBtn = this.hideBackButton(event.url);\r\n }),\r\n takeUntil(this.destroyed$),\r\n )\r\n .subscribe(() => {\r\n this.queryParams = this.route.snapshot.queryParams;\r\n });\r\n }\r\n\r\n getBackValue(url: string): { path: string[]; text: string } {\r\n for (const key in this.returnUrls) {\r\n if (url.includes(key) && key === 'create-rider') return this.returnUrls[key];\r\n if (url.includes(key) ) {\r\n this.returnUrls[key].path = this.previousUrl || this.returnUrls[key].path;\r\n return this.returnUrls[key];\r\n }\r\n }\r\n HelperService.updateUrl(this.previousUrl);\r\n if (/login/.test(url)) { url = '/login'; }\r\n this.previousUrl = url;\r\n return { path: ['rides'], text: 'back' };\r\n }\r\n\r\n public hideBackButton(url: string): boolean {\r\n // Remove the query string part of the url, if there is one\r\n const queryStartIndex = url.indexOf('?');\r\n const rootPage = queryStartIndex === -1 ? url : url.slice(0, queryStartIndex);\r\n\r\n this.hideBackBtn = this.hideBackBtnUrls.includes(rootPage);\r\n\r\n return this.hideBackBtn;\r\n }\r\n\r\n cancel() {\r\n this.requestBuilder.reset();\r\n if (!this.authSvc.getIsProviderAssigned()) {\r\n sessionStorage.removeItem(environment.keys.portalSettings);\r\n console.log('🔍 Portal settings cleared');\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n }\r\n}\r\n","\r\n \r\n \r\n \r\n {{ back.text }}\r\n \r\n \r\n \r\n \r\n \r\n \"Trip\r\n \r\n \r\n \r\n\r\n","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { ControlContainer, FormControl, FormGroup } from '@angular/forms';\r\nimport { Observable, Subject, combineLatest, firstValueFrom, interval, of } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, finalize, startWith, takeUntil, takeWhile, tap } from 'rxjs/operators';\r\n\r\nimport { AddressModel } from '../../services/nswag/service-proxies';\r\nimport { AddressSearchService } from '../../../select-ride/services/address-search.service';\r\nimport { GoogleMap } from '@angular/google-maps';\r\nimport { LocationModel } from 'src/app/models/location';\r\nimport { MapsService } from '../../services/maps.service';\r\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\r\nimport { NotificationService } from '../../services/notification.service';\r\nimport { RequestBuilderService } from '../../../select-ride/services/request-builder.service';\r\nimport { RideRequestFormGroup } from '../../models/ride.model';\r\nimport { addressValidator } from '../../validators/address.validator';\r\n\r\n@Component({\r\n selector: 'app-map',\r\n templateUrl: './map.component.html',\r\n styleUrls: ['./map.component.scss'],\r\n})\r\nexport class MapComponent implements OnInit, OnChanges, OnDestroy {\r\n parentForm: RideRequestFormGroup;\r\n searchGroup = new FormGroup({\r\n searchInput: new FormControl('', [addressValidator]),\r\n address2: new FormControl(''),\r\n });\r\n\r\n private readonly destroyed$ = new Subject();\r\n public readonly apiLoaded$: Observable = this.mapsService.isLoaded$;\r\n public apiLoaded = false;\r\n\r\n public readonly options: google.maps.MapOptions = this.mapsService.DEFAULT_OPTIONS;\r\n\r\n\r\n @Input() controlName: string;\r\n @Input() disabled: boolean;\r\n @Input() required: boolean;\r\n @Input() showSearch: boolean = true;\r\n\r\n // Google Maps\r\n autoCompleteService: google.maps.places.AutocompleteService;\r\n placesService: google.maps.places.PlacesService;\r\n geoCoderService: google.maps.Geocoder;\r\n\r\n // Address Search\r\n @ViewChild('addressSearch') searchElementRef: ElementRef;\r\n locationOptions: LocationModel[] = [];\r\n searchLocations: LocationModel[] = [];\r\n previouslyUsedLocations: LocationModel[] = [];\r\n addressInValid: boolean;\r\n\r\n // Map\r\n @ViewChild('map') googleMap!: GoogleMap;\r\n @Input() marker: {\r\n position: google.maps.LatLngLiteral;\r\n options?: google.maps.MarkerOptions;\r\n } = {\r\n position: RequestBuilderService.DEFAULT_LOCATION,\r\n options: { draggable: true },\r\n };\r\n\r\n @Output() loaded = new EventEmitter();\r\n @Output() addressChange = new EventEmitter>();\r\n\r\n constructor(\r\n private readonly mapsService: MapsService,\r\n private readonly addressSearchService: AddressSearchService,\r\n private readonly controlContainer: ControlContainer,\r\n private readonly notificationService: NotificationService,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.parentForm = this.controlContainer.control as RideRequestFormGroup;\r\n this.addressInValid = this.parentForm.controls[this.controlName]?.invalid;\r\n\r\n // search control with initial value\r\n if (this.controlName) {\r\n this.parentForm.get(this.controlName)?.\r\n valueChanges.pipe(\r\n startWith(this.parentForm.get(this.controlName)?.value),\r\n distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\r\n takeUntil(this.destroyed$),\r\n ).subscribe((value) => {\r\n if (value) { this.searchGroup.get('searchInput').patchValue(value); }\r\n this.searchGroup.get('address2').patchValue(value?.address2);\r\n this.addressInValid = this.parentForm.controls[this.controlName].invalid;\r\n });\r\n }\r\n\r\n /** Load google maps api */\r\n this.apiLoaded$\r\n .pipe(\r\n tap((loaded) => (this.apiLoaded = loaded)),\r\n takeWhile((loaded) => !loaded, true),\r\n )\r\n .subscribe((loaded) => {\r\n this.loaded.emit(loaded);\r\n\r\n /**\r\n * every 10 millisecond check to see if google maps services are loaded yet until they are,\r\n * then set them up for use\r\n */\r\n interval(10)\r\n .pipe(\r\n takeWhile(() => !window.google?.maps?.places, true),\r\n finalize(() => {\r\n /** Once google services are available set them up for use */\r\n this.geoCoderService = new window.google.maps.Geocoder();\r\n this.autoCompleteService =\r\n new window.google.maps.places.AutocompleteService();\r\n if (this.searchElementRef?.nativeElement) {\r\n this.placesService =\r\n new window.google.maps.places.PlacesService(\r\n this.searchElementRef.nativeElement,\r\n );\r\n }\r\n this.handleMarker();\r\n }),\r\n )\r\n .subscribe();\r\n });\r\n\r\n /** Set up address input to listen for changes so that we can update list options accordingly */\r\n const vendorIdControl = this.parentForm.get('vendorRiderId');\r\n combineLatest([\r\n this.searchGroup.get('searchInput')?.valueChanges.pipe(startWith(''), debounceTime(250)),\r\n vendorIdControl\r\n ? vendorIdControl.valueChanges.pipe(startWith(vendorIdControl.value))\r\n : of(''),\r\n ]).pipe(\r\n takeUntil(this.destroyed$),\r\n ).subscribe(([searchTerm, riderVendorId]) => {\r\n this.searchFilterChanged(searchTerm);\r\n });\r\n\r\n /** update address when line 2 changes */\r\n this.searchGroup.get('address2').valueChanges.pipe(\r\n debounceTime(250),\r\n takeUntil(this.destroyed$),\r\n ).subscribe((value) => {\r\n const address = this.searchGroup.get('searchInput').value;\r\n\r\n if (this.controlName && address && typeof address !== 'string') {\r\n this.parentForm\r\n .get(this.controlName)\r\n .patchValue({ ...address, address2: value });\r\n }\r\n this.addressChange.emit({ address2: value });\r\n });\r\n }\r\n\r\n /** Handle input changes */\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.marker) {\r\n this.handleMarker();\r\n }\r\n if (changes.disabled) {\r\n const searchControl = this.searchGroup.get('searchInput');\r\n this.disabled ? searchControl.disable() : searchControl.enable();\r\n // need to create a new marker object because map detection changes does not trigger on mutations\r\n if (this.marker?.options) {\r\n this.marker = {\r\n ...this.marker,\r\n options: { draggable: !this.disabled },\r\n };\r\n }\r\n }\r\n }\r\n\r\n /** If map is loaded, add marker to map */\r\n handleMarker() {\r\n if (!this.apiLoaded || !this.marker?.position) {\r\n return;\r\n }\r\n this.googleMap.panTo(this.marker.position);\r\n }\r\n\r\n /** If address value is a string, search for location options */\r\n async searchFilterChanged(searchText: string | AddressModel): Promise {\r\n if (typeof searchText !== 'string') { return; };\r\n this.parentForm.get(this.controlName)?.patchValue(undefined);\r\n const riderId = this.parentForm.controls.vendorRiderId?.value || null;\r\n\r\n this.locationOptions = await firstValueFrom(\r\n this.addressSearchService.search(riderId, searchText, this.autoCompleteService),\r\n );\r\n }\r\n\r\n /** update address information when user selects a location from the dropdown */\r\n public async updateLocationFromSelection(\r\n $event: MatAutocompleteSelectedEvent,\r\n ) {\r\n if (!this.apiLoaded) { return; }\r\n try {\r\n const location = $event.option.value as LocationModel;\r\n this.searchElementRef.nativeElement.value = location.description;\r\n\r\n let address: AddressModel = location.address;\r\n if (location.isGoogleResult) {\r\n address = await this.addressSearchService.getPlaceDetails(\r\n location.id.toString(),\r\n this.placesService,\r\n );\r\n } else if (!this.isGeoCoded(location)) {\r\n address = await this.addressSearchService.geocodeAddress(\r\n location.address,\r\n this.geoCoderService,\r\n );\r\n }\r\n this.updateLocationFromAddress(address);\r\n } catch (err) {\r\n console.debug('🐞', err);\r\n this.notificationService.error(err, null, 4000);\r\n }\r\n }\r\n\r\n /** Update form when pin location is changed on the map */\r\n async updateLocationOnDragEnd(\r\n event: google.maps.MapMouseEvent,\r\n ): Promise {\r\n try {\r\n const searchInputControl = this.searchGroup.get('searchInput');\r\n const address = await this.addressSearchService.getAddressFromGeoCode(\r\n event,\r\n this.geoCoderService,\r\n );\r\n\r\n searchInputControl.patchValue(address);\r\n this.updateLocationFromAddress(address);\r\n } catch (err) {\r\n console.debug('🐞', err);\r\n this.notificationService.error(err, null, 4000);\r\n }\r\n }\r\n\r\n /** Returns display value for selected location in autocomplete control */\r\n public getDisplayAddress(option?: AddressModel): string {\r\n if (!option?.address1) {\r\n return '';\r\n }\r\n return `${option.address1}, ${option.city}, ${option.state}`;\r\n }\r\n\r\n /** Prevent form submission when user uses enter key to select a location */\r\n public preventSubmission($event: KeyboardEvent): void {\r\n if ($event.key !== 'enter') {\r\n return;\r\n }\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n }\r\n\r\n /** Update maker and form when address is selected */\r\n private updateLocationFromAddress(address: AddressModel) {\r\n if (!address) { return; }\r\n this.marker.position = { lat: address.latitude, lng: address.longitude };\r\n if (this.controlName) {\r\n this.parentForm.get(this.controlName)?.patchValue(address);\r\n }\r\n this.addressChange.emit(address);\r\n this.handleMarker();\r\n }\r\n\r\n /** Check to see if address is already geo coded */\r\n isGeoCoded(location: LocationModel): boolean {\r\n return (\r\n location.isGoogleResult ||\r\n !!(location.coords && location.coords.lat && location.coords.lng)\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n }\r\n}\r\n","\r\n \r\n \r\n\r\n \r\n\r\n \r\n This field is required\r\n Please select a value from the dropdown\r\n \r\n\r\n \r\n\r\n \r\n \r\n ⭐\r\n \r\n {{ option.description }}\r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
","import { Component } from '@angular/core';\r\n@Component({\r\n selector: 'app-not-found',\r\n templateUrl: './not-found.component.html',\r\n styleUrls: ['./not-found.component.scss'],\r\n})\r\nexport class NotFoundComponent {}\r\n","
\r\n
\r\n

Doesn’t seem like this page exists.

\r\n \"not\r\n Go to Ride Requests Page\r\n
\r\n
","import { Component, Input } from '@angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'app-ride',\r\n templateUrl: './ride.component.html',\r\n styleUrls: ['./ride.component.scss'],\r\n})\r\nexport class RideComponent {\r\n @Input() ride: any;\r\n\r\n findTimeClass(type: string) {\r\n if (!type) {\r\n return '';\r\n }\r\n return type.toLocaleLowerCase().replace(/\\s/g, '-');\r\n }\r\n\r\n formatDuration(duration: string): string {\r\n if (!duration) return '';\r\n\r\n const parts = duration.split(':');\r\n const hours = parseInt(parts[0], 10);\r\n const minutes = parseInt(parts[1], 10);\r\n\r\n if (hours > 0) {\r\n return `${hours} hr ${minutes} min`;\r\n } else {\r\n return `${minutes} min`;\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n {{ ride.pickupAddress?.address1 }}\r\n \r\n {{ ride.pickupAddress?.address2 }}\r\n \r\n \r\n {{ ride.pickupAddress?.city }}\r\n {{ ride.pickupAddress?.state }}\r\n {{ ride.pickupAddress?.zip }}\r\n \r\n
\r\n\r\n \"\"\r\n\r\n
\r\n {{ ride.dropoffAddress?.address1 }}\r\n {{\r\n ride.dropoffAddress?.address2\r\n }}\r\n {{ ride.dropoffAddress?.city }} {{ ride.dropoffAddress?.state }}\r\n {{ ride.dropoffAddress?.zip }}\r\n
\r\n\r\n
\r\n \r\n arrow_upward_alt\r\n arrow_downward_alt\r\n {{ ride.reservationTypeDetails?.name }}:\r\n \r\n : {{ ride.time }}\r\n
\r\n\r\n
\r\n
\r\n
directions Distance:
\r\n
{{ ride.fareResponseItem?.distance | number: '1.2-2' }} miles
\r\n
\r\n\r\n
\r\n
schedule Duration:
\r\n
{{ formatDuration(ride.fareResponseItem?.duration.toString()) }}
\r\n
\r\n\r\n
\r\n
group Attendants:
\r\n
{{ ride.escorts || 0 }}
\r\n
\r\n\r\n
\r\n
\r\n accessible\r\n airline_seat_flat\r\n directions_walk\r\n Mobility:\r\n
\r\n
\r\n
Wheelchair
\r\n
Stretcher
\r\n
None
\r\n
\r\n
\r\n\r\n
\r\n
payments Fare:
\r\n
{{ ride.fareResponseItem?.fareAmount | currency }}
\r\n
\r\n\r\n
\r\n
Comments:
\r\n
{{ ride.comments }}
\r\n
\r\n
\r\n
\r\n
\r\n","\r\nconst STATES = [\r\n { code: 'AL', name: 'Alabama', isTerritory: false },\r\n { code: 'AK', name: 'Alaska', isTerritory: false },\r\n { code: 'AS', name: 'American Samoa', isTerritory: true },\r\n { code: 'AZ', name: 'Arizona', isTerritory: false },\r\n { code: 'AR', name: 'Arkansas', isTerritory: false },\r\n { code: 'CA', name: 'California', isTerritory: false },\r\n { code: 'CO', name: 'Colorado', isTerritory: false },\r\n { code: 'CT', name: 'Connecticut', isTerritory: false },\r\n { code: 'DE', name: 'Delaware', isTerritory: false },\r\n { code: 'DC', name: 'District Of Columbia', isTerritory: true },\r\n { code: 'FM', name: 'Federated States Of Micronesia', isTerritory: true },\r\n { code: 'FL', name: 'Florida', isTerritory: false },\r\n { code: 'GA', name: 'Georgia', isTerritory: false },\r\n { code: 'GU', name: 'Guam', isTerritory: true },\r\n { code: 'HI', name: 'Hawaii', isTerritory: false },\r\n { code: 'ID', name: 'Idaho', isTerritory: false },\r\n { code: 'IL', name: 'Illinois', isTerritory: false },\r\n { code: 'IN', name: 'Indiana', isTerritory: false },\r\n { code: 'IA', name: 'Iowa', isTerritory: false },\r\n { code: 'KS', name: 'Kansas', isTerritory: false },\r\n { code: 'KY', name: 'Kentucky', isTerritory: false },\r\n { code: 'LA', name: 'Louisiana', isTerritory: false },\r\n { code: 'ME', name: 'Maine', isTerritory: false },\r\n { code: 'MH', name: 'Marshall Islands', isTerritory: true },\r\n { code: 'MD', name: 'Maryland', isTerritory: false },\r\n { code: 'MA', name: 'Massachusetts', isTerritory: false },\r\n { code: 'MI', name: 'Michigan', isTerritory: false },\r\n { code: 'MN', name: 'Minnesota', isTerritory: false },\r\n { code: 'MS', name: 'Mississippi', isTerritory: false },\r\n { code: 'MO', name: 'Missouri', isTerritory: false },\r\n { code: 'MT', name: 'Montana', isTerritory: false },\r\n { code: 'NE', name: 'Nebraska', isTerritory: false },\r\n { code: 'NV', name: 'Nevada', isTerritory: false },\r\n { code: 'NH', name: 'New Hampshire', isTerritory: false },\r\n { code: 'NJ', name: 'New Jersey', isTerritory: false },\r\n { code: 'NM', name: 'New Mexico', isTerritory: false },\r\n { code: 'NY', name: 'New York', isTerritory: false },\r\n { code: 'NC', name: 'North Carolina', isTerritory: false },\r\n { code: 'ND', name: 'North Dakota', isTerritory: false },\r\n { code: 'MP', name: 'Northern Mariana Islands', isTerritory: true },\r\n { code: 'OH', name: 'Ohio', isTerritory: false },\r\n { code: 'OK', name: 'Oklahoma', isTerritory: false },\r\n { code: 'OR', name: 'Oregon', isTerritory: false },\r\n { code: 'PW', name: 'Palau', isTerritory: true },\r\n { code: 'PA', name: 'Pennsylvania', isTerritory: false },\r\n { code: 'PR', name: 'Puerto Rico', isTerritory: false },\r\n { code: 'RI', name: 'Rhode Island', isTerritory: false },\r\n { code: 'SC', name: 'South Carolina', isTerritory: false },\r\n { code: 'SD', name: 'South Dakota', isTerritory: false },\r\n { code: 'TN', name: 'Tennessee', isTerritory: false },\r\n { code: 'TX', name: 'Texas', isTerritory: false },\r\n { code: 'UT', name: 'Utah', isTerritory: false },\r\n { code: 'VT', name: 'Vermont', isTerritory: false },\r\n { code: 'VI', name: 'Virgin Islands', isTerritory: false },\r\n { code: 'VA', name: 'Virginia', isTerritory: false },\r\n { code: 'WA', name: 'Washington', isTerritory: false },\r\n { code: 'WV', name: 'West Virginia', isTerritory: false },\r\n { code: 'WI', name: 'Wisconsin', isTerritory: false },\r\n { code: 'WY', name: 'Wyomin', isTerritory: false },\r\n];\r\nexport const States = STATES.filter(s => !s.isTerritory);\r\nexport const StatesAndTerritories = [...STATES];\r\nexport const Territories = STATES.filter(s => s.isTerritory);\r\n","import { AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, NgZone, OnChanges, OnDestroy, OnInit, Output, Renderer2, SimpleChanges } from '@angular/core';\r\nimport { EMPTY, ReplaySubject, Subject, combineLatest, of } from 'rxjs';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { catchError, startWith, switchMap, takeUntil, tap } from 'rxjs/operators';\r\n\r\nimport { AuthenticationService } from '../../services/authentication.service';\r\nimport { DateTime } from 'luxon';\r\nimport { States } from '../../models/states.model';\r\n\r\ndeclare const StaxJs: any;\r\n\r\n@Component({\r\n selector: 'app-stax',\r\n templateUrl: './stax.component.html',\r\n styleUrls: ['./stax.component.scss'],\r\n})\r\nexport class StaxComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n // private readonly SOURCE = 'https://staxjs.staxpayments.com/stax.js';\r\n private readonly destroyed$ = new Subject();\r\n\r\n public readonly monthRegex = /^(0\\d)|(1[0-2])$/;\r\n public readonly zipRegex = /^\\d{5}$/;\r\n public readonly minYear = DateTime.now().year;\r\n public readonly maxYear = DateTime.now().year + 1000;\r\n public readonly states = States;\r\n validNumber = false;\r\n validCvv = false;\r\n private reload$ = new Subject();\r\n private retryCount = 0;\r\n public crashed = false;\r\n private unhandledrejectionListener: () => void;\r\n\r\n public form = new FormGroup({\r\n firstname: new FormControl('', [Validators.required, Validators.maxLength(50)]),\r\n lastname: new FormControl('', [Validators.required, Validators.maxLength(50)]),\r\n phone: new FormControl('', [Validators.required, Validators.minLength(10)]),\r\n address_1: new FormControl('', [Validators.required, Validators.maxLength(255)]),\r\n address_2: new FormControl('', [Validators.maxLength(255)]),\r\n address_city: new FormControl('', [Validators.required, Validators.maxLength(255)]),\r\n address_state: new FormControl('', [Validators.required, Validators.maxLength(2)]),\r\n address_zip: new FormControl('', [Validators.required, Validators.maxLength(5), Validators.pattern(this.zipRegex)]),\r\n method: new FormControl('card', [Validators.required]),\r\n month: new FormControl('', [Validators.required, Validators.pattern(this.monthRegex)]),\r\n year: new FormControl('', [Validators.required, Validators.min(this.minYear), Validators.max(this.maxYear)]),\r\n });\r\n\r\n private stax: any;\r\n /** Stax field validation listeners */\r\n public staxInvalid = true;\r\n public loaded = false;\r\n public readonly providerToken$ = new ReplaySubject(1);\r\n\r\n @Input() selectedRides: string[] = [];\r\n @Input() total: number = 0;\r\n @Input() showTitle: boolean = true;\r\n @Output() valid = new EventEmitter();\r\n\r\n constructor(\r\n private readonly changeDetectorRef: ChangeDetectorRef,\r\n private readonly authService: AuthenticationService,\r\n private readonly ngZones: NgZone,\r\n private readonly renderer: Renderer2,\r\n ) {\r\n\r\n const currentUser = this.authService.getCurrentUser();\r\n this.form.patchValue({\r\n firstname: currentUser.firstName,\r\n lastname: currentUser.lastName,\r\n phone: currentUser.phoneNumber,\r\n address_1: currentUser.address?.address1,\r\n address_2: currentUser.address?.address2,\r\n address_city: currentUser.address?.city,\r\n address_state: currentUser.address?.state,\r\n address_zip: currentUser.address?.zip,\r\n });\r\n this.unhandledrejectionListener = this.renderer.listen(window, 'unhandledrejection', (event) => {\r\n this.handleError(event.reason);\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.form.valueChanges.pipe(\r\n tap(() => {\r\n this.valid.emit(this.validCvv && this.validNumber && this.form.valid);\r\n }),\r\n takeUntil(this.destroyed$),\r\n ).subscribe();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.ngZones.runGuarded(() => {\r\n combineLatest([\r\n this.providerToken$.asObservable(),\r\n this.reload$.pipe(startWith(true)),\r\n ]).pipe(\r\n switchMap(([token]) => {\r\n this.loaded = false;\r\n if (!token) { return EMPTY; }\r\n this.loaded = true;\r\n try {\r\n this.stax = new StaxJs(token, {\r\n number: {\r\n id: 'card-number', // the html id of the div you want to contain the credit card number field\r\n placeholder: '0000 0000 0000 0000', // the placeholder the field should contain\r\n style: 'height: 32px; width: 100%; font-size: 16px;', // the style to apply to the field\r\n type: 'text', // the input type (optional)\r\n format: 'prettyFormat', // the formatting of the CC number (prettyFormat || plainFormat || maskedFormat)\r\n },\r\n cvv: {\r\n id: 'card-cvv', // the html id of the div you want to contain the cvv field\r\n placeholder: 'CVV', // the placeholder the field should contain\r\n style: 'height: 32px; width: 100%; font-size: 16px;', // the style to apply to the field\r\n type: 'text', // the input type (optional)\r\n },\r\n });\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n // Incomplete listener, triggers on form changes\r\n this.stax.on('card_form_incomplete', ({ validNumber, validCvv }) => {\r\n this.validCvv = validCvv;\r\n this.validNumber = validNumber;\r\n this.changeDetectorRef.detectChanges();\r\n this.valid.emit(this.validCvv && this.validNumber && this.form.valid);\r\n });\r\n\r\n // Complete listener, triggers on form changes\r\n this.stax.on('card_form_complete', ({ validNumber, validCvv }) => {\r\n this.validCvv = validCvv;\r\n this.validNumber = validNumber;\r\n this.changeDetectorRef.detectChanges();\r\n this.valid.emit(this.validCvv && this.validNumber && this.form.valid);\r\n });\r\n\r\n // Display stax fields (card number and vcc)\r\n // Look...I know it's weird, but it works. Something within the Stax/Spreedly code\r\n // is not happy unless we add the call to the end the browswer queue\r\n // there's probably a better way to do this but I can't figure it out\r\n return of(setTimeout(() => this.stax.showCardForm(), 0));\r\n }),\r\n catchError(err => {\r\n console.error('stax failed to load', err);\r\n return EMPTY;\r\n }),\r\n takeUntil(this.destroyed$),\r\n ).subscribe({\r\n next: (handler: any) => {\r\n // for quick testing, you can set a test number and test cvv here\r\n // handler.setTestPan(\"4111111111111111\");\r\n // handler.setTestCvv(\"123\");\r\n console.log('stax ready');\r\n },\r\n error: err => console.error(err),\r\n });\r\n });\r\n\r\n this.ngZones.onError.asObservable().subscribe(event => {\r\n const status = event.message.match(/\"status\"\\:(\\d{3})/)?.[1];\r\n const message = event.message.match(/\"message\"\\:.*?\"(.*?)\"/)?.[1];\r\n this.handleError({ ...event, status, message });\r\n });\r\n }\r\n\r\n handleError(err: any): void {\r\n if (err.status == 504 && this.retryCount < 4) {\r\n this.retryCount++;\r\n this.stax = null;\r\n this.reload$.next(true);\r\n } else {\r\n // It done died, we tried 3 times and we are giving up\r\n this.crashed = true;\r\n }\r\n this.loaded = false;\r\n }\r\n\r\n /** Load the script from CDN */\r\n // TODO: Investigate how to not put the JS script in the HTML and load it only for users that need it\r\n // Currently code is being called from index.html\r\n // private loadScript(): void {\r\n // const isLoaded = !!document.querySelector(`script[src='${this.SOURCE}']`);\r\n // if (isLoaded) { return; }\r\n\r\n // let node = document.createElement('script');\r\n // node.src = this.SOURCE;\r\n // node.async = false;\r\n // document.querySelector('body').appendChild(node);\r\n // }\r\n\r\n /** Pay - not currently needed */\r\n // public async pay(): Promise {\r\n // console.log('Pay');\r\n // if (this.form.invalid || !this.validNumber || !this.validCvv) { return; }\r\n // const extraDetails = this.form.value;\r\n // try {\r\n // const response = await this.stax.pay(extraDetails);\r\n // console.log(response);\r\n // } catch (err) {\r\n // console.error(err);\r\n // }\r\n // }\r\n\r\n /** Get Token */\r\n public async tokenize(): Promise {\r\n if (this.form.invalid || !this.validNumber || !this.validCvv) { return null; }\r\n const extraDetails = this.form.value;\r\n return this.stax.tokenize(extraDetails);\r\n }\r\n\r\n /** For display, adds asterisk on required fields */\r\n public required(formControlName: string): boolean {\r\n return !!this.form.get(formControlName)?.hasValidator(Validators.required);\r\n }\r\n\r\n /** For display, determines whether to show field validation errors */\r\n public getError(formControlName: string, error: string = undefined): boolean {\r\n const control = this.form.get(formControlName);\r\n if (!control?.touched) { return false; }\r\n if (!error) { return control.invalid; }\r\n return !!control.getError(error);\r\n }\r\n\r\n reload(): void {\r\n location.reload();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unhandledrejectionListener();\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n }\r\n}\r\n\r\n/**\r\n * Test Credit Cards Numbers\r\n *\r\n * Visa\r\n * success 4111111111111111\r\n * failure 4012888888881881\r\n *\r\n * MasterCard\r\n * success 5555555555554444\r\n * failure 5105105105105100\r\n *\r\n * American Express\r\n * success 378282246310005\r\n * failure 371449635398431\r\n *\r\n * Discover\r\n * success 6011111111111117\r\n * failure 6011000990139424\r\n */\r\n","
\r\n

Payment Information

\r\n
\r\n Card Information\r\n\r\n \r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n Expiration Date\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n Card Holder Information\r\n \r\n\r\n \r\n\r\n \r\n\r\n
\r\n Billing Address\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n

Failed to load payment system

\r\n

We apologize for the inconvenience

\r\n \r\n
\r\n \r\n
\r\n
\r\n","export enum ReservationType {\r\n Dropoff = 1,\r\n Pickup = 2,\r\n ['Will-Call'] = 3,\r\n}\r\n","export enum RideRequirementType {\r\n Wheelchair = 1,\r\n Stretcher = 2,\r\n Lift = 3,\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'phone',\r\n})\r\nexport class PhonePipe implements PipeTransform {\r\n\r\n transform(value: string, ext?: string, noPhoneText: string = 'Phone Not Set'): string {\r\n if (!value) {\r\n return noPhoneText;\r\n }\r\n let newValue = value.replace(/\\D/g, '');\r\n const match = value.length === 11 && value[0] === '1'\r\n ? newValue.match(/^1(?\\d{3})(?\\d{3})(?\\d{4})$/)\r\n : newValue.match(/^(?\\d{3})(?\\d{3})(?\\d{4})$/);\r\n if (match) {\r\n newValue = match.groups['areaCode'] === '800'\r\n ? '1 800' + match.groups['telPrefix'] + ' - ' + match.groups['lineNum']\r\n : '(' + match.groups['areaCode'] + ') ' + match.groups['telPrefix'] + ' - ' + match.groups['lineNum'];\r\n }\r\n if (ext) { newValue += 'x' + ext; }\r\n return newValue;\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { RideViewModel } from '../models/ride.model';\r\n\r\n@Pipe({\r\n name: 'priorityTime',\r\n})\r\nexport class RidePriorityTimePipe implements PipeTransform {\r\n constructor() { }\r\n transform(ride: RideViewModel): string {\r\n return ride.pickupTimeString ?? ride.dropoffTimeString;\r\n }\r\n}\r\n","import {\r\n ServiceProxy,\r\n UserChangePasswordModel,\r\n UserLoginModel,\r\n TripPortalSettings,\r\n Coordinate,\r\n} from 'src/app/shared/services/nswag/service-proxies';\r\nimport { map, switchMap, tap } from 'rxjs/operators';\r\n\r\nimport { ExtendedUserProfile } from '../../models/profile.type';\r\nimport { Injectable } from '@angular/core';\r\nimport { firstValueFrom, Observable, of, ReplaySubject } from 'rxjs';\r\nimport { TrackJS } from 'trackjs';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthenticationService {\r\n private _currentUser: ExtendedUserProfile = null;\r\n portalSettings: TripPortalSettings;\r\n\r\n private readonly _currentUser$ = new ReplaySubject(1);\r\n public readonly currentUser$ = this._currentUser$.asObservable();\r\n\r\n constructor(\r\n private proxies: ServiceProxy,\r\n ) {\r\n }\r\n\r\n async init(): Promise {\r\n try {\r\n await firstValueFrom(this.proxies.loginCheckPOST());\r\n return this.getCurrentUser();\r\n } catch {\r\n return this.removeCurrentUser();\r\n }\r\n }\r\n\r\n /**\r\n * Saves an email address for future display. This allows the email address\r\n * to survive app reload.\r\n */\r\n setEmailAddress(emailAddress: string) {\r\n localStorage.setItem(environment.keys.email, emailAddress);\r\n }\r\n\r\n /**\r\n * Sends a login request to the API. As a side effect will update the email\r\n * address.\r\n * @returns the current user (after successful login)\r\n */\r\n login(credentials: UserLoginModel): Observable {\r\n this.setEmailAddress(credentials.email);\r\n return this.proxies.login(credentials).pipe(\r\n map((success) => {\r\n if (!success) { return null; }\r\n const user: ExtendedUserProfile = {\r\n token: success.token,\r\n ...success.userProfile,\r\n };\r\n return this.setCurrentUser(user);\r\n }),\r\n switchMap((user) => {\r\n if (user) {\r\n return this.getPortalSettings(credentials.email, user.isDelegateUser).pipe(\r\n map(() => user),\r\n );\r\n } else {\r\n return of(user);\r\n }\r\n }),\r\n );\r\n }\r\n\r\n\r\n\r\n verifyEmail({ code, userId, providerCode }: { code: string, userId: string, providerCode: string }): Observable {\r\n return this.proxies.emailVerification(userId, code, providerCode).pipe(\r\n map(success => {\r\n const user: ExtendedUserProfile = {\r\n token: success.token,\r\n ...success.userProfile,\r\n };\r\n return user;\r\n }),\r\n );\r\n }\r\n\r\n /**\r\n * Sends a registration request to the API which both accepts an invitation,\r\n * sets the password, and completes login.\r\n */\r\n setPassword(password: string, isProvider: boolean): Observable {\r\n return isProvider\r\n ? this.proxies.delegateSetPassword(password, password)\r\n : this.proxies.setPassword(password, password);\r\n }\r\n\r\n /**\r\n * Sets the token for the invitated delegate\r\n * this is just used to send an authenticated request when creating the password\r\n */\r\n setDelegateInvitationToken(token: string) {\r\n const user: ExtendedUserProfile = {\r\n token: token,\r\n firstName: '',\r\n middleInitial: '',\r\n lastName: '',\r\n genderId: 0,\r\n genderDescription: '',\r\n dateOfBirth: '',\r\n phoneNumber: '',\r\n address: undefined,\r\n rideRequirements: [],\r\n prefersTextMessage: false,\r\n emailAddress: '',\r\n isDelegateUser: true,\r\n portalUserId: '',\r\n comments: '',\r\n transportationProvider: undefined,\r\n vendorTransportationProviders: [],\r\n transportationProviders: [],\r\n };\r\n this.setCurrentUser(user);\r\n }\r\n\r\n /**\r\n * Removes our record of the current user and sends a logout instruction to\r\n * the API.\r\n */\r\n async logout(): Promise {\r\n const logout = await firstValueFrom(this.proxies.logout()).catch(err => {\r\n console.error(err);\r\n return null;\r\n });\r\n this.removeCurrentUser();\r\n return logout;\r\n }\r\n\r\n /**\r\n * Requests the current user from the API to validate that they are still\r\n * authenticated. As a side effect will update our record of the current\r\n * user.\r\n * @returns the current user\r\n * @see #getCurrentUser()\r\n */\r\n // validateCurrentUser(): Observable {\r\n // return this.authSvc.GetCurrentUser().pipe(\r\n // map((user) => {\r\n // debugger;\r\n // return true;\r\n // })\r\n // );\r\n // }\r\n\r\n /**\r\n * Returns the latest stored email address (from the currently authenticated\r\n * user, when available), typically for display purposes to the user.\r\n */\r\n getEmailAddress(): string {\r\n if (this.getCurrentUser() && this.getCurrentUser().emailAddress) {\r\n return this.getCurrentUser().emailAddress;\r\n }\r\n return localStorage.getItem(environment.keys.email);\r\n }\r\n\r\n /**\r\n * Returns the current user based upon the last update form the API. This\r\n * differs from #validateCurrentUser() in that it does not hit the API, which\r\n * is suitable for most purposes other than route guards. This current user\r\n * is persistent, which means that client authentication survives app reload.\r\n */\r\n getCurrentUser(): ExtendedUserProfile {\r\n if (!this._currentUser) {\r\n const storedJSON = sessionStorage.getItem(environment.keys.currentUser);\r\n if (storedJSON) {\r\n this._currentUser = JSON.parse(storedJSON);\r\n this._currentUser$.next(this._currentUser);\r\n }\r\n }\r\n return this._currentUser;\r\n }\r\n /**\r\n * Saves a local and persistent copy of the current user.\r\n * @returns the current user that was just set\r\n */\r\n setCurrentUser(\r\n currentUser: ExtendedUserProfile,\r\n ): ExtendedUserProfile {\r\n this._currentUser = currentUser;\r\n this._currentUser$.next(currentUser);\r\n sessionStorage.setItem(\r\n environment.keys.currentUser,\r\n JSON.stringify(currentUser),\r\n );\r\n TrackJS.configure({ userId: String(currentUser.emailAddress) });\r\n return currentUser;\r\n }\r\n\r\n /**\r\n * Clears our record of the current user as required for logout.\r\n */\r\n public removeCurrentUser() {\r\n this._currentUser = null;\r\n this.portalSettings = null;\r\n this._currentUser$.next(null);\r\n sessionStorage.removeItem(environment.keys.currentUser);\r\n sessionStorage.removeItem(environment.keys.portalSettings);\r\n sessionStorage.removeItem(environment.keys.providerAssigned);\r\n TrackJS.configure({ userId: '' });\r\n }\r\n\r\n /**\r\n * find a provider based on pick up and drop off location\r\n * if a provider exist get the portal setting for that provider\r\n */\r\n public getProviderPortalSettingsByLocation(coordinates: Coordinate[] = []): Observable {\r\n return this.proxies.location(coordinates).pipe(\r\n tap((settings) => {\r\n sessionStorage.removeItem(environment.keys.portalSettings);\r\n if (settings) {\r\n sessionStorage.setItem(environment.keys.portalSettings, JSON.stringify(settings));\r\n }\r\n }),\r\n );\r\n }\r\n\r\n /**\r\n * retrieves portal settings from api\r\n */\r\n public getPortalSettings(email: string, isDelegateUser: boolean): Observable {\r\n return (isDelegateUser ? this.proxies.delegatePortalSettings(email) : this.proxies.portalSettings(email))\r\n .pipe(\r\n tap((settings) => {\r\n this.setLocalPortalSettings(settings);\r\n }));\r\n }\r\n\r\n /**\r\n * retrieves local portal settings from session storage\r\n */\r\n public getLocalPortalSettings(): TripPortalSettings | null {\r\n const portalSettingsJSON = sessionStorage.getItem(environment.keys.portalSettings);\r\n this.portalSettings = portalSettingsJSON ? JSON.parse(portalSettingsJSON) : null;\r\n return this.portalSettings;\r\n }\r\n\r\n public setLocalPortalSettings(portalSettings: TripPortalSettings): TripPortalSettings | null {\r\n if (portalSettings) {\r\n sessionStorage.setItem(environment.keys.providerAssigned, 'true');\r\n sessionStorage.setItem(environment.keys.portalSettings, JSON.stringify(portalSettings));\r\n } else {\r\n sessionStorage.setItem(environment.keys.providerAssigned, 'false');\r\n sessionStorage.removeItem(environment.keys.portalSettings);\r\n }\r\n return portalSettings;\r\n }\r\n\r\n public getIsProviderAssigned(): boolean {\r\n const sessionIsProviderAssigned = sessionStorage.getItem(environment.keys.providerAssigned);\r\n const isProviderAssigned = sessionIsProviderAssigned === 'true' ? true : false;\r\n return isProviderAssigned;\r\n }\r\n\r\n public forgotPasswordConfirm(userId: string, code: string): Observable {\r\n return this.proxies.forgotPasswordConfirm(userId, code);\r\n }\r\n public forgotPasswordChange(userId: string, code: string, changePasswordModel: UserChangePasswordModel): Observable {\r\n return this.proxies.forgotPasswordChange(userId, code, changePasswordModel);\r\n }\r\n}\r\n","import { Injectable, ElementRef } from '@angular/core';\r\nimport * as _ from 'lodash';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class HelperService {\r\n static _previousUrl: BehaviorSubject = new BehaviorSubject(null);\r\n static previousUrl: Observable =\r\n HelperService._previousUrl.asObservable();\r\n\r\n static emailRegex = /^\\S{1,}@\\S{1,}$/;\r\n static passwordRegex = /^(?=.*[0-9])(?=.*[a-zA-Z]).{8,}$/;\r\n static phoneRegex = /^\\D?(\\d{3})\\D?\\D?(\\d{3})\\D?(\\d{4})$/;\r\n\r\n constructor() { }\r\n\r\n /**\r\n * Sets the focus on a specific element for user convenience. Typically this\r\n * will come from a field defined using `@ViewChild`, such as:\r\n * @ViewChild('email') emailElem: ElementRef;\r\n * @param elem the element to focus\r\n */\r\n static focus(elem: ElementRef) {\r\n setTimeout(() => {\r\n elem.nativeElement.focus();\r\n });\r\n }\r\n\r\n static updateUrl(previous: string) {\r\n HelperService._previousUrl.next(previous);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Storage } from '@ionic/storage-angular';\r\n// import { LoggingService } from \"./logging.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class StorageService {\r\n private _storage: Storage | null = null;\r\n\r\n constructor(\r\n protected storage: Storage, // protected loggingService: LoggingService\r\n ) {}\r\n\r\n public async set(key: string, value: any): Promise {\r\n if (this._storage == null) {\r\n this._storage = await this.storage.create();\r\n }\r\n await this._storage.set(key, value);\r\n // this.loggingService.log(\"storage save\", value);\r\n }\r\n\r\n public async get(key: string): Promise {\r\n if (this._storage == null) {\r\n this._storage = await this.storage.create();\r\n }\r\n return this._storage.get(key);\r\n }\r\n\r\n public async remove(key: string): Promise {\r\n if (this._storage == null) {\r\n this._storage = await this.storage.create();\r\n }\r\n await this._storage.remove(key);\r\n // this.loggingService.log(\"storage remove: \", key);\r\n }\r\n}\r\n","import { DeviceModel } from './nswag/service-proxies';\r\nimport { Injectable } from '@angular/core';\r\nimport { Platform } from '@ionic/angular';\r\nimport { StorageService } from './storage.service';\r\nimport { Subject } from 'rxjs';\r\nimport { TrackJS } from 'trackjs';\r\nimport { environment } from 'src/environments/environment';\r\n\r\nexport enum LogLevel {\r\n None = -1, // Disable all logging\r\n Fatal = 0, // If you have a pager, it goes off when one of these occurs.\r\n Warning = 1, // Service is degraded or endangered.\r\n Debug = 2, // Internal system events that aren't necessarily observable from the outside.\r\n Information = 3, // The lifeblood of operational intelligence - things happen.\r\n Verbose = 4, // Anything and everything you might want to know about a running block of code.\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LoggingService {\r\n // private originalConsole = {\r\n // log: console.log,\r\n // warn: console.warn,\r\n // error: console.error,\r\n // trace: console.trace,\r\n // info: console.info\r\n // };\r\n public backupConsole = {\r\n log: null,\r\n warn: null,\r\n error: null,\r\n trace: null,\r\n info: null,\r\n };\r\n private deviceInfo = '';\r\n private sessionId = '';\r\n private version = '';\r\n private isTrackJsInstalled = false;\r\n\r\n private verbosityStorageKey = 'verbosity';\r\n private _verbosity: LogLevel = LogLevel.None;\r\n\r\n private maxMessagesToKeepInMemory = 100;\r\n\r\n constructor(\r\n private platform: Platform,\r\n private storageService: StorageService,\r\n ) {\r\n this.storageService\r\n .get(this.verbosityStorageKey)\r\n .then((value) => (this.verbosity = value));\r\n }\r\n\r\n public get simpleLoggingEnabled(): boolean {\r\n return false;\r\n // return this.backupConsole.log == null;\r\n }\r\n\r\n public set simpleLoggingEnabled(enableSimpleLogging: boolean) {\r\n const isSimpleCurrently = this.backupConsole.log == null;\r\n const hasStateChanged = enableSimpleLogging !== isSimpleCurrently;\r\n if (!enableSimpleLogging && !this.isTrackJsInstalled && !this.isSimulator) {\r\n TrackJS.install({\r\n token: '85bb494f73664aa19e6b1b6237d458a5',\r\n application: environment.TrackJS.application\r\n ? environment.TrackJS.application\r\n : 'riderportalcore',\r\n console: { enabled: true },\r\n });\r\n this.isTrackJsInstalled = true;\r\n this.log('TrackJS Installed and active.');\r\n }\r\n if (hasStateChanged) {\r\n this.log(\r\n enableSimpleLogging\r\n ? 'Simple logging mode (without console overrides) enabled.'\r\n : 'Advanced logging with console overrides enabled.',\r\n );\r\n this.toggleLogOverride();\r\n\r\n // If this is advanced logging and we originally had simple logging enabled, force the verbosity to Fatal.\r\n if (!enableSimpleLogging && this._verbosity === LogLevel.None) {\r\n this._verbosity = LogLevel.Fatal;\r\n }\r\n }\r\n }\r\n\r\n public get verbosity() {\r\n if (this._verbosity !== LogLevel.Fatal) {\r\n // if it has not be explicitly overridden then return a value based on if we are in sim\r\n return this.isSimulator ? LogLevel.Verbose : LogLevel.Warning;\r\n }\r\n return this._verbosity;\r\n }\r\n\r\n public set verbosity(logLevel: LogLevel) {\r\n if (this._verbosity !== logLevel) {\r\n this.log(`Log Verbosity set to ${LogLevel[logLevel]}`);\r\n this._verbosity = logLevel;\r\n if (this.simpleLoggingEnabled !== (logLevel === LogLevel.None)) {\r\n this.simpleLoggingEnabled = logLevel === LogLevel.None;\r\n }\r\n this.storageService.set(this.verbosityStorageKey, logLevel).then();\r\n }\r\n }\r\n\r\n clearLoggedMessages() { }\r\n\r\n log(message: any, ...data: any[]) {\r\n this.handleLog(LogLevel.Verbose, message, data);\r\n }\r\n\r\n logInformation(message: string, ...data: any[]) {\r\n this.handleLog(LogLevel.Information, message, data);\r\n }\r\n\r\n logTrace(message: string, ...data: any[]) {\r\n this.handleLog(LogLevel.Debug, message, data);\r\n }\r\n\r\n logWarning(message: string, ...data: any[]) {\r\n this.handleLog(LogLevel.Warning, message, data);\r\n }\r\n\r\n logFatal(message: string, ...data: any[]) {\r\n this.handleLog(LogLevel.Fatal, message, data);\r\n }\r\n\r\n private _log(message: any, ...data: any[]) {\r\n this.handleLog(LogLevel.Verbose, message, data, true);\r\n }\r\n\r\n private _error(message: any, ...data: any[]) {\r\n this.handleLog(LogLevel.Fatal, message, data, true);\r\n }\r\n\r\n private _warn(message: any, ...data: any[]) {\r\n this.handleLog(LogLevel.Warning, message, data, true);\r\n }\r\n\r\n private _trace(message: any, ...data: any[]) {\r\n this.handleLog(LogLevel.Debug, message, data, true);\r\n }\r\n\r\n private _info(message: any, ...data: any[]) {\r\n this.handleLog(LogLevel.Information, message, data, true);\r\n }\r\n\r\n reportCurrentLog() {\r\n if (!this.simpleLoggingEnabled && this.isTrackJsInstalled) {\r\n try {\r\n TrackJS.configure({\r\n userId: this.deviceInfo,\r\n sessionId: this.sessionId,\r\n version: this.version,\r\n });\r\n } catch (e) {\r\n // about all we can do here is just write this out\r\n (this.backupConsole.error || console.error)(\r\n 'Error caught attempting to report console log to track JS',\r\n e,\r\n );\r\n }\r\n }\r\n }\r\n\r\n setDeviceInfo(device: DeviceModel) {\r\n this.deviceInfo = `${device?.manufacturer}-${device?.model}`;\r\n if (this.isTrackJsInstalled) {\r\n TrackJS.configure({\r\n userId: this.deviceInfo,\r\n });\r\n }\r\n }\r\n\r\n setSessionId(sessionId: string) {\r\n this.sessionId = sessionId;\r\n if (this.isTrackJsInstalled) {\r\n TrackJS.configure({\r\n sessionId: this.sessionId,\r\n });\r\n }\r\n }\r\n\r\n setVersion(version: string) {\r\n this.version = version;\r\n if (this.isTrackJsInstalled) {\r\n TrackJS.configure({\r\n version: version,\r\n });\r\n }\r\n }\r\n\r\n private get isSimulator(): boolean {\r\n return !this.platform.is('hybrid');\r\n }\r\n\r\n private toggleLogOverride() {\r\n if (!this.backupConsole.log) {\r\n this.backupConsole.log = console.log;\r\n this.backupConsole.warn = console.warn;\r\n this.backupConsole.error = console.error;\r\n this.backupConsole.error = console.trace;\r\n this.backupConsole.error = console.info;\r\n console.log = (message, data) => this._log('🔍', message, data);\r\n console.warn = (message, data) => this._warn(message, data);\r\n console.error = (message, data) => this._error(message, data);\r\n console.trace = (message, data) => this._trace(message, data);\r\n console.info = (message, data) => this._info('ℹī¸', message, data);\r\n } else {\r\n console.log = this.backupConsole.log;\r\n console.warn = this.backupConsole.warn;\r\n console.error = this.backupConsole.error;\r\n console.trace = this.backupConsole.trace;\r\n console.info = this.backupConsole.info;\r\n this.backupConsole.log =\r\n this.backupConsole.warn =\r\n this.backupConsole.error =\r\n this.backupConsole.error =\r\n this.backupConsole.error =\r\n null;\r\n }\r\n }\r\n\r\n private handleLog(\r\n logLevel: LogLevel,\r\n message: any,\r\n data?: any,\r\n isConsoleOverride?: boolean,\r\n ) {\r\n if (this.simpleLoggingEnabled) {\r\n this.logToConsoleInternal(logLevel, message, data, isConsoleOverride);\r\n } else {\r\n // log everything to the console.\r\n this.localLog(logLevel, message, data, isConsoleOverride);\r\n\r\n if (this.verbosity >= logLevel && !this.isSimulator) {\r\n this.remoteLog(message, data);\r\n }\r\n }\r\n }\r\n\r\n private remoteLog(message: string, data?: any) {\r\n data = this.prepareDataForLogging(data);\r\n try {\r\n if (data instanceof Error) {\r\n TrackJS.track(data);\r\n } else if (data) {\r\n TrackJS.track({ message: message, data: data });\r\n } else {\r\n TrackJS.track(message);\r\n }\r\n } catch (e) {\r\n // this shouldn't cause an error so eat it here\r\n this.logToConsoleInternal(\r\n LogLevel.Fatal,\r\n 'Error caught while remote logging..',\r\n e,\r\n );\r\n }\r\n }\r\n\r\n private localLog(\r\n logLevel: LogLevel,\r\n message: any,\r\n data?: any,\r\n isConsoleOverride?: boolean,\r\n ) {\r\n data = this.prepareDataForLogging(data);\r\n\r\n this.logToConsoleInternal(logLevel, message, data, isConsoleOverride);\r\n }\r\n\r\n private logToConsoleInternal(\r\n logLevel: LogLevel,\r\n message: any,\r\n data?: any,\r\n isConsoleOverride?: boolean,\r\n ) {\r\n const args = [message];\r\n\r\n const isArray = data && Array.isArray(data);\r\n if (isArray && data.length > 0) {\r\n args.push.apply(args, data);\r\n } else if (!isArray && data) {\r\n args.push(data);\r\n }\r\n if (isConsoleOverride) {\r\n // if this is a console.xxx command, then we need to route it to the correct console command\r\n switch (logLevel) {\r\n case LogLevel.Debug:\r\n (this.backupConsole.trace || console.trace).apply(console, args);\r\n break;\r\n case LogLevel.Information:\r\n (this.backupConsole.info || console.info).apply(console, args);\r\n break;\r\n case LogLevel.Fatal:\r\n (this.backupConsole.error || console.error).apply(console, args);\r\n break;\r\n case LogLevel.Warning:\r\n (this.backupConsole.warn || console.warn).apply(console, args);\r\n break;\r\n default:\r\n (this.backupConsole.log || console.log).apply(console, args);\r\n break;\r\n }\r\n } else {\r\n // if this is a call directly to the loggerService and not an error, we should just call log.\r\n // This prevents verbose stack traces where we don't want them.\r\n if (logLevel === LogLevel.Fatal) {\r\n (this.backupConsole.error || console.error).apply(console, args);\r\n } else {\r\n (this.backupConsole.log || console.log).apply('🔍', console, args);\r\n }\r\n }\r\n }\r\n\r\n private prepareDataForLogging(data: any) {\r\n if (data && Array.isArray(data)) {\r\n if (data.length === 0) {\r\n data = null;\r\n } else if (data.length === 1) {\r\n data = data[0];\r\n }\r\n }\r\n return data;\r\n }\r\n}\r\n","import { BehaviorSubject, Observable, of } from 'rxjs';\r\nimport { catchError, map, take, tap } from 'rxjs/operators';\r\n\r\nimport { AuthenticationService } from './authentication.service';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { environment } from '../../../environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MapsService {\r\n private _isLoaded$ = new BehaviorSubject(false);\r\n public isLoaded$: Observable = this._isLoaded$.asObservable();\r\n\r\n static DEFAULT_CENTER: google.maps.LatLngLiteral = {\r\n lat: 39.8283459,\r\n lng: -98.5794797,\r\n };\r\n static DEFAULT_ZOOM: number = 17;\r\n DEFAULT_OPTIONS: google.maps.MapOptions = {\r\n center: MapsService.DEFAULT_CENTER,\r\n zoom: MapsService.DEFAULT_ZOOM,\r\n disableDefaultUI: true,\r\n zoomControl: true,\r\n // mapTypeControl: true,\r\n mapTypeControlOptions: {\r\n position: 3,\r\n },\r\n };\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n private authService: AuthenticationService,\r\n ) {\r\n let fallbackLocation: google.maps.LatLngLiteral;\r\n const currentUser = this.authService.getCurrentUser();\r\n const transportationProvider = currentUser?.transportationProvider;\r\n if (transportationProvider?.defaultLatitude && transportationProvider?.defaultLongitude) {\r\n fallbackLocation = { lat: transportationProvider.defaultLatitude, lng: transportationProvider.defaultLongitude };\r\n } else {\r\n fallbackLocation = MapsService.DEFAULT_CENTER;\r\n }\r\n\r\n if (!currentUser?.isDelegateUser) {\r\n navigator.geolocation.getCurrentPosition(\r\n value => {\r\n this.DEFAULT_OPTIONS.center = {\r\n lat: value.coords.latitude,\r\n lng: value.coords.longitude,\r\n };\r\n },\r\n () => { this.DEFAULT_OPTIONS.center = fallbackLocation; },\r\n );\r\n } else {\r\n this.DEFAULT_OPTIONS.center = fallbackLocation;\r\n }\r\n this.loadMapsApi().subscribe();\r\n }\r\n\r\n /**\r\n * Calls the maps api to get it initialized and loaded\r\n * @returns Observable\r\n */\r\n private loadMapsApi(): Observable {\r\n return this.httpClient\r\n .jsonp(\r\n `https://maps.googleapis.com/maps/api/js?key=${environment.googleMapsAPI}&libraries=places`,\r\n 'callback',\r\n )\r\n .pipe(\r\n map(() => true),\r\n tap((val) => this._isLoaded$.next(val)),\r\n catchError((error) => {\r\n console.debug('🐞', error);\r\n this._isLoaded$.next(false);\r\n return of(false);\r\n }),\r\n take(1),\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class NotificationService {\r\n constructor(private _snackBar: MatSnackBar) { }\r\n\r\n success(message: string, action?: string, duration: number = 3000) {\r\n this._snackBar.open(message, action, { duration: duration, panelClass: ['snackbar-success-notification'] });\r\n }\r\n\r\n error(message: string, action = 'ok', duration: number = undefined) {\r\n this._snackBar.open('Error: ' + message, action, { duration: duration, panelClass: ['snackbar-error-notification'], verticalPosition: 'top' });\r\n }\r\n\r\n warning(message: string, action?: string, duration: number = 3000) {\r\n this._snackBar.open('Warning: ' + message, action, { duration: duration, panelClass: ['snackbar-warning-notification'] });\r\n }\r\n}\r\n","//----------------------\r\n// \r\n// Generated using the NSwag toolchain v13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\r\n// \r\n//----------------------\r\n\r\n/* tslint:disable */\r\n/* eslint-disable */\r\n// ReSharper disable InconsistentNaming\r\n\r\nimport { ConstructStartupUrl, STORAGE_KEY } from \"../settings.service\";\r\nimport { mergeMap as _observableMergeMap, catchError as _observableCatch } from 'rxjs/operators';\r\nimport { Observable, throwError as _observableThrow, of as _observableOf } from 'rxjs';\r\nimport { Injectable, Inject, Optional, InjectionToken } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpResponse, HttpResponseBase } from '@angular/common/http';\r\n\r\nexport const API_BASE_URL = new InjectionToken('API_BASE_URL');\r\n\r\nexport abstract class RiderPortalServiceProxyBase {\r\n private startupBaseUrl: string | undefined = undefined;\r\n\r\n constructor() { }\r\n\r\n /**\r\n * Get the startup base url for this environment\r\n * @param url the default url the api was set up with.\r\n * @returns the default url\r\n */\r\n getBaseUrl(url: string): string {\r\n return ConstructStartupUrl(STORAGE_KEY) || url;\r\n }\r\n\r\n /**\r\n * This is a hack to allow us to override the base url. It's stupid and ugly.\r\n * @param url the url to override the baseUrl with\r\n */\r\n overrideBaseUrl(url: string): void {\r\n if ((this as any)?.baseUrl) (this as any).baseUrl = url;\r\n }\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ServiceProxy extends RiderPortalServiceProxyBase {\r\n private http: HttpClient;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(@Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\r\n super();\r\n this.http = http;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"https://api-dev.requestmyrides.com\");\r\n }\r\n\r\n /**\r\n * Determines if the current user token is valid (Requires Bearer Token)\r\n * @return Success\r\n */\r\n loginCheckPOST(): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/Authentication/login-check\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processLoginCheckPOST(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processLoginCheckPOST(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processLoginCheckPOST(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Determines if the current user token is valid (Requires Bearer Token)\r\n * @return Success\r\n */\r\n roleCheck(): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/Authentication/role-check\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processRoleCheck(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processRoleCheck(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processRoleCheck(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Login for Portal Users (Delegate and Riders)\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n login(body: UserLoginModel | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/Authentication/login\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processLogin(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processLogin(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processLogin(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as LoginResponseModel;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Logs Out / Invalidates the Bearer Token\r\n * @return Success\r\n */\r\n logout(): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/Authentication/logout\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processLogout(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processLogout(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processLogout(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n loginCheckGET(): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/DelegateUser/login-check\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processLoginCheckGET(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processLoginCheckGET(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processLoginCheckGET(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return _observableOf(null as any);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * List RIders Returns a list of delegate Riders for the logged in user\r\n * @return Success\r\n */\r\n tpListRiders(tpResourceId: string, searchString: string): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/DelegateUser/{tpResourceId}/tp-list-riders/{searchString}\";\r\n if (tpResourceId === undefined || tpResourceId === null)\r\n throw new Error(\"The parameter 'tpResourceId' must be defined.\");\r\n url_ = url_.replace(\"{tpResourceId}\", encodeURIComponent(\"\" + tpResourceId));\r\n if (searchString === undefined || searchString === null)\r\n throw new Error(\"The parameter 'searchString' must be defined.\");\r\n url_ = url_.replace(\"{searchString}\", encodeURIComponent(\"\" + searchString));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processTpListRiders(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processTpListRiders(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processTpListRiders(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as VendorDelegateRider[];\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Returns a list of delegate Riders for the logged in user (who must be in the delegate role to access these API's)\r\n * @return Success\r\n */\r\n listRiders(searchString: string): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/DelegateUser/list-riders/{searchString}\";\r\n if (searchString === undefined || searchString === null)\r\n throw new Error(\"The parameter 'searchString' must be defined.\");\r\n url_ = url_.replace(\"{searchString}\", encodeURIComponent(\"\" + searchString));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processListRiders(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processListRiders(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processListRiders(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as VendorDelegateRider[];\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Returns the Location History for a Delegates Requested Rides from the Vendor\r\n * @param newpassword (optional) \r\n * @param newPasswordConfirm (optional) \r\n * @return Success\r\n */\r\n delegateSetPassword(newpassword: string | undefined, newPasswordConfirm: string | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/DelegateUser/delegate-set-password?\";\r\n if (newpassword === null)\r\n throw new Error(\"The parameter 'newpassword' cannot be null.\");\r\n else if (newpassword !== undefined)\r\n url_ += \"newpassword=\" + encodeURIComponent(\"\" + newpassword) + \"&\";\r\n if (newPasswordConfirm === null)\r\n throw new Error(\"The parameter 'newPasswordConfirm' cannot be null.\");\r\n else if (newPasswordConfirm !== undefined)\r\n url_ += \"newPasswordConfirm=\" + encodeURIComponent(\"\" + newPasswordConfirm) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processDelegateSetPassword(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processDelegateSetPassword(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processDelegateSetPassword(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Returns the Location History for a Delegates Requested Rides from the Vendor\r\n * @return Success\r\n */\r\n delegateRiderAddressHistory(vendorRiderId: string): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/DelegateUser/delegate-rider-address-history/{vendorRiderId}\";\r\n if (vendorRiderId === undefined || vendorRiderId === null)\r\n throw new Error(\"The parameter 'vendorRiderId' must be defined.\");\r\n url_ = url_.replace(\"{vendorRiderId}\", encodeURIComponent(\"\" + vendorRiderId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processDelegateRiderAddressHistory(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processDelegateRiderAddressHistory(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processDelegateRiderAddressHistory(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AddressModel[];\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * return BadRequest(\"No data found!\");Returns the Location History for a Delegates Requested Rides from the Vendor\r\n * @return Success\r\n */\r\n tpDelegateRiderAddressHistory(tpResourceId: string, vendorRiderId: string): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/DelegateUser/{tpResourceId}/tp-delegate-rider-address-history/{vendorRiderId}\";\r\n if (tpResourceId === undefined || tpResourceId === null)\r\n throw new Error(\"The parameter 'tpResourceId' must be defined.\");\r\n url_ = url_.replace(\"{tpResourceId}\", encodeURIComponent(\"\" + tpResourceId));\r\n if (vendorRiderId === undefined || vendorRiderId === null)\r\n throw new Error(\"The parameter 'vendorRiderId' must be defined.\");\r\n url_ = url_.replace(\"{vendorRiderId}\", encodeURIComponent(\"\" + vendorRiderId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processTpDelegateRiderAddressHistory(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processTpDelegateRiderAddressHistory(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processTpDelegateRiderAddressHistory(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AddressModel[];\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * **FOR TESTING: responseTest == Enum value to return valid values: Request a Ride for a Ride from the Delegate organization\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n delegateRequestRide(body: DelegateUserRideRequest | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/DelegateUser/delegate-request-ride\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processDelegateRequestRide(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processDelegateRequestRide(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processDelegateRequestRide(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RequestRideResponse;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * **FOR TESTING: responseTest == Enum value to return valid values: Request a Ride for a Ride from the Delegate organization\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n tpDelegateRequestRide(tpDelegateOrganizationId: string, body: DelegateUserRideRequest | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/DelegateUser/{tpDelegateOrganizationId}/tp-delegate-request-ride\";\r\n if (tpDelegateOrganizationId === undefined || tpDelegateOrganizationId === null)\r\n throw new Error(\"The parameter 'tpDelegateOrganizationId' must be defined.\");\r\n url_ = url_.replace(\"{tpDelegateOrganizationId}\", encodeURIComponent(\"\" + tpDelegateOrganizationId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processTpDelegateRequestRide(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processTpDelegateRequestRide(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processTpDelegateRequestRide(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RequestRideResponse;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Cancel a previously Requestd ride\r\n * @return Success\r\n */\r\n cancelDelegateRequestRide(rideRequestResourceId: string): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/DelegateUser/cancel-delegate-request-ride/{rideRequestResourceId}\";\r\n if (rideRequestResourceId === undefined || rideRequestResourceId === null)\r\n throw new Error(\"The parameter 'rideRequestResourceId' must be defined.\");\r\n url_ = url_.replace(\"{rideRequestResourceId}\", encodeURIComponent(\"\" + rideRequestResourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processCancelDelegateRequestRide(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processCancelDelegateRequestRide(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processCancelDelegateRequestRide(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CancelRideRequestResponse;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Update a previously Requestd ride (NOT USED)\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n updateDelegateRequestRide(rideRequestResourceId: string, body: DelegateUserRideRequest | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/DelegateUser/update-delegate-request-ride/{rideRequestResourceId}\";\r\n if (rideRequestResourceId === undefined || rideRequestResourceId === null)\r\n throw new Error(\"The parameter 'rideRequestResourceId' must be defined.\");\r\n url_ = url_.replace(\"{rideRequestResourceId}\", encodeURIComponent(\"\" + rideRequestResourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processUpdateDelegateRequestRide(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processUpdateDelegateRequestRide(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processUpdateDelegateRequestRide(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RequestRideResponse;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n delegateRideDetails(rideResourceId: string): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/DelegateUser/delegate-ride-details/{rideResourceId}\";\r\n if (rideResourceId === undefined || rideResourceId === null)\r\n throw new Error(\"The parameter 'rideResourceId' must be defined.\");\r\n url_ = url_.replace(\"{rideResourceId}\", encodeURIComponent(\"\" + rideResourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processDelegateRideDetails(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processDelegateRideDetails(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processDelegateRideDetails(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RideDetailsModel;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Gets User Ride Ride History\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n listDelegateRideRequests(body: ListRidesRequest | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/DelegateUser/list-delegate-ride-requests\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processListDelegateRideRequests(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processListDelegateRideRequests(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processListDelegateRideRequests(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RideList;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @param riderEmail (optional) \r\n * @return Success\r\n */\r\n delegatePortalSettings(riderEmail: string | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/DelegateUser/delegate-portal-settings?\";\r\n if (riderEmail === null)\r\n throw new Error(\"The parameter 'riderEmail' cannot be null.\");\r\n else if (riderEmail !== undefined)\r\n url_ += \"riderEmail=\" + encodeURIComponent(\"\" + riderEmail) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processDelegatePortalSettings(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processDelegatePortalSettings(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processDelegatePortalSettings(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TripPortalSettings;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status === 400) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\r\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n channelInfo(body: DeviceModel | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/Device/channel-info\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processChannelInfo(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processChannelInfo(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processChannelInfo(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DeviceChannelResponse;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n assign(body: PaymentAssignmentModel | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/Payments/assign\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processAssign(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processAssign(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processAssign(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as VerifyResponseModel;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n status(transportationProviderId: string, rideResourceId: string, body: RidePaymentStatusChangedModel | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/Payments/{transportationProviderId}/{rideResourceId}/status\";\r\n if (transportationProviderId === undefined || transportationProviderId === null)\r\n throw new Error(\"The parameter 'transportationProviderId' must be defined.\");\r\n url_ = url_.replace(\"{transportationProviderId}\", encodeURIComponent(\"\" + transportationProviderId));\r\n if (rideResourceId === undefined || rideResourceId === null)\r\n throw new Error(\"The parameter 'rideResourceId' must be defined.\");\r\n url_ = url_.replace(\"{rideResourceId}\", encodeURIComponent(\"\" + rideResourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n })\r\n };\r\n\r\n return this.http.request(\"patch\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processStatus(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processStatus(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processStatus(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return _observableOf(null as any);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * New Account (Non-Delegate) Rider, Email is sent and must be confirmed\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n newAccount(body: UserRegistrationModel | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/registration/new-account\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processNewAccount(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processNewAccount(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processNewAccount(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Get the current user object.\r\n * @return Success\r\n */\r\n userProfile(): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/registration/user-profile\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processUserProfile(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processUserProfile(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processUserProfile(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UserProfile;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Email will contain a link which will direct the user here, if successful (200 ok / true response), the user should be direct to set their password.\r\n * @param userId (optional) \r\n * @param code (optional) \r\n * @param providerCode (optional) \r\n * @return Success\r\n */\r\n emailVerification(userId: string | undefined, code: string | undefined, providerCode: string | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/registration/email-verification?\";\r\n if (userId === null)\r\n throw new Error(\"The parameter 'userId' cannot be null.\");\r\n else if (userId !== undefined)\r\n url_ += \"userId=\" + encodeURIComponent(\"\" + userId) + \"&\";\r\n if (code === null)\r\n throw new Error(\"The parameter 'code' cannot be null.\");\r\n else if (code !== undefined)\r\n url_ += \"code=\" + encodeURIComponent(\"\" + code) + \"&\";\r\n if (providerCode === null)\r\n throw new Error(\"The parameter 'providerCode' cannot be null.\");\r\n else if (providerCode !== undefined)\r\n url_ += \"providerCode=\" + encodeURIComponent(\"\" + providerCode) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processEmailVerification(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processEmailVerification(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processEmailVerification(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as LoginResponseModel;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Resend the email verification. if this was a delegate organization invitation, the provider code must be provided\r\n * @param userId (optional) \r\n * @param providerCode (optional) \r\n * @return Success\r\n */\r\n resendEmailVerification(userId: string | undefined, providerCode: string | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/registration/resend-email-verification?\";\r\n if (userId === null)\r\n throw new Error(\"The parameter 'userId' cannot be null.\");\r\n else if (userId !== undefined)\r\n url_ += \"userId=\" + encodeURIComponent(\"\" + userId) + \"&\";\r\n if (providerCode === null)\r\n throw new Error(\"The parameter 'providerCode' cannot be null.\");\r\n else if (providerCode !== undefined)\r\n url_ += \"providerCode=\" + encodeURIComponent(\"\" + providerCode) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processResendEmailVerification(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processResendEmailVerification(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processResendEmailVerification(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Initiate the forgot password request, it will send an email with the forgot password\r\n * @param userEmail (optional) \r\n * @return Success\r\n */\r\n forgotPassword(userEmail: string | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/registration/forgot-password?\";\r\n if (userEmail === null)\r\n throw new Error(\"The parameter 'userEmail' cannot be null.\");\r\n else if (userEmail !== undefined)\r\n url_ += \"userEmail=\" + encodeURIComponent(\"\" + userEmail) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processForgotPassword(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processForgotPassword(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processForgotPassword(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Reset Password Confirmatin / Validation (NOT SURE)\r\n * @param userId (optional) \r\n * @param code (optional) \r\n * @return Success\r\n */\r\n forgotPasswordConfirm(userId: string | undefined, code: string | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/registration/forgot-password-confirm?\";\r\n if (userId === null)\r\n throw new Error(\"The parameter 'userId' cannot be null.\");\r\n else if (userId !== undefined)\r\n url_ += \"userId=\" + encodeURIComponent(\"\" + userId) + \"&\";\r\n if (code === null)\r\n throw new Error(\"The parameter 'code' cannot be null.\");\r\n else if (code !== undefined)\r\n url_ += \"code=\" + encodeURIComponent(\"\" + code) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processForgotPasswordConfirm(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processForgotPasswordConfirm(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processForgotPasswordConfirm(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Reset the User Portal Password\r\n * @param userId (optional) \r\n * @param code (optional) \r\n * @param body (optional) \r\n * @return Success\r\n */\r\n forgotPasswordChange(userId: string | undefined, code: string | undefined, body: UserChangePasswordModel | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/registration/forgot-password-change?\";\r\n if (userId === null)\r\n throw new Error(\"The parameter 'userId' cannot be null.\");\r\n else if (userId !== undefined)\r\n url_ += \"userId=\" + encodeURIComponent(\"\" + userId) + \"&\";\r\n if (code === null)\r\n throw new Error(\"The parameter 'code' cannot be null.\");\r\n else if (code !== undefined)\r\n url_ += \"code=\" + encodeURIComponent(\"\" + code) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processForgotPasswordChange(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processForgotPasswordChange(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processForgotPasswordChange(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Request the Details of the Ride, if requesting a ride from the\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n requestRide(body: RideRequest | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/Rider/request-ride\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processRequestRide(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processRequestRide(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processRequestRide(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RequestRideResponse;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n requestRides(body: RidePaymentRequest | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/Rider/request-rides\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processRequestRides(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processRequestRides(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processRequestRides(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RequestRideResponse[];\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Request the Details of the Ride, if requesting a ride from the\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n updateRequestRide(rideRequestResourceId: string, body: RideRequest | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/Rider/update-request-ride/{rideRequestResourceId}\";\r\n if (rideRequestResourceId === undefined || rideRequestResourceId === null)\r\n throw new Error(\"The parameter 'rideRequestResourceId' must be defined.\");\r\n url_ = url_.replace(\"{rideRequestResourceId}\", encodeURIComponent(\"\" + rideRequestResourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processUpdateRequestRide(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processUpdateRequestRide(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processUpdateRequestRide(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RequestRideResponse;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Cancel a previously Requestd ride\r\n * @return Success\r\n */\r\n cancelRequestRide(rideRequestResourceId: string): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/Rider/cancel-request-ride/{rideRequestResourceId}\";\r\n if (rideRequestResourceId === undefined || rideRequestResourceId === null)\r\n throw new Error(\"The parameter 'rideRequestResourceId' must be defined.\");\r\n url_ = url_.replace(\"{rideRequestResourceId}\", encodeURIComponent(\"\" + rideRequestResourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processCancelRequestRide(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processCancelRequestRide(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processCancelRequestRide(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CancelRideRequestResponse;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Gets Logged In Users Ride Ride History\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n listRiderRideRequests(body: ListRidesRequest | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/Rider/list-rider-ride-requests\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processListRiderRideRequests(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processListRiderRideRequests(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processListRiderRideRequests(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RideList;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n rideDetails(rideResourceId: string): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/Rider/ride-details/{rideResourceId}\";\r\n if (rideResourceId === undefined || rideResourceId === null)\r\n throw new Error(\"The parameter 'rideResourceId' must be defined.\");\r\n url_ = url_.replace(\"{rideResourceId}\", encodeURIComponent(\"\" + rideResourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processRideDetails(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processRideDetails(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processRideDetails(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RideDetailsModel;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Marks the Return Ride Ready (TBD)\r\n * @return Success\r\n * @deprecated\r\n */\r\n rideReturnReady(rideResourceId: string): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/Rider/ride-return-ready/{rideResourceId}\";\r\n if (rideResourceId === undefined || rideResourceId === null)\r\n throw new Error(\"The parameter 'rideResourceId' must be defined.\");\r\n url_ = url_.replace(\"{rideResourceId}\", encodeURIComponent(\"\" + rideResourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processRideReturnReady(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processRideReturnReady(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processRideReturnReady(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Gets Logged In Users Ride's ready for payment\r\n * @return Success\r\n */\r\n listRequestsPendingPayment(): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/Rider/list-requests-pending-payment\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processListRequestsPendingPayment(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processListRequestsPendingPayment(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processListRequestsPendingPayment(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RideList;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Returns the Location History for a Delegates Requested Rides from the Vendor\r\n * @param newpassword (optional) \r\n * @param newPasswordConfirm (optional) \r\n * @return Success\r\n */\r\n setPassword(newpassword: string | undefined, newPasswordConfirm: string | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/Rider/set-password?\";\r\n if (newpassword === null)\r\n throw new Error(\"The parameter 'newpassword' cannot be null.\");\r\n else if (newpassword !== undefined)\r\n url_ += \"newpassword=\" + encodeURIComponent(\"\" + newpassword) + \"&\";\r\n if (newPasswordConfirm === null)\r\n throw new Error(\"The parameter 'newPasswordConfirm' cannot be null.\");\r\n else if (newPasswordConfirm !== undefined)\r\n url_ += \"newPasswordConfirm=\" + encodeURIComponent(\"\" + newPasswordConfirm) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processSetPassword(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processSetPassword(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processSetPassword(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @param riderEmail (optional) \r\n * @return Success\r\n */\r\n portalSettings(riderEmail: string | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/Rider/portal-settings?\";\r\n if (riderEmail === null)\r\n throw new Error(\"The parameter 'riderEmail' cannot be null.\");\r\n else if (riderEmail !== undefined)\r\n url_ += \"riderEmail=\" + encodeURIComponent(\"\" + riderEmail) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processPortalSettings(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processPortalSettings(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processPortalSettings(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TripPortalSettings;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status === 400) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\r\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n location(body: Coordinate[] | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/Rider/portal-settings/location\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processLocation(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processLocation(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processLocation(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TripPortalSettings;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status === 400) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\r\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n fare(portalUserResourceId: string, transportationProviderResourceId: string, body: RideRequest[] | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/Rider/{portalUserResourceId}/fare/{transportationProviderResourceId}\";\r\n if (portalUserResourceId === undefined || portalUserResourceId === null)\r\n throw new Error(\"The parameter 'portalUserResourceId' must be defined.\");\r\n url_ = url_.replace(\"{portalUserResourceId}\", encodeURIComponent(\"\" + portalUserResourceId));\r\n if (transportationProviderResourceId === undefined || transportationProviderResourceId === null)\r\n throw new Error(\"The parameter 'transportationProviderResourceId' must be defined.\");\r\n url_ = url_.replace(\"{transportationProviderResourceId}\", encodeURIComponent(\"\" + transportationProviderResourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processFare(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processFare(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processFare(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RideRequestFareResponse[];\r\n return _observableOf(result200);\r\n }));\r\n } else if (status === 400) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\r\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Sends a message to the Dispatcher\r\n * @param body (optional) \r\n * @return Success\r\n * @deprecated\r\n */\r\n sendMessage(body: RideMessage | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/Rider/send-message\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processSendMessage(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processSendMessage(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processSendMessage(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Returns the Location History for a Delegates Requested Rides from the Vendor\r\n * @return Success\r\n */\r\n addressHistory(): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/RiderAddress/address-history\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processAddressHistory(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processAddressHistory(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processAddressHistory(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AddressModel[];\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Returns the Location History for a Delegates Requested Rides from the Vendor\r\n * @return Success\r\n */\r\n addressFavorites(): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/RiderAddress/address-favorites\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processAddressFavorites(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processAddressFavorites(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processAddressFavorites(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AddressModel[];\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Returns the Location History for a Delegates Requested Rides from the Vendor\r\n * @return Success\r\n */\r\n addAddressFavorite(addressResourceId: string): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/RiderAddress/add-address-favorite/{AddressResourceId}\";\r\n if (addressResourceId === undefined || addressResourceId === null)\r\n throw new Error(\"The parameter 'addressResourceId' must be defined.\");\r\n url_ = url_.replace(\"{AddressResourceId}\", encodeURIComponent(\"\" + addressResourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processAddAddressFavorite(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processAddAddressFavorite(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processAddAddressFavorite(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Returns the Location History for a Delegates Requested Rides from the Vendor\r\n * @return Success\r\n */\r\n removeAddressFavorite(addressResourceId: string): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/RiderAddress/remove-address-favorite/{AddressResourceId}\";\r\n if (addressResourceId === undefined || addressResourceId === null)\r\n throw new Error(\"The parameter 'addressResourceId' must be defined.\");\r\n url_ = url_.replace(\"{AddressResourceId}\", encodeURIComponent(\"\" + addressResourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processRemoveAddressFavorite(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processRemoveAddressFavorite(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processRemoveAddressFavorite(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @param tpResourceId (optional) \r\n * @param daysFromToday (optional) \r\n * @return Success\r\n */\r\n vendorTpPendingRides(tpResourceId: string | undefined, daysFromToday: number | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/rider/vendor-tp-pending-rides?\";\r\n if (tpResourceId === null)\r\n throw new Error(\"The parameter 'tpResourceId' cannot be null.\");\r\n else if (tpResourceId !== undefined)\r\n url_ += \"tpResourceId=\" + encodeURIComponent(\"\" + tpResourceId) + \"&\";\r\n if (daysFromToday === null)\r\n throw new Error(\"The parameter 'daysFromToday' cannot be null.\");\r\n else if (daysFromToday !== undefined)\r\n url_ += \"daysFromToday=\" + encodeURIComponent(\"\" + daysFromToday) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processVendorTpPendingRides(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processVendorTpPendingRides(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processVendorTpPendingRides(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n genderTypes(): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/rider/gender-types\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processGenderTypes(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processGenderTypes(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processGenderTypes(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as GenderType[];\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n rideRequirementTypes(): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/rider/ride-requirement-types\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processRideRequirementTypes(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processRideRequirementTypes(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processRideRequirementTypes(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RideRequirementType[];\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n rideReservationTypes(): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/rider/ride-reservation-types\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processRideReservationTypes(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processRideReservationTypes(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processRideReservationTypes(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RideReservationType[];\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n rideStatusTypes(): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/rider/ride-status-types\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processRideStatusTypes(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processRideStatusTypes(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processRideStatusTypes(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RideStatusType[];\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n createTransportationProvider(body: VendorTransportationProvider | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/vendor/create-transportation-provider\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processCreateTransportationProvider(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processCreateTransportationProvider(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processCreateTransportationProvider(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n updateTransportationProvider(resourceId: string, body: VendorTransportationProvider | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/vendor/update-transportation-provider/{resourceId}\";\r\n if (resourceId === undefined || resourceId === null)\r\n throw new Error(\"The parameter 'resourceId' must be defined.\");\r\n url_ = url_.replace(\"{resourceId}\", encodeURIComponent(\"\" + resourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processUpdateTransportationProvider(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processUpdateTransportationProvider(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processUpdateTransportationProvider(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n createDelegate(delegateOrgResourceId: string, body: VendorDelegateUser | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/vendor/{delegateOrgResourceId}/create-delegate\";\r\n if (delegateOrgResourceId === undefined || delegateOrgResourceId === null)\r\n throw new Error(\"The parameter 'delegateOrgResourceId' must be defined.\");\r\n url_ = url_.replace(\"{delegateOrgResourceId}\", encodeURIComponent(\"\" + delegateOrgResourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processCreateDelegate(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processCreateDelegate(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processCreateDelegate(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreateDelegateUserResponse;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n updateDelegate(resourceId: string, body: VendorDelegateUser | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/vendor/update-delegate/{resourceId}\";\r\n if (resourceId === undefined || resourceId === null)\r\n throw new Error(\"The parameter 'resourceId' must be defined.\");\r\n url_ = url_.replace(\"{resourceId}\", encodeURIComponent(\"\" + resourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"put\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processUpdateDelegate(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processUpdateDelegate(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processUpdateDelegate(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n getDelegate(resourceId: string): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/vendor/get-delegate/{resourceId}\";\r\n if (resourceId === undefined || resourceId === null)\r\n throw new Error(\"The parameter 'resourceId' must be defined.\");\r\n url_ = url_.replace(\"{resourceId}\", encodeURIComponent(\"\" + resourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processGetDelegate(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processGetDelegate(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processGetDelegate(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as VendorDelegateUser;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n createDelegateOrg(tpResourceId: string, body: VendorDelegateOrganization | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/vendor/{tpResourceId}/create-delegate-org\";\r\n if (tpResourceId === undefined || tpResourceId === null)\r\n throw new Error(\"The parameter 'tpResourceId' must be defined.\");\r\n url_ = url_.replace(\"{tpResourceId}\", encodeURIComponent(\"\" + tpResourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processCreateDelegateOrg(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processCreateDelegateOrg(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processCreateDelegateOrg(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n updateDelegateOrg(resourceId: string, body: VendorDelegateOrganization | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/vendor/update-delegate-org/{resourceId}\";\r\n if (resourceId === undefined || resourceId === null)\r\n throw new Error(\"The parameter 'resourceId' must be defined.\");\r\n url_ = url_.replace(\"{resourceId}\", encodeURIComponent(\"\" + resourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processUpdateDelegateOrg(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processUpdateDelegateOrg(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processUpdateDelegateOrg(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n getDelegateOrg(resourceId: string): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/vendor/get-delegate-org/{resourceId}\";\r\n if (resourceId === undefined || resourceId === null)\r\n throw new Error(\"The parameter 'resourceId' must be defined.\");\r\n url_ = url_.replace(\"{resourceId}\", encodeURIComponent(\"\" + resourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processGetDelegateOrg(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processGetDelegateOrg(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processGetDelegateOrg(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as VendorDelegateOrganization;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n vendorTpEmailAvailable(tpResourceId: string, emailAddress: string): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/vendor/vendor-tp-email-available/{tpResourceId}/{emailAddress}\";\r\n if (tpResourceId === undefined || tpResourceId === null)\r\n throw new Error(\"The parameter 'tpResourceId' must be defined.\");\r\n url_ = url_.replace(\"{tpResourceId}\", encodeURIComponent(\"\" + tpResourceId));\r\n if (emailAddress === undefined || emailAddress === null)\r\n throw new Error(\"The parameter 'emailAddress' must be defined.\");\r\n url_ = url_.replace(\"{emailAddress}\", encodeURIComponent(\"\" + emailAddress));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processVendorTpEmailAvailable(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processVendorTpEmailAvailable(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processVendorTpEmailAvailable(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as EmailAccountDetails;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n createPortaluser(tpResourceId: string, body: VendorPortalUser | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/vendor/{tpResourceId}/create-portaluser\";\r\n if (tpResourceId === undefined || tpResourceId === null)\r\n throw new Error(\"The parameter 'tpResourceId' must be defined.\");\r\n url_ = url_.replace(\"{tpResourceId}\", encodeURIComponent(\"\" + tpResourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processCreatePortaluser(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processCreatePortaluser(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processCreatePortaluser(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as VendorApiResponse;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @param body (optional) \r\n * @return Success\r\n */\r\n updatePortaluser(portalUserResourceId: string, body: VendorPortalUser | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/vendor/{portalUserResourceId}/update-portaluser\";\r\n if (portalUserResourceId === undefined || portalUserResourceId === null)\r\n throw new Error(\"The parameter 'portalUserResourceId' must be defined.\");\r\n url_ = url_.replace(\"{portalUserResourceId}\", encodeURIComponent(\"\" + portalUserResourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processUpdatePortaluser(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processUpdatePortaluser(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processUpdatePortaluser(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n disableTpPortaluser(tpResourceId: string, portalUserResourceId: string): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/vendor/{tpResourceId}/{portalUserResourceId}/disable-tp-portaluser\";\r\n if (tpResourceId === undefined || tpResourceId === null)\r\n throw new Error(\"The parameter 'tpResourceId' must be defined.\");\r\n url_ = url_.replace(\"{tpResourceId}\", encodeURIComponent(\"\" + tpResourceId));\r\n if (portalUserResourceId === undefined || portalUserResourceId === null)\r\n throw new Error(\"The parameter 'portalUserResourceId' must be defined.\");\r\n url_ = url_.replace(\"{portalUserResourceId}\", encodeURIComponent(\"\" + portalUserResourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processDisableTpPortaluser(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processDisableTpPortaluser(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processDisableTpPortaluser(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n enableTpPortaluser(tpResourceId: string, portalUserResourceId: string): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/vendor/{tpResourceId}/{portalUserResourceId}/enable-tp-portaluser\";\r\n if (tpResourceId === undefined || tpResourceId === null)\r\n throw new Error(\"The parameter 'tpResourceId' must be defined.\");\r\n url_ = url_.replace(\"{tpResourceId}\", encodeURIComponent(\"\" + tpResourceId));\r\n if (portalUserResourceId === undefined || portalUserResourceId === null)\r\n throw new Error(\"The parameter 'portalUserResourceId' must be defined.\");\r\n url_ = url_.replace(\"{portalUserResourceId}\", encodeURIComponent(\"\" + portalUserResourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processEnableTpPortaluser(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processEnableTpPortaluser(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processEnableTpPortaluser(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Resend the delegate email verification. provider code must be provided\r\n * @return Success\r\n */\r\n resendDelegateEmailVerification(transportationProviderResourceId: string, portalUserResourceId: string): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/vendor/resend-delegate-email-verification/{transportationProviderResourceId}/{portalUserResourceId}\";\r\n if (transportationProviderResourceId === undefined || transportationProviderResourceId === null)\r\n throw new Error(\"The parameter 'transportationProviderResourceId' must be defined.\");\r\n url_ = url_.replace(\"{transportationProviderResourceId}\", encodeURIComponent(\"\" + transportationProviderResourceId));\r\n if (portalUserResourceId === undefined || portalUserResourceId === null)\r\n throw new Error(\"The parameter 'portalUserResourceId' must be defined.\");\r\n url_ = url_.replace(\"{portalUserResourceId}\", encodeURIComponent(\"\" + portalUserResourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processResendDelegateEmailVerification(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processResendDelegateEmailVerification(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processResendDelegateEmailVerification(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * Resend the delegate invite email.\r\n * @return Success\r\n */\r\n resendDelegateInvite(transportationProviderResourceId: string, portalUserResourceId: string): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/vendor/resend-delegate-invite/{transportationProviderResourceId}/{portalUserResourceId}\";\r\n if (transportationProviderResourceId === undefined || transportationProviderResourceId === null)\r\n throw new Error(\"The parameter 'transportationProviderResourceId' must be defined.\");\r\n url_ = url_.replace(\"{transportationProviderResourceId}\", encodeURIComponent(\"\" + transportationProviderResourceId));\r\n if (portalUserResourceId === undefined || portalUserResourceId === null)\r\n throw new Error(\"The parameter 'portalUserResourceId' must be defined.\");\r\n url_ = url_.replace(\"{portalUserResourceId}\", encodeURIComponent(\"\" + portalUserResourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processResendDelegateInvite(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processResendDelegateInvite(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processResendDelegateInvite(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @param min (optional) \r\n * @param max (optional) \r\n * @return Success\r\n */\r\n pendingRides(tpResourceId: string, min: Date | undefined, max: Date | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/vendor/{tpResourceId}/pending-rides?\";\r\n if (tpResourceId === undefined || tpResourceId === null)\r\n throw new Error(\"The parameter 'tpResourceId' must be defined.\");\r\n url_ = url_.replace(\"{tpResourceId}\", encodeURIComponent(\"\" + tpResourceId));\r\n if (min === null)\r\n throw new Error(\"The parameter 'min' cannot be null.\");\r\n else if (min !== undefined)\r\n url_ += \"min=\" + encodeURIComponent(min ? \"\" + min.toISOString() : \"\") + \"&\";\r\n if (max === null)\r\n throw new Error(\"The parameter 'max' cannot be null.\");\r\n else if (max !== undefined)\r\n url_ += \"max=\" + encodeURIComponent(max ? \"\" + max.toISOString() : \"\") + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processPendingRides(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processPendingRides(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processPendingRides(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as VendorDelegateRideRequest[];\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n vendor(tpRideResourceId: string, rideAccepted: boolean, rideStatusMessage: string): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/vendor/{tpRideResourceId}/{rideAccepted}/{rideStatusMessage}\";\r\n if (tpRideResourceId === undefined || tpRideResourceId === null)\r\n throw new Error(\"The parameter 'tpRideResourceId' must be defined.\");\r\n url_ = url_.replace(\"{tpRideResourceId}\", encodeURIComponent(\"\" + tpRideResourceId));\r\n if (rideAccepted === undefined || rideAccepted === null)\r\n throw new Error(\"The parameter 'rideAccepted' must be defined.\");\r\n url_ = url_.replace(\"{rideAccepted}\", encodeURIComponent(\"\" + rideAccepted));\r\n if (rideStatusMessage === undefined || rideStatusMessage === null)\r\n throw new Error(\"The parameter 'rideStatusMessage' must be defined.\");\r\n url_ = url_.replace(\"{rideStatusMessage}\", encodeURIComponent(\"\" + rideStatusMessage));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processVendor(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processVendor(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processVendor(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n rideDetails2(tpResourceId: string, tpRideResourceId: string): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/vendor/{tpResourceId}/ride-details/{tpRideResourceId}\";\r\n if (tpResourceId === undefined || tpResourceId === null)\r\n throw new Error(\"The parameter 'tpResourceId' must be defined.\");\r\n url_ = url_.replace(\"{tpResourceId}\", encodeURIComponent(\"\" + tpResourceId));\r\n if (tpRideResourceId === undefined || tpRideResourceId === null)\r\n throw new Error(\"The parameter 'tpRideResourceId' must be defined.\");\r\n url_ = url_.replace(\"{tpRideResourceId}\", encodeURIComponent(\"\" + tpRideResourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processRideDetails2(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processRideDetails2(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processRideDetails2(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as VendorDelegateRideRequest;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n blockRider(tpResourceId: string, portalUserResourceId: string): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/vendor/{tpResourceId}/block-rider/{portalUserResourceId}\";\r\n if (tpResourceId === undefined || tpResourceId === null)\r\n throw new Error(\"The parameter 'tpResourceId' must be defined.\");\r\n url_ = url_.replace(\"{tpResourceId}\", encodeURIComponent(\"\" + tpResourceId));\r\n if (portalUserResourceId === undefined || portalUserResourceId === null)\r\n throw new Error(\"The parameter 'portalUserResourceId' must be defined.\");\r\n url_ = url_.replace(\"{portalUserResourceId}\", encodeURIComponent(\"\" + portalUserResourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processBlockRider(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processBlockRider(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processBlockRider(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @return Success\r\n */\r\n summary(tpResourceId: string, portalUserResourceId: string): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/vendor/{tpResourceId}/portaluser/{portalUserResourceId}/summary\";\r\n if (tpResourceId === undefined || tpResourceId === null)\r\n throw new Error(\"The parameter 'tpResourceId' must be defined.\");\r\n url_ = url_.replace(\"{tpResourceId}\", encodeURIComponent(\"\" + tpResourceId));\r\n if (portalUserResourceId === undefined || portalUserResourceId === null)\r\n throw new Error(\"The parameter 'portalUserResourceId' must be defined.\");\r\n url_ = url_.replace(\"{portalUserResourceId}\", encodeURIComponent(\"\" + portalUserResourceId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ : any = {\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"get\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processSummary(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processSummary(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processSummary(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as VendorPortalUserSummary;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n\r\n /**\r\n * @param portalUserResourceIdString (optional) \r\n * @param emailAddress (optional) \r\n * @param body (optional) \r\n * @return Success\r\n */\r\n inviteToPortal(tpResourceIdString: string, portalUserResourceIdString: string | undefined, emailAddress: string | undefined, body: Rider | undefined): Observable {\r\n let url_ = this.baseUrl + \"/api/v2/vendor/{tpResourceIdString}/invite-to-portal?\";\r\n if (tpResourceIdString === undefined || tpResourceIdString === null)\r\n throw new Error(\"The parameter 'tpResourceIdString' must be defined.\");\r\n url_ = url_.replace(\"{tpResourceIdString}\", encodeURIComponent(\"\" + tpResourceIdString));\r\n if (portalUserResourceIdString === null)\r\n throw new Error(\"The parameter 'portalUserResourceIdString' cannot be null.\");\r\n else if (portalUserResourceIdString !== undefined)\r\n url_ += \"portalUserResourceIdString=\" + encodeURIComponent(\"\" + portalUserResourceIdString) + \"&\";\r\n if (emailAddress === null)\r\n throw new Error(\"The parameter 'emailAddress' cannot be null.\");\r\n else if (emailAddress !== undefined)\r\n url_ += \"emailAddress=\" + encodeURIComponent(\"\" + emailAddress) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(body);\r\n\r\n let options_ : any = {\r\n body: content_,\r\n observe: \"response\",\r\n responseType: \"blob\",\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"text/plain\"\r\n })\r\n };\r\n\r\n return this.http.request(\"post\", url_, options_).pipe(_observableMergeMap((response_ : any) => {\r\n return this.processInviteToPortal(response_);\r\n })).pipe(_observableCatch((response_: any) => {\r\n if (response_ instanceof HttpResponseBase) {\r\n try {\r\n return this.processInviteToPortal(response_ as any);\r\n } catch (e) {\r\n return _observableThrow(e) as any as Observable;\r\n }\r\n } else\r\n return _observableThrow(response_) as any as Observable;\r\n }));\r\n }\r\n\r\n protected processInviteToPortal(response: HttpResponseBase): Observable {\r\n const status = response.status;\r\n const responseBlob =\r\n response instanceof HttpResponse ? response.body :\r\n (response as any).error instanceof Blob ? (response as any).error : undefined;\r\n\r\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\r\n if (status === 200) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as VendorApiResponse;\r\n return _observableOf(result200);\r\n }));\r\n } else if (status === 400) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\r\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\r\n }));\r\n } else if (status !== 200 && status !== 204) {\r\n return blobToText(responseBlob).pipe(_observableMergeMap((_responseText: string) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }));\r\n }\r\n return _observableOf(null as any);\r\n }\r\n}\r\n\r\nexport interface Account {\r\n billingMethodDetails: AccountBillMethod;\r\n accountId: number;\r\n billingMethodId: number | undefined;\r\n agencyId: number | undefined;\r\n name: string | undefined;\r\n code: string | undefined;\r\n minimumMiles: number | undefined;\r\n maximumMiles: number | undefined;\r\n hourlyWaitRate: number | undefined;\r\n wheelchairRate: number | undefined;\r\n escortRate: number | undefined;\r\n extraCharge: number | undefined;\r\n minimumCharge: number | undefined;\r\n maximumCharge: number | undefined;\r\n noShowExtra: number;\r\n hourlyRate: number | undefined;\r\n rate: number | undefined;\r\n mileageRate: number | undefined;\r\n billNoShow: boolean | undefined;\r\n idNumber: string | undefined;\r\n decimals: number | undefined;\r\n dbstatus: number;\r\n canAssignManually: boolean | undefined;\r\n stretcherRate: number;\r\n requireAuthorizationNumber: boolean;\r\n transportationMode: string | undefined;\r\n allowRideChargeAdjustment: boolean;\r\n billEscortAsPassenger: boolean;\r\n scheduleProfileId: number | undefined;\r\n signatureRequired: boolean;\r\n useDirectMileageForPassPlus: boolean;\r\n serviceType: number;\r\n baseRate: number | undefined;\r\n perMileRevenue: number | undefined;\r\n rideAlertProviderId: number | undefined;\r\n canBillEmptyMiles: boolean | undefined;\r\n brokerAccountIdList: string | undefined;\r\n agency: Agency;\r\n rideAlertProvider: RideAlertProvider;\r\n scheduleProfile: ScheduleProfile;\r\n accountCharges: AccountCharge[] | undefined;\r\n companyLcAccounts: Company[] | undefined;\r\n brokerContracts: BrokerContract[] | undefined;\r\n riderAccounts: RiderAccount[] | undefined;\r\n fare: number | undefined;\r\n outOfCountyFare: number | undefined;\r\n deductFareCollected: boolean | undefined;\r\n maximumFareCharge: number | undefined;\r\n fareCalculationMethod: number | undefined;\r\n fareMileageRates: AccountFareMileageRate[] | undefined;\r\n}\r\n\r\nexport interface AccountBillMethod {\r\n billableRide: boolean;\r\n tripCharge: boolean;\r\n mileCharge: boolean;\r\n hourCharge: boolean;\r\n beginOdomStartOdom: boolean;\r\n pickupOdomLastDropoffOdom: boolean;\r\n tripStartTimeTripEndTime: boolean;\r\n passOnTimeLastPassOffTime: boolean;\r\n passTrip: boolean;\r\n passMile: boolean;\r\n passHour: boolean;\r\n bzoneCharge: boolean;\r\n shareMile: boolean;\r\n shareHour: boolean;\r\n shareTrip: boolean;\r\n firstPickupOdomTripEndOdom: boolean;\r\n passTripPlus: boolean;\r\n extraCharge: boolean;\r\n accountTrip: boolean;\r\n specialTrip: boolean;\r\n minMaxTripMiles: boolean;\r\n maxCharge: boolean;\r\n minCharge: boolean;\r\n minMiles: boolean;\r\n maxMiles: boolean;\r\n waitCharge: boolean;\r\n wheelchairCharge: boolean;\r\n fareCharge: boolean;\r\n escortCharge: boolean;\r\n directMileage: boolean;\r\n noShowExtra: boolean;\r\n readonly billMethodIdAsLoaded: number;\r\n billMethodId: number;\r\n}\r\n\r\nexport interface AccountCharge {\r\n accountChargeId: number;\r\n accountId: number;\r\n description: string | undefined;\r\n code: string | undefined;\r\n chargeTypeId: number;\r\n costPerUnit: number;\r\n freeUnits: number | undefined;\r\n minimumUnits: number | undefined;\r\n maximumUnits: number | undefined;\r\n dbStatus: number;\r\n account: Account;\r\n chargeType: ChargeType;\r\n fixedRideCharges: FixedRideCharge[] | undefined;\r\n rideCharges: RideCharge[] | undefined;\r\n}\r\n\r\nexport interface AccountFareMileageRate {\r\n accountFareMileageRateId: number;\r\n accountId: number;\r\n mobilityTypeId: number;\r\n minimumMileage: number;\r\n baseRate: number;\r\n mileageRate: number;\r\n account: Account;\r\n}\r\n\r\nexport interface AddressModel {\r\n addressId: string | undefined;\r\n name: string | undefined;\r\n address1: string | undefined;\r\n address2: string | undefined;\r\n city: string | undefined;\r\n state: string | undefined;\r\n zip: string | undefined;\r\n county: string | undefined;\r\n latitude: number | undefined;\r\n longitude: number | undefined;\r\n phone: string | undefined;\r\n isFavorite: boolean;\r\n}\r\n\r\nexport interface Agency {\r\n id: number;\r\n name: string | undefined;\r\n phone: string | undefined;\r\n dbStatus: number;\r\n locationId: number | undefined;\r\n location: Location;\r\n accounts: Account[] | undefined;\r\n}\r\n\r\nexport interface ApprovedDelegateRider {\r\n riderId: number;\r\n riderFullName: string | undefined;\r\n riderPhoneNumber: string | undefined;\r\n}\r\n\r\nexport interface ApprovedVendor {\r\n approvedVendorId: number;\r\n serviceId: number;\r\n vendorId: number;\r\n quotedCost: number | undefined;\r\n isDefault: boolean | undefined;\r\n service: Service;\r\n vendor: Vendor;\r\n}\r\n\r\nexport interface BillingZone {\r\n billingZoneId: number;\r\n zone: string | undefined;\r\n rate: number;\r\n date: Date | undefined;\r\n dbstatus: number;\r\n fixedRides: FixedRide[] | undefined;\r\n rides: Ride[] | undefined;\r\n}\r\n\r\nexport interface BrokerContract {\r\n brokerContractId: string;\r\n brokerId: number;\r\n remoteBrokerId: number | undefined;\r\n defaultAccountId: number | undefined;\r\n defaultPurposeId: number | undefined;\r\n mileageRateProfileId: number | undefined;\r\n brokerCompanyKey: string | undefined;\r\n brokerSpecificData: string | undefined;\r\n reportEventsToBroker: boolean | undefined;\r\n licenseAgreementSigned: Date | undefined;\r\n pickupAdjustmentInMinutes: number | undefined;\r\n dropoffAdjustmentInMinutes: number | undefined;\r\n isActive: boolean;\r\n defaultAccount: Account;\r\n defaultPurpose: Purpose;\r\n mileageRateProfile: MileageRateProfile;\r\n vehicles: BrokerVehicle[] | undefined;\r\n drivers: BrokerDriver[] | undefined;\r\n riders: BrokerRider[] | undefined;\r\n rides: Ride[] | undefined;\r\n}\r\n\r\nexport interface BrokerDriver {\r\n brokerDriverId: number;\r\n driverReferenceId: string | undefined;\r\n brokerId: number;\r\n brokerContractId: string;\r\n driverId: number;\r\n lastName: string | undefined;\r\n firstName: string | undefined;\r\n dob: Date | undefined;\r\n licenseNumber: string | undefined;\r\n licenseState: string | undefined;\r\n isActive: boolean;\r\n brokerJson: string | undefined;\r\n driver: Driver;\r\n brokerContract: BrokerContract;\r\n}\r\n\r\nexport interface BrokerRider {\r\n brokerRiderId: number;\r\n riderReferenceId: string | undefined;\r\n brokerId: number;\r\n brokerContractId: string;\r\n riderId: number;\r\n lastName: string | undefined;\r\n firstName: string | undefined;\r\n dob: Date | undefined;\r\n phone: string | undefined;\r\n isActive: boolean;\r\n brokerJson: string | undefined;\r\n rider: Rider;\r\n brokerContract: BrokerContract;\r\n}\r\n\r\nexport interface BrokerVehicle {\r\n brokerVehicleId: number;\r\n vehicleReferenceId: string | undefined;\r\n brokerId: number;\r\n brokerContractId: string;\r\n vehicleId: number;\r\n licensePlate: string | undefined;\r\n licensePlateState: string | undefined;\r\n vin: string | undefined;\r\n webHookUrl: string | undefined;\r\n isActive: boolean;\r\n brokerJson: string | undefined;\r\n vehicle: Vehicle;\r\n brokerContract: BrokerContract;\r\n}\r\n\r\nexport interface CancelRideRequestResponse {\r\n responseMessage: string | undefined;\r\n cancelled: boolean;\r\n}\r\n\r\nexport interface Certification {\r\n certificationID: number;\r\n name: string | undefined;\r\n interval: number;\r\n dbstatus: number;\r\n driverCertifications: DriverCertification[] | undefined;\r\n}\r\n\r\nexport interface ChargeType {\r\n chargeTypeId: number;\r\n description: string | undefined;\r\n dbStatus: number;\r\n accountCharges: AccountCharge[] | undefined;\r\n}\r\n\r\nexport interface Company {\r\n companyId: number;\r\n companyName: string | undefined;\r\n invoicePayableTo: string | undefined;\r\n dueWithinDays: number;\r\n openHour: string | undefined;\r\n closeHour: string | undefined;\r\n firstMonthFiscalYear: string | undefined;\r\n normalFuelCost: number;\r\n fuelAdjFactor: number;\r\n providerNumber: string | undefined;\r\n fedTaxNumber: string | undefined;\r\n stateTaxNumber: string | undefined;\r\n companyPhoneNumber: string | undefined;\r\n companyFaxNumber: string | undefined;\r\n companyModemNumber: string | undefined;\r\n recipientName: string | undefined;\r\n recipientIdnumber: string | undefined;\r\n recipientPhoneNumber: string | undefined;\r\n recipientUrl: string | undefined;\r\n brokerNumber: string | undefined;\r\n regionCode: string | undefined;\r\n countyCode: string | undefined;\r\n garagingMaxDistance: number;\r\n ncopstatsmedicaid: string | undefined;\r\n ncopstatsnoncontract: string | undefined;\r\n defaultLastRodeAcct: boolean | undefined;\r\n defaultReturnRide: boolean | undefined;\r\n howLateIsLate: number;\r\n unitsOfMeasure: string | undefined;\r\n returnRideTimeDifference: number;\r\n sendMdttargetRadius: boolean;\r\n roundDirectMileage: boolean;\r\n cancelFutureRidesAfterNoShow: boolean | undefined;\r\n ilsenior: string | undefined;\r\n ildisabled: string | undefined;\r\n easternTimeOffset: number;\r\n timeZoneName: string | undefined;\r\n gmthourOffset: number;\r\n ivrActive: boolean;\r\n tripsheetFooter: string | undefined;\r\n modernReportViewerEnabled: boolean;\r\n driverSignatureRequired: boolean;\r\n dbstatus: number;\r\n companyLocationId: number;\r\n recipientLocationId: number;\r\n garageLocationId: number | undefined;\r\n allowLocationEdit: boolean;\r\n defaultTimeWindowFactor: number | undefined;\r\n defaultExcessTransitFactor: number | undefined;\r\n defaultRouteZoneMilesFromDepot: number | undefined;\r\n defaultCostPerMile: number | undefined;\r\n defaultCostPerHour: number | undefined;\r\n useTraffic: boolean;\r\n defaultFlagStopRiderId: number | undefined;\r\n defaultRiderTypeId: number;\r\n allowQuickPerform: boolean;\r\n allowOnTheWay: boolean;\r\n paraScopeGpsReportingInterval: number | undefined;\r\n certificationNotificationEmail: string | undefined;\r\n certificationNotificationInterval: number | undefined;\r\n urbanToRuralIsUrban: boolean | undefined;\r\n ruralToUrbanIsUrban: boolean | undefined;\r\n triggerOTWRemindersFromParaScope: boolean | undefined;\r\n lcapiKey: string | undefined;\r\n lcAccountId: number | undefined;\r\n reportEventsToLogistiCare: boolean;\r\n fairmaticAuditModeEnabled: boolean;\r\n defaultRiderType: RiderType;\r\n companyLocation: Location;\r\n defaultFlagStopRider: Rider;\r\n garageLocation: Location;\r\n lcAccount: Account;\r\n recipientLocation: Location;\r\n}\r\n\r\nexport interface Coordinate {\r\n latitude: number;\r\n longitude: number;\r\n}\r\n\r\nexport interface CreateDelegateUserResponse {\r\n portalUserResourceId: string | undefined;\r\n userIsAlreadyRegistered: boolean;\r\n}\r\n\r\nexport enum DayOfWeek {\r\n _0 = 0,\r\n _1 = 1,\r\n _2 = 2,\r\n _3 = 3,\r\n _4 = 4,\r\n _5 = 5,\r\n _6 = 6,\r\n}\r\n\r\nexport enum DbStatus {\r\n _0 = 0,\r\n _1 = 1,\r\n}\r\n\r\nexport interface DelegateUserRideRequest {\r\n reservationType: string | undefined;\r\n rideDate: Date | undefined;\r\n pickupTime: Date | undefined;\r\n dropoffTime: Date | undefined;\r\n pickupAddress: AddressModel;\r\n dropoffAddress: AddressModel;\r\n comments: string | undefined;\r\n rideRequirements: number[] | undefined;\r\n escorts: number;\r\n vendorRiderId: string | undefined;\r\n newDelegateUserProfile: UserProfile;\r\n pickupAddressId: number;\r\n dropoffAddressId: number;\r\n}\r\n\r\nexport interface DeviceChannelResponse {\r\n storeUpdateRequired: boolean;\r\n channel: string | undefined;\r\n}\r\n\r\nexport interface DeviceModel {\r\n uuid: string | undefined;\r\n playStoreVersion: string | undefined;\r\n buildVersion: string | undefined;\r\n ionicSnapshotBuildId: string | undefined;\r\n ionicChannel: string | undefined;\r\n capacitorVersion: string | undefined;\r\n model: string | undefined;\r\n platform: string | undefined;\r\n platformVersion: string | undefined;\r\n manufacturer: string | undefined;\r\n serialNumber: string | undefined;\r\n}\r\n\r\nexport interface DispatchMessage {\r\n messageId: number;\r\n text: string | undefined;\r\n originalMessageId: number | undefined;\r\n vehicleId: number | undefined;\r\n status: string | undefined;\r\n fromUserId: string | undefined;\r\n toUserId: string | undefined;\r\n messageDateTime: Date | undefined;\r\n priority: number | undefined;\r\n messageType: number | undefined;\r\n dbStatus: number | undefined;\r\n direction: string | undefined;\r\n driverId: number | undefined;\r\n acceptedBy: string | undefined;\r\n acceptedOn: Date | undefined;\r\n requiresAcceptance: boolean | undefined;\r\n deliveryStatus: number;\r\n driver: Driver;\r\n dispatchMessage2: DispatchMessage;\r\n vehicle: Vehicle;\r\n dispatchMessage1: DispatchMessage[] | undefined;\r\n}\r\n\r\nexport interface Driver {\r\n driverId: number;\r\n lastName: string | undefined;\r\n firstName: string | undefined;\r\n middleInitial: string | undefined;\r\n ssn: string | undefined;\r\n dob: Date | undefined;\r\n phone: string | undefined;\r\n driverCode: string | undefined;\r\n dateEmployed: Date | undefined;\r\n licenseNumber: string | undefined;\r\n licenseState: string | undefined;\r\n licenseClass: string | undefined;\r\n licenseExpiresDate: Date | undefined;\r\n hourlyWage: number | undefined;\r\n driverRemarks: string | undefined;\r\n payrollNumber: string | undefined;\r\n idnumber: number | undefined;\r\n dbstatus: number;\r\n locationId: number | undefined;\r\n canServeChildren: boolean | undefined;\r\n lcdriverId: number | undefined;\r\n location: Location;\r\n brokerReferences: BrokerDriver[] | undefined;\r\n driverSpecialAssistances: DriverSpecialAssistance[] | undefined;\r\n fixedTrips: FixedTrip[] | undefined;\r\n tripDrivers: Trip[] | undefined;\r\n tripEscorts: Trip[] | undefined;\r\n tripTrainees: Trip[] | undefined;\r\n vehicles: Vehicle[] | undefined;\r\n dispatchMessages: DispatchMessage[] | undefined;\r\n driverExcludedRiders: DriverExcludedRider[] | undefined;\r\n driverCertifications: DriverCertification[] | undefined;\r\n}\r\n\r\nexport interface DriverCertification {\r\n certificationID: number;\r\n driverID: number;\r\n dueDate: Date;\r\n completedDate: Date;\r\n certification: Certification;\r\n driver: Driver;\r\n}\r\n\r\nexport interface DriverExcludedRider {\r\n driverId: number;\r\n riderId: number;\r\n driver: Driver;\r\n rider: Rider;\r\n}\r\n\r\nexport interface DriverModel {\r\n firstName: string | undefined;\r\n lastName: string | undefined;\r\n}\r\n\r\nexport interface DriverSession {\r\n driverSessionId: number;\r\n deviceIdentifier: string | undefined;\r\n deviceDescription: string | undefined;\r\n tripId: number;\r\n lastUpdateRequested: Date | undefined;\r\n lastCommunication: Date;\r\n loginDate: Date;\r\n lastSentRouteUpdate: string | undefined;\r\n trip: Trip;\r\n}\r\n\r\nexport interface DriverSpecialAssistance {\r\n driverId: number;\r\n specialAssistanceId: number;\r\n driver: Driver;\r\n specialAssistance: SpecialAssistance;\r\n}\r\n\r\nexport interface EmailAccountDetails {\r\n emailFound: boolean;\r\n emailConfirmed: boolean;\r\n isDelegateAccount: boolean;\r\n}\r\n\r\nexport enum FixedRecursionFlags {\r\n _0 = 0,\r\n _1 = 1,\r\n _2 = 2,\r\n _4 = 4,\r\n _8 = 8,\r\n _16 = 16,\r\n _32 = 32,\r\n _64 = 64,\r\n _128 = 128,\r\n _256 = 256,\r\n _512 = 512,\r\n _1024 = 1024,\r\n _2048 = 2048,\r\n _4096 = 4096,\r\n _8192 = 8192,\r\n _16384 = 16384,\r\n _32768 = 32768,\r\n}\r\n\r\nexport interface FixedRide {\r\n fixedRideId: number;\r\n fixedTripId: number | undefined;\r\n recursion: FixedRecursionFlags;\r\n riderId: number;\r\n riderAccountId: number;\r\n purposeId: number | undefined;\r\n fareAmount: number | undefined;\r\n comments: string | undefined;\r\n scheduledPickupTime: string | undefined;\r\n scheduledDropoffTime: string | undefined;\r\n wheelChairFlag: boolean | undefined;\r\n escortNeeded: boolean | undefined;\r\n billingZoneId: number | undefined;\r\n areaId: number | undefined;\r\n suspendDateBegin: Date | undefined;\r\n suspendDateEnd: Date | undefined;\r\n numChildren: number | undefined;\r\n status: number | undefined;\r\n dbstatus: number | undefined;\r\n initialRideFlag: boolean | undefined;\r\n goldWeek: boolean | undefined;\r\n zoneRate: number | undefined;\r\n numEscorts: number | undefined;\r\n willCall: boolean | undefined;\r\n authNum: string | undefined;\r\n excludeFromAutoschedule: boolean | undefined;\r\n sensitivity: boolean | undefined;\r\n lockOnTrip: boolean | undefined;\r\n directMileage: number | undefined;\r\n providerId: number | undefined;\r\n overnight: number | undefined;\r\n ivrNightBefore: boolean;\r\n ivrOnTheWay: boolean;\r\n activeDateBegin: Date | undefined;\r\n activeDateEnd: Date | undefined;\r\n priorityTime: string | undefined;\r\n rideAlertProviderId: number | undefined;\r\n startDate: Date;\r\n scheduleProfileId: number | undefined;\r\n directMileageOverride: number | undefined;\r\n directDriveDuration: TimeSpan;\r\n directDriveDurationOverride: TimeSpan;\r\n stretcher: boolean;\r\n rideChargeAdjustment: number;\r\n signatureRequired: boolean | undefined;\r\n liftRequired: boolean;\r\n chargeOverride: number | undefined;\r\n chargeOverrideComments: string | undefined;\r\n pickupLocationId: number;\r\n pickupCode: string | undefined;\r\n dropoffLocationId: number;\r\n dropoffCode: string | undefined;\r\n pickupPhone: string | undefined;\r\n dropoffPhone: string | undefined;\r\n nonPriorityTime: string | undefined;\r\n earliestPickupTime: string | undefined;\r\n latestPickupTime: string | undefined;\r\n earliestDropoffTime: string | undefined;\r\n latestDropoffTime: string | undefined;\r\n bzone: BillingZone;\r\n dropoffLocation: Location;\r\n fixedTrip: FixedTrip;\r\n pickupLocation: Location;\r\n provider: Provider;\r\n purpose: Purpose;\r\n rideAlertProvider: RideAlertProvider;\r\n rider: Rider;\r\n riderAccount: RiderAccount;\r\n fixedRideCharges: FixedRideCharge[] | undefined;\r\n fixedRideSpecialAssistances: FixedRideSpecialAssistance[] | undefined;\r\n rides: Ride[] | undefined;\r\n autoCalculatedFare: number | undefined;\r\n readonly recurDaysString: string | undefined;\r\n recurDays: DayOfWeek[] | undefined;\r\n recurType: SubscriptionRecurType;\r\n}\r\n\r\nexport interface FixedRideCharge {\r\n fixedRideId: number;\r\n accountChargeId: number;\r\n accountCharge: AccountCharge;\r\n fixedRide: FixedRide;\r\n}\r\n\r\nexport interface FixedRideSpecialAssistance {\r\n fixedRideId: number;\r\n specialAssistanceId: number;\r\n fixedRide: FixedRide;\r\n specialAssistance: SpecialAssistance;\r\n}\r\n\r\nexport interface FixedTrip {\r\n fixedTripId: number;\r\n vehicleId: number | undefined;\r\n driverId: number | undefined;\r\n recursion: FixedRecursionFlags;\r\n purposeId: number | undefined;\r\n description: string | undefined;\r\n number: number | undefined;\r\n remarks: string | undefined;\r\n scheduledStartTime: string | undefined;\r\n scheduledEndTime: string | undefined;\r\n status: number | undefined;\r\n dbstatus: DbStatus;\r\n return: number | undefined;\r\n excludeFromAutoschedule: boolean | undefined;\r\n locked: boolean | undefined;\r\n includePreTrip: boolean | undefined;\r\n includePostTrip: boolean | undefined;\r\n includeBreak: boolean | undefined;\r\n preTripDuration: number | undefined;\r\n postTripDuration: number | undefined;\r\n breakScheduledStartTime: string | undefined;\r\n breakDuration: number | undefined;\r\n breakWindowOpen: string | undefined;\r\n breakWindowClose: string | undefined;\r\n providerId: number | undefined;\r\n overnight: number | undefined;\r\n blackoutStartTime: string | undefined;\r\n includeBlackout: boolean;\r\n blackoutDuration: number;\r\n icb: boolean;\r\n availableStartTime: string | undefined;\r\n availableEndTime: string | undefined;\r\n rural: boolean | undefined;\r\n demandResponse: boolean | undefined;\r\n directlyOperated: boolean | undefined;\r\n startDepotLocationId: number | undefined;\r\n endDepotLocationId: number | undefined;\r\n enableFlagStops: boolean;\r\n gtfsBlockId: number | undefined;\r\n allowMicrotransitRides: boolean;\r\n driver: Driver;\r\n endDepotLocation: Location;\r\n provider: Provider;\r\n purpose: Purpose;\r\n startDepotLocation: Location;\r\n vehicle: Vehicle;\r\n flagStopBlockRoute: GtfsBlock;\r\n fixedRides: FixedRide[] | undefined;\r\n trips: Trip[] | undefined;\r\n fixedTripOverlays: FixedTripOverlay[] | undefined;\r\n readonly recurDaysString: string | undefined;\r\n recurDays: DayOfWeek[] | undefined;\r\n}\r\n\r\nexport interface FixedTripOverlay {\r\n fixedTripOverlayId: number;\r\n fixedTripId: number;\r\n mapOverlayId: number;\r\n startTime: string | undefined;\r\n endTime: string | undefined;\r\n fixedTrip: FixedTrip;\r\n mapOverlay: MapOverlay;\r\n}\r\n\r\nexport interface FlagStopJob {\r\n id: number;\r\n performedFlagStopId: number;\r\n isPickup: boolean;\r\n riderTypeId: number;\r\n units: number;\r\n fareCollected: number;\r\n unitCost: number;\r\n performedFlagStop: PerformedFlagStop;\r\n riderType: RiderType;\r\n}\r\n\r\nexport interface GenderType {\r\n genderId: number;\r\n name: string | undefined;\r\n description: string | undefined;\r\n}\r\n\r\nexport interface GpsReport {\r\n gpsReportId: number;\r\n latitude: number | undefined;\r\n longitude: number | undefined;\r\n gpsDateTime: Date | undefined;\r\n dateTimeReported: Date | undefined;\r\n speed: number | undefined;\r\n direction: string | undefined;\r\n status: string | undefined;\r\n vehicleId: number | undefined;\r\n tripId: number | undefined;\r\n heading: number | undefined;\r\n odometer: number | undefined;\r\n milesFromPreviousReport: number | undefined;\r\n trip: Trip;\r\n vehicle: Vehicle;\r\n vehicleCurrentStatus: VehicleCurrentStatus;\r\n}\r\n\r\nexport enum GtfsAccessibility {\r\n _0 = 0,\r\n _1 = 1,\r\n _2 = 2,\r\n}\r\n\r\nexport interface GtfsAgency {\r\n gtfsAgencyId: number;\r\n gtfsImportId: string;\r\n agencyImportId: string | undefined;\r\n name: string | undefined;\r\n url: string | undefined;\r\n timeZone: string | undefined;\r\n languageCode: string | undefined;\r\n phone: string | undefined;\r\n fareUrl: string | undefined;\r\n email: string | undefined;\r\n routes: GtfsRoute[] | undefined;\r\n}\r\n\r\nexport interface GtfsBlock {\r\n gtfsBlockId: number;\r\n gtfsImportId: string;\r\n blockId: string | undefined;\r\n trips: GtfsTrip[] | undefined;\r\n}\r\n\r\nexport interface GtfsCalendar {\r\n gtfsCalendarId: number;\r\n gtfsImportId: string;\r\n serviceImportId: string | undefined;\r\n monday: boolean;\r\n tuesday: boolean;\r\n wednesday: boolean;\r\n thursday: boolean;\r\n friday: boolean;\r\n saturday: boolean;\r\n sunday: boolean;\r\n startDate: Date;\r\n endDate: Date;\r\n trips: GtfsTrip[] | undefined;\r\n exceptions: GtfsCalendarDate[] | undefined;\r\n}\r\n\r\nexport interface GtfsCalendarDate {\r\n gtfsCalendarDateId: number;\r\n gtfsCalendarId: number | undefined;\r\n serviceImportId: string | undefined;\r\n exceptionDate: Date;\r\n exceptionType: GtfsExceptionType;\r\n calendar: GtfsCalendar;\r\n}\r\n\r\nexport enum GtfsDirection {\r\n _0 = 0,\r\n _1 = 1,\r\n}\r\n\r\nexport enum GtfsExceptionType {\r\n _1 = 1,\r\n _2 = 2,\r\n}\r\n\r\nexport enum GtfsLocationType {\r\n _0 = 0,\r\n _1 = 1,\r\n _2 = 2,\r\n}\r\n\r\nexport interface GtfsRoute {\r\n gtfsRouteId: number;\r\n gtfsAgencyId: number | undefined;\r\n gtfsImportId: string;\r\n routeImportId: string | undefined;\r\n agencyImportId: string | undefined;\r\n shortName: string | undefined;\r\n longName: string | undefined;\r\n description: string | undefined;\r\n routeType: GtfsRouteType;\r\n url: string | undefined;\r\n color: string | undefined;\r\n textColor: string | undefined;\r\n sortOrder: number | undefined;\r\n agency: GtfsAgency;\r\n trips: GtfsTrip[] | undefined;\r\n}\r\n\r\nexport enum GtfsRouteType {\r\n _0 = 0,\r\n _1 = 1,\r\n _2 = 2,\r\n _3 = 3,\r\n _4 = 4,\r\n _5 = 5,\r\n _6 = 6,\r\n _7 = 7,\r\n}\r\n\r\nexport interface GtfsStop {\r\n gtfsStopId: number | undefined;\r\n gtfsImportId: string;\r\n stopImportId: string | undefined;\r\n code: string | undefined;\r\n name: string | undefined;\r\n description: string | undefined;\r\n latitude: number;\r\n longitude: number;\r\n zoneId: string | undefined;\r\n url: string | undefined;\r\n locationType: GtfsLocationType;\r\n parentStation: string | undefined;\r\n timeZone: string | undefined;\r\n wheelchairBoarding: GtfsAccessibility;\r\n stopTimes: GtfsStopTime[] | undefined;\r\n}\r\n\r\nexport interface GtfsStopTime {\r\n gtfsStopTimeId: number;\r\n gtfsStopId: number | undefined;\r\n gtfsTripId: number | undefined;\r\n stopImportId: string | undefined;\r\n tripImportId: string | undefined;\r\n arrivalTime: TimeSpan;\r\n departureTime: TimeSpan;\r\n sequence: number;\r\n headsign: string | undefined;\r\n pickupType: GtfsStopType;\r\n dropoffType: GtfsStopType;\r\n shapeDistanceTraveled: number | undefined;\r\n timePoint: GtfsTimePoint;\r\n trip: GtfsTrip;\r\n stop: GtfsStop;\r\n performedFlagStops: PerformedFlagStop[] | undefined;\r\n}\r\n\r\nexport enum GtfsStopType {\r\n _0 = 0,\r\n _1 = 1,\r\n _2 = 2,\r\n _3 = 3,\r\n}\r\n\r\nexport enum GtfsTimePoint {\r\n _0 = 0,\r\n _1 = 1,\r\n}\r\n\r\nexport interface GtfsTrip {\r\n gtfsTripId: number;\r\n gtfsRouteId: number | undefined;\r\n gtfsCalendarId: number | undefined;\r\n gtfsBlockId: number | undefined;\r\n tripImportId: string | undefined;\r\n routeImportId: string | undefined;\r\n serviceImportId: string | undefined;\r\n shapeImportId: string | undefined;\r\n headsign: string | undefined;\r\n shortName: string | undefined;\r\n directionId: GtfsDirection;\r\n blockId: string | undefined;\r\n wheelchairAccessible: GtfsAccessibility;\r\n bikesAllowed: GtfsAccessibility;\r\n route: GtfsRoute;\r\n calendar: GtfsCalendar;\r\n block: GtfsBlock;\r\n stopTimes: GtfsStopTime[] | undefined;\r\n}\r\n\r\nexport interface Income {\r\n incomeId: number;\r\n description: string | undefined;\r\n dbstatus: number;\r\n tblRider: Rider[] | undefined;\r\n}\r\n\r\nexport interface Inspection {\r\n inspectionId: number;\r\n tripId: number;\r\n vehicleId: number;\r\n inspectionType: InspectionType;\r\n completedDate: Date;\r\n trip: Trip;\r\n vehicle: Vehicle;\r\n inspectionResults: InspectionResult[] | undefined;\r\n}\r\n\r\nexport enum InspectionAnswer {\r\n _1 = 1,\r\n _2 = 2,\r\n _3 = 3,\r\n}\r\n\r\nexport interface InspectionItem {\r\n inspectionItemId: number;\r\n serviceCategoryId: number;\r\n questionType: InspectionQuestionType;\r\n description: string | undefined;\r\n preTrip: boolean;\r\n postTrip: boolean;\r\n critical: boolean;\r\n dbStatus: number;\r\n serviceCategory: ServiceCategory;\r\n inspectionResults: InspectionResult[] | undefined;\r\n}\r\n\r\nexport enum InspectionQuestionType {\r\n _0 = 0,\r\n _1 = 1,\r\n}\r\n\r\nexport interface InspectionResult {\r\n inspectionResultId: number;\r\n inspectionId: number;\r\n inspectionItemId: number;\r\n result: InspectionAnswer;\r\n textResult: string | undefined;\r\n inspection: Inspection;\r\n inspectionItem: InspectionItem;\r\n}\r\n\r\nexport enum InspectionType {\r\n _1 = 1,\r\n _2 = 2,\r\n}\r\n\r\nexport interface Language {\r\n languageId: number;\r\n description: string | undefined;\r\n dbstatus: number;\r\n tblRider: Rider[] | undefined;\r\n}\r\n\r\nexport interface ListRidesRequest {\r\n rideStatusFilter: number[] | undefined;\r\n sortColumnName: string | undefined;\r\n sortDirectionIsDescending: boolean;\r\n takeAmount: number;\r\n skipAmount: number;\r\n searchTerm: string | undefined;\r\n pastRides: boolean;\r\n ridePaymentStatusFilter: number[] | undefined;\r\n}\r\n\r\nexport interface Location {\r\n name: string | undefined;\r\n address1: string | undefined;\r\n address2: string | undefined;\r\n zipCode: string | undefined;\r\n state: string | undefined;\r\n city: string | undefined;\r\n county: string | undefined;\r\n latitude: number | undefined;\r\n longitude: number | undefined;\r\n locationId: number;\r\n suggest: boolean | undefined;\r\n defaultSiteCode: string | undefined;\r\n defaultPhone: string | undefined;\r\n isHub: boolean;\r\n isUrban: boolean | undefined;\r\n companyCompanyLocations: Company[] | undefined;\r\n companyGarageLocations: Company[] | undefined;\r\n companyRecipientLocations: Company[] | undefined;\r\n drivers: Driver[] | undefined;\r\n fixedRideDropoffLocations: FixedRide[] | undefined;\r\n fixedRidePickupLocations: FixedRide[] | undefined;\r\n fixedTripEndDepotLocations: FixedTrip[] | undefined;\r\n fixedTripStartDepotLocations: FixedTrip[] | undefined;\r\n providers: Provider[] | undefined;\r\n rideDropoffLocations: Ride[] | undefined;\r\n ridePickupLocations: Ride[] | undefined;\r\n riderBillingLocations: Rider[] | undefined;\r\n riderContactLocations: Rider[] | undefined;\r\n riderDoctorLocations: Rider[] | undefined;\r\n riderHomeLocations: Rider[] | undefined;\r\n tripEndDepotLocations: Trip[] | undefined;\r\n tripStartDepotLocations: Trip[] | undefined;\r\n vehicles: Vehicle[] | undefined;\r\n agencies: Agency[] | undefined;\r\n}\r\n\r\nexport interface LoginResponseModel {\r\n token: string | undefined;\r\n userProfile: UserProfile;\r\n}\r\n\r\nexport interface MaintenancePlan {\r\n id: number;\r\n name: string | undefined;\r\n description: string | undefined;\r\n isActive: boolean;\r\n serviceSchedules: ServiceSchedule[] | undefined;\r\n vehicles: Vehicle[] | undefined;\r\n}\r\n\r\nexport interface MapOverlay {\r\n mapOverlayId: number;\r\n mapOverlayType: MapOverlayTypeEnum;\r\n blobUri: string | undefined;\r\n name: string | undefined;\r\n zIndex: number | undefined;\r\n createdByUser: string | undefined;\r\n dateCreated: Date | undefined;\r\n displayOn: string | undefined;\r\n tripOverlays: TripOverlays[] | undefined;\r\n fixedTripOverlays: FixedTripOverlay[] | undefined;\r\n}\r\n\r\nexport enum MapOverlayTypeEnum {\r\n _1 = 1,\r\n _2 = 2,\r\n _3 = 3,\r\n _4 = 4,\r\n}\r\n\r\nexport interface MileageRate {\r\n mileageRateId: number | undefined;\r\n mileageRateProfileId: number | undefined;\r\n levelOfService: string | undefined;\r\n baseRate: number;\r\n unitRate: number | undefined;\r\n startMileage: number;\r\n endMileage: number;\r\n isActive: boolean;\r\n mileageRateProfile: MileageRateProfile;\r\n}\r\n\r\nexport interface MileageRateProfile {\r\n mileageRateProfileId: number | undefined;\r\n description: string | undefined;\r\n isActive: boolean;\r\n mileageRates: MileageRate[] | undefined;\r\n brokerContracts: BrokerContract[] | undefined;\r\n}\r\n\r\nexport interface NewUserProfile {\r\n firstName: string | undefined;\r\n middleInitial: string | undefined;\r\n lastName: string | undefined;\r\n genderId: number | undefined;\r\n genderDescription: string | undefined;\r\n dateOfBirth: string | undefined;\r\n phoneNumber: string | undefined;\r\n address: AddressModel;\r\n rideRequirements: RideRequirementTypes[] | undefined;\r\n prefersTextMessage: boolean;\r\n}\r\n\r\nexport interface OutOfServicePeriod {\r\n outOfServicePeriodId: number;\r\n vehicleId: number;\r\n periodStart: Date;\r\n periodEnd: Date;\r\n notes: string | undefined;\r\n vehicle: Vehicle;\r\n}\r\n\r\nexport interface Pass {\r\n id: string;\r\n riderId: number | undefined;\r\n effectiveDate: Date | undefined;\r\n expirationDate: Date | undefined;\r\n maxRideCount: number | undefined;\r\n isActive: boolean;\r\n created: Date;\r\n passTypeId: number;\r\n riderTypeId: number;\r\n externalPassId: string | undefined;\r\n isEPass: boolean;\r\n passTransactions: PassTransaction[] | undefined;\r\n rider: Rider;\r\n passType: PassType;\r\n riderType: RiderType;\r\n passAudits: PassAudit[] | undefined;\r\n}\r\n\r\nexport interface PassAudit {\r\n passAuditId: number;\r\n passId: string;\r\n doneOn: Date;\r\n doneBy: string | undefined;\r\n description: string | undefined;\r\n pass: Pass;\r\n notes: string | undefined;\r\n}\r\n\r\nexport interface PassTransaction {\r\n id: string;\r\n passId: string;\r\n amount: number | undefined;\r\n purchaserName: string | undefined;\r\n userName: string | undefined;\r\n created: Date;\r\n rideId: number | undefined;\r\n flagStopJobId: number | undefined;\r\n transferedFromTransactionId: string | undefined;\r\n gpsOccuranceDateUtc: Date | undefined;\r\n notes: string | undefined;\r\n usedByRide: Ride;\r\n pass: Pass;\r\n transferedFromTransaction: PassTransaction;\r\n flagStopJob: FlagStopJob;\r\n transferedToTransactions: PassTransaction[] | undefined;\r\n}\r\n\r\nexport interface PassType {\r\n id: number;\r\n integrationId: string;\r\n description: string | undefined;\r\n riderTypeId: number | undefined;\r\n isActive: boolean;\r\n passes: Pass[] | undefined;\r\n riderType: RiderType;\r\n}\r\n\r\nexport interface PaymentAssignmentModel {\r\n transportationProviderId: string | undefined;\r\n paymentToken: PaymentTokenModel;\r\n rideIds: string[] | undefined;\r\n requestId: string;\r\n}\r\n\r\nexport interface PaymentProvider {\r\n paymentProviderId: number;\r\n providerType: string | undefined;\r\n configuration: string | undefined;\r\n createdDate: Date;\r\n type: PaymentProviderType;\r\n riderPaymentMethods: RiderPaymentMethod[] | undefined;\r\n}\r\n\r\nexport interface PaymentProviderSettings {\r\n apiKey: string | undefined;\r\n providerId: number;\r\n providerType: string | undefined;\r\n}\r\n\r\nexport enum PaymentProviderType {\r\n _0 = 0,\r\n}\r\n\r\nexport interface PaymentTokenModel {\r\n card_exp: string | undefined;\r\n card_exp_datetime: string | undefined;\r\n card_last_four: string | undefined;\r\n card_type: string | undefined;\r\n created_at: string | undefined;\r\n id: string | undefined;\r\n provider_id: number;\r\n}\r\n\r\nexport interface PerformedFlagStop {\r\n id: number;\r\n tripId: number;\r\n arriveDate: Date | undefined;\r\n completedDate: Date | undefined;\r\n odometer: number;\r\n latitude: number;\r\n longitude: number;\r\n gtfsStopTimeId: number | undefined;\r\n scheduledArrivalDate: Date | undefined;\r\n scheduledDepartureDate: Date | undefined;\r\n scheduledFlagStop: GtfsStopTime;\r\n trip: Trip;\r\n flagStopJobs: FlagStopJob[] | undefined;\r\n}\r\n\r\nexport interface PortalDelegate {\r\n id: number;\r\n delegateOrganizationId: number;\r\n firstName: string | undefined;\r\n lastName: string | undefined;\r\n email: string | undefined;\r\n phone: string | undefined;\r\n tripPortalResourceId: string | undefined;\r\n tripPortalInvitationConfirmed: boolean;\r\n isEnabled: boolean;\r\n portalDelegateOrganization: PortalDelegateOrganization;\r\n}\r\n\r\nexport interface PortalDelegateOrganization {\r\n id: number | undefined;\r\n name: string | undefined;\r\n primaryContactPhone: string | undefined;\r\n canCreateRequestsForAllRiders: boolean;\r\n enabled: boolean;\r\n portalDelegates: PortalDelegate[] | undefined;\r\n portalDelegateOrganizationRiders: PortalDelegateOrganizationRider[] | undefined;\r\n description: string | undefined;\r\n isActive: boolean;\r\n tripPortalResourceId: string | undefined;\r\n approvedDelegateRiders: ApprovedDelegateRider[] | undefined;\r\n}\r\n\r\nexport interface PortalDelegateOrganizationRider {\r\n riderId: number;\r\n delegateOrganizationId: number;\r\n portalDelegateOrganization: PortalDelegateOrganization;\r\n rider: Rider;\r\n}\r\n\r\nexport enum PortalUserRegistrationStatusEnum {\r\n _1 = 1,\r\n _2 = 2,\r\n _3 = 3,\r\n _4 = 4,\r\n _5 = 5,\r\n}\r\n\r\nexport interface PortalUserRideRequest {\r\n portalUserRideRequestId: number;\r\n tripPortalResourceId: string | undefined;\r\n rideRequestStatus: number;\r\n acknowledged: Date | undefined;\r\n completed: Date | undefined;\r\n created: Date;\r\n tblRideId: number | undefined;\r\n reasonMessage: string | undefined;\r\n tblRide: Ride;\r\n}\r\n\r\nexport interface Provider {\r\n providerId: number;\r\n name: string | undefined;\r\n contact: string | undefined;\r\n phone: string | undefined;\r\n taxId: string | undefined;\r\n fedTaxNumber: string | undefined;\r\n stateTaxNumber: string | undefined;\r\n idnumber1: string | undefined;\r\n idnumber2: string | undefined;\r\n idnumber3: string | undefined;\r\n dbstatus: number;\r\n locationId: number | undefined;\r\n lyftRideDelegationProgramId: string | undefined;\r\n location: Location;\r\n fixedRides: FixedRide[] | undefined;\r\n fixedTrips: FixedTrip[] | undefined;\r\n riders: Rider[] | undefined;\r\n rides: Ride[] | undefined;\r\n trips: Trip[] | undefined;\r\n}\r\n\r\nexport interface Purpose {\r\n purposeId: number;\r\n description: string | undefined;\r\n dbstatus: number;\r\n fixedRides: FixedRide[] | undefined;\r\n fixedTrips: FixedTrip[] | undefined;\r\n rides: Ride[] | undefined;\r\n trips: Trip[] | undefined;\r\n brokerContracts: BrokerContract[] | undefined;\r\n}\r\n\r\nexport interface Race {\r\n raceId: number;\r\n description: string | undefined;\r\n dbstatus: number;\r\n tblRider: Rider[] | undefined;\r\n}\r\n\r\nexport interface ReminderCall {\r\n reminderCallId: string;\r\n rideId: number;\r\n callType: number;\r\n createdDate: Date;\r\n ride: Ride;\r\n reminderCallAttempts: ReminderCallAttempt[] | undefined;\r\n}\r\n\r\nexport interface ReminderCallAttempt {\r\n reminderCallAttemptId: string;\r\n reminderCallId: string;\r\n status: number;\r\n createdDate: Date;\r\n lastModifiedDate: Date;\r\n attemptCount: number;\r\n duration: TimeSpan;\r\n message: string | undefined;\r\n exception: string | undefined;\r\n rideAlertProviderId: number | undefined;\r\n reminderCall: ReminderCall;\r\n rideAlertProvider: RideAlertProvider;\r\n}\r\n\r\nexport interface ReminderTextMessage {\r\n reminderTextMessageId: string;\r\n rideId: number;\r\n rideAlertProviderId: number;\r\n reminderType: number;\r\n createdDate: Date;\r\n message: string | undefined;\r\n status: number;\r\n exception: string | undefined;\r\n ride: Ride;\r\n rideAlertProvider: RideAlertProvider;\r\n}\r\n\r\nexport interface RequestRideResponse {\r\n responseDetails: RideRequestDetails;\r\n transportationProvider: TransportationProviderModel;\r\n}\r\n\r\nexport interface Ride {\r\n rideId: number;\r\n tripId: number | undefined;\r\n riderId: number;\r\n riderAccountId: number;\r\n purposeId: number | undefined;\r\n fixedRideId: number | undefined;\r\n rideDate: Date | undefined;\r\n scheduledDropoffTime: string | undefined;\r\n scheduledPickupTime: string | undefined;\r\n pickupArrivalTime: string | undefined;\r\n dropoffArrivalTime: string | undefined;\r\n actualPickupTime: string | undefined;\r\n actualDropoffTime: string | undefined;\r\n startOdometer: number | undefined;\r\n endOdometer: number | undefined;\r\n fareAmount: number | undefined;\r\n autoCalculatedFare: number | undefined;\r\n fareCollected: number | undefined;\r\n wheelChairFlag: boolean | undefined;\r\n comments: string | undefined;\r\n status: number;\r\n noShowReason: number | undefined;\r\n escortNeeded: boolean | undefined;\r\n billingZoneId: number | undefined;\r\n areaId: number | undefined;\r\n zoneRate: number | undefined;\r\n billable: boolean | undefined;\r\n denyServiceId: number | undefined;\r\n units: number | undefined;\r\n numChildren: number | undefined;\r\n dbstatus: number | undefined;\r\n initialRideFlag: boolean | undefined;\r\n excludeWait: boolean | undefined;\r\n dateRecorded: Date | undefined;\r\n numEscorts: number | undefined;\r\n autoscheduled: boolean | undefined;\r\n willCall: boolean | undefined;\r\n originalTripId: number | undefined;\r\n authNum: string | undefined;\r\n excludeFromAutoschedule: boolean | undefined;\r\n numClients: number | undefined;\r\n sensitivity: boolean | undefined;\r\n lockOnTrip: boolean | undefined;\r\n directMileage: number | undefined;\r\n providerId: number | undefined;\r\n actualDropoffDateTime: Date | undefined;\r\n actualPickupDateTime: Date | undefined;\r\n overnight: number | undefined;\r\n pickupArrivalOdometer: number | undefined;\r\n scheduledDropoffDateTime: Date | undefined;\r\n scheduledPickupDateTime: Date | undefined;\r\n ivrNightBefore: boolean;\r\n ivrOnTheWay: boolean;\r\n noShowDateTime: Date | undefined;\r\n pickupArrivalDateTime: Date | undefined;\r\n priorityTime: string | undefined;\r\n rideAlertProviderId: number | undefined;\r\n willCallReady: Date | undefined;\r\n flagStopId: string | undefined;\r\n scheduleProfileId: number | undefined;\r\n directMileageOverride: number | undefined;\r\n directDriveDuration: TimeSpan;\r\n directDriveDurationOverride: TimeSpan;\r\n stretcher: boolean;\r\n rideChargeAdjustment: number;\r\n dateDenied: Date | undefined;\r\n signatureRequired: boolean | undefined;\r\n pickupActualLatitude: number | undefined;\r\n pickupActualLongitude: number | undefined;\r\n dropoffActualLatitude: number | undefined;\r\n dropoffActualLongitude: number | undefined;\r\n pickupArrivalLatitude: number | undefined;\r\n pickupArrivalLongitude: number | undefined;\r\n dropoffArrivalLatitude: number | undefined;\r\n dropoffArrivalLongitude: number | undefined;\r\n liftRequired: boolean | undefined;\r\n chargeOverride: number | undefined;\r\n chargeOverrideComments: string | undefined;\r\n waitStartTime: string | undefined;\r\n waitEndTime: string | undefined;\r\n waitTimeOverrideMinutes: number | undefined;\r\n pickupLocationId: number;\r\n pickupCode: string | undefined;\r\n dropoffLocationId: number;\r\n dropoffCode: string | undefined;\r\n pickupPhone: string | undefined;\r\n dropoffPhone: string | undefined;\r\n additionalMilesFromDepot: number;\r\n webHookUrl: string | undefined;\r\n importSource: string | undefined;\r\n levelOfService: string | undefined;\r\n onTheWayTime: string | undefined;\r\n onTheWayLatitude: number | undefined;\r\n onTheWayLongitude: number | undefined;\r\n canceledDateTime: Date | undefined;\r\n canceledLatitude: number | undefined;\r\n canceledLongitude: number | undefined;\r\n brokerCancelDenyReason: string | undefined;\r\n estimatedTimeOfArrival: string | undefined;\r\n pickupOnTheWayEta: Date | undefined;\r\n createdDate: Date | undefined;\r\n lastModifiedDate: Date | undefined;\r\n errors: string | undefined;\r\n rideRequestId: number | undefined;\r\n logistiCareRideId: string | undefined;\r\n logistiCareInvoiced: Date | undefined;\r\n previousLogistiCarePriorityTime: string | undefined;\r\n previousLogistiCarePickupLocation: string | undefined;\r\n previousLogistiCareDropoffLocation: string | undefined;\r\n originalScheduledPickupTime: string | undefined;\r\n originalScheduledDropoffTime: string | undefined;\r\n brokerId: number | undefined;\r\n brokerContractId: string | undefined;\r\n brokerRideId: string | undefined;\r\n brokerComments: string | undefined;\r\n brokerRideReviewDate: Date | undefined;\r\n brokerLastUpdateDate: Date | undefined;\r\n brokerCancellationDate: Date | undefined;\r\n brokerBillingDate: Date | undefined;\r\n brokerBillingStatus: RideBrokerBillingStatus;\r\n rideDelegationPartnerId: number | undefined;\r\n delegatedRideId: string | undefined;\r\n delegatedRideStatus: string | undefined;\r\n paraScopeEvents: RideParaScopeEvents;\r\n paraScopeEventsPerformed: RideParaScopeEventFlags;\r\n nonPriorityTime: string | undefined;\r\n earliestPickupTime: string | undefined;\r\n latestPickupTime: string | undefined;\r\n earliestDropoffTime: string | undefined;\r\n latestDropoffTime: string | undefined;\r\n tripPortalResourceId: string | undefined;\r\n brokerContract: BrokerContract;\r\n billingZone: BillingZone;\r\n dropoffLocation: Location;\r\n fixedRide: FixedRide;\r\n pickupLocation: Location;\r\n provider: Provider;\r\n purpose: Purpose;\r\n rideAlertProvider: RideAlertProvider;\r\n rider: Rider;\r\n riderAccount: RiderAccount;\r\n trip: Trip;\r\n scheduleProfile: ScheduleProfile;\r\n rideCharges: RideCharge[] | undefined;\r\n reminderCalls: ReminderCall[] | undefined;\r\n reminderTextMessages: ReminderTextMessage[] | undefined;\r\n rideSpecialAssistances: RideSpecialAssistance[] | undefined;\r\n signatures: Signature[] | undefined;\r\n passTransactions: PassTransaction[] | undefined;\r\n snapshotHistory: RideSnapshotHistory[] | undefined;\r\n portalUserRideRequests: PortalUserRideRequest[] | undefined;\r\n ridePayments: RidePayment[] | undefined;\r\n}\r\n\r\nexport enum RideAcceptanceStatus {\r\n _1 = 1,\r\n _2 = 2,\r\n _3 = 3,\r\n _4 = 4,\r\n}\r\n\r\nexport interface RideAlertProvider {\r\n rideAlertProviderId: number;\r\n name: string | undefined;\r\n callBackPhone: string | undefined;\r\n companyName: string | undefined;\r\n isDefault: boolean;\r\n onTheWayLeadMinutes: number;\r\n nightBeforeStartTime: TimeSpan;\r\n maxRetryCount: number;\r\n retryInterval: TimeSpan;\r\n onTheWayCallTemplate: string | undefined;\r\n nightBeforeCallTemplate: string | undefined;\r\n onTheWayTextTemplate: string | undefined;\r\n nightBeforeTextTemplate: string | undefined;\r\n combineReminders: boolean;\r\n nightBeforeCallIntroTemplate: string | undefined;\r\n nightBeforeCallRideTemplate: string | undefined;\r\n nightBeforeCallCloseTemplate: string | undefined;\r\n nightBeforeTextIntroTemplate: string | undefined;\r\n nightBeforeTextRideTemplate: string | undefined;\r\n nightBeforeTextCloseTemplate: string | undefined;\r\n dbstatus: number;\r\n callerIdIsVerified: boolean;\r\n enableOTWRemindersForPickupPriorities: boolean;\r\n fixedRides: FixedRide[] | undefined;\r\n riders: Rider[] | undefined;\r\n rides: Ride[] | undefined;\r\n accounts: Account[] | undefined;\r\n reminderTextMessages: ReminderTextMessage[] | undefined;\r\n reminderCallAttempts: ReminderCallAttempt[] | undefined;\r\n}\r\n\r\nexport enum RideBrokerBillingStatus {\r\n _0 = 0,\r\n _1 = 1,\r\n _2 = 2,\r\n _3 = 3,\r\n}\r\n\r\nexport interface RideCharge {\r\n rideId: number;\r\n accountChargeId: number;\r\n accountCharge: AccountCharge;\r\n ride: Ride;\r\n}\r\n\r\nexport interface RideDetailsModel {\r\n driver: DriverModel;\r\n vehicle: VehicleModel;\r\n scheduledPickupTime: Date;\r\n ride: RideModel;\r\n fareAmount: number | undefined;\r\n}\r\n\r\nexport interface RideList {\r\n requestedRides: RequestRideResponse[] | undefined;\r\n totalRecords: number;\r\n pageSize: number;\r\n}\r\n\r\nexport interface RideMessage {\r\n message: string | undefined;\r\n rideResourceId: string | undefined;\r\n}\r\n\r\nexport interface RideModel {\r\n transportationProviderId: string;\r\n vendorRiderId: string | undefined;\r\n riderName: string | undefined;\r\n portalUserId: string;\r\n reservationType: string | undefined;\r\n rideDate: Date | undefined;\r\n pickupTime: Date | undefined;\r\n dropoffTime: Date | undefined;\r\n rideStatusId: number;\r\n rideStatusMessage: string | undefined;\r\n rideId: string;\r\n pickupAddress: AddressModel;\r\n dropoffAddress: AddressModel;\r\n comments: string | undefined;\r\n rideRequirements: number[] | undefined;\r\n escorts: number;\r\n paymentMethodToken: string | undefined;\r\n paymentProviderId: number | undefined;\r\n}\r\n\r\nexport enum RideParaScopeEventFlags {\r\n _0 = 0,\r\n _1 = 1,\r\n _2 = 2,\r\n _4 = 4,\r\n _8 = 8,\r\n _16 = 16,\r\n _32 = 32,\r\n _64 = 64,\r\n _128 = 128,\r\n}\r\n\r\nexport interface RideParaScopeEvents {\r\n onTheWay: boolean;\r\n pickupArrive: boolean;\r\n pickupPerform: boolean;\r\n dropoffArrive: boolean;\r\n dropoffPerform: boolean;\r\n signature: boolean;\r\n noShow: boolean;\r\n cancel: boolean;\r\n paraScopeEventsPerformedAsLoaded: RideParaScopeEventFlags;\r\n paraScopeEventsPerformed: RideParaScopeEventFlags;\r\n}\r\n\r\nexport interface RidePayment {\r\n ridePaymentId: number;\r\n rideId: number | undefined;\r\n paymentMethodId: number;\r\n status: string | undefined;\r\n preAuthTransactionDate: Date | undefined;\r\n preAuthTransactionId: string | undefined;\r\n chargeTransactionDate: Date | undefined;\r\n chargeTransactionId: string | undefined;\r\n voidTransactionDate: Date | undefined;\r\n amount: number | undefined;\r\n message: string | undefined;\r\n errorMessage: string | undefined;\r\n actorType: string | undefined;\r\n actorId: string | undefined;\r\n application: string | undefined;\r\n paymentMethod: RiderPaymentMethod;\r\n ride: Ride;\r\n ridePaymentTransactions: RidePaymentTransaction[] | undefined;\r\n}\r\n\r\nexport interface RidePaymentRequest {\r\n rideFares: RideRequestFareRequest[] | undefined;\r\n transportationProviderResourceId: string;\r\n portalUserResourceId: string;\r\n paymentMethodToken: string | undefined;\r\n paymentProviderId: number;\r\n}\r\n\r\nexport interface RidePaymentStatusChangedModel {\r\n status: string | undefined;\r\n}\r\n\r\nexport interface RidePaymentTransaction {\r\n ridePaymentTransactionId: number;\r\n createdDate: Date;\r\n requestText: string | undefined;\r\n responseText: string | undefined;\r\n isSuccess: boolean;\r\n ridePaymentId: number | undefined;\r\n ridePayment: RidePayment;\r\n}\r\n\r\nexport interface RideRequest {\r\n reservationType: string | undefined;\r\n rideDate: Date | undefined;\r\n pickupTime: Date | undefined;\r\n dropoffTime: Date | undefined;\r\n pickupAddress: AddressModel;\r\n dropoffAddress: AddressModel;\r\n comments: string | undefined;\r\n rideRequirements: number[] | undefined;\r\n escorts: number;\r\n}\r\n\r\nexport interface RideRequestDetails {\r\n rideRequestResponseCode: string | undefined;\r\n initialAcceptStatus: number | undefined;\r\n initialAcceptMessage: string | undefined;\r\n name: string | undefined;\r\n rideDetails: RideDetailsModel;\r\n reason: string | undefined;\r\n scheduledPickupTimeUTC: Date | undefined;\r\n fareAmount: number | undefined;\r\n}\r\n\r\nexport interface RideRequestFareRequest {\r\n rideRequest: RideRequest;\r\n fareAmount: number | undefined;\r\n}\r\n\r\nexport interface RideRequestFareResponse {\r\n rideRequest: RideRequest;\r\n fareAmount: number | undefined;\r\n distance: number | undefined;\r\n duration: TimeSpan;\r\n}\r\n\r\nexport interface RideRequirementType {\r\n rideRequirementId: number;\r\n name: string | undefined;\r\n toolTip: string | undefined;\r\n icon: string | undefined;\r\n}\r\n\r\nexport enum RideRequirementTypes {\r\n _1 = 1,\r\n _2 = 2,\r\n _3 = 3,\r\n}\r\n\r\nexport interface RideReservationType {\r\n rideReservationId: number;\r\n name: string | undefined;\r\n toolTip: string | undefined;\r\n}\r\n\r\nexport interface RideSnapshotHistory {\r\n rideSnapshotHistoryId: number;\r\n snapshotData: string | undefined;\r\n rideId: number;\r\n dateRecorded: Date | undefined;\r\n updateSourceId: number | undefined;\r\n updateContext: string | undefined;\r\n reviewDate: Date | undefined;\r\n reviewedByUser: string | undefined;\r\n ride: Ride;\r\n}\r\n\r\nexport interface RideSpecialAssistance {\r\n rideId: number;\r\n specialAssistanceId: number;\r\n ride: Ride;\r\n specialAssistance: SpecialAssistance;\r\n}\r\n\r\nexport interface RideStatusType {\r\n rideStatusId: number;\r\n name: string | undefined;\r\n toolTip: string | undefined;\r\n icon: string | undefined;\r\n iconColor: string | undefined;\r\n}\r\n\r\nexport interface Rider {\r\n riderId: number;\r\n firstName: string | undefined;\r\n lastName: string | undefined;\r\n middleInitial: string | undefined;\r\n medicaidNumber: string | undefined;\r\n dob: Date | undefined;\r\n ssn: string | undefined;\r\n phone: string | undefined;\r\n gender: string | undefined;\r\n customerAssignedUniqueId: string | undefined;\r\n languageId: number | undefined;\r\n specialDirections: string | undefined;\r\n doctorName: string | undefined;\r\n doctorPhone: string | undefined;\r\n contactName: string | undefined;\r\n contactPhone: string | undefined;\r\n dateLastRode: Date | undefined;\r\n numChildren: number;\r\n wheelchairRequired: boolean;\r\n escortRequired: boolean;\r\n dbstatus: number;\r\n providerId: number | undefined;\r\n ivrNightBefore: boolean | undefined;\r\n ivrOnTheWay: boolean | undefined;\r\n preferTextMessage: boolean | undefined;\r\n ssne: string | undefined;\r\n incomeId: number | undefined;\r\n raceId: number | undefined;\r\n emailAddress: string | undefined;\r\n rideAlertProviderId: number | undefined;\r\n phone2: string | undefined;\r\n scheduleProfileId: number | undefined;\r\n liftRequired: boolean;\r\n stretcherRequired: boolean;\r\n riderImageId: string | undefined;\r\n homeLocationId: number;\r\n billingLocationId: number | undefined;\r\n doctorLocationId: number | undefined;\r\n contactLocationId: number | undefined;\r\n defaultTripNumber: number | undefined;\r\n assessmentDate: Date | undefined;\r\n notes: string | undefined;\r\n lcriderId: number | undefined;\r\n brokerId: number | undefined;\r\n brokerRiderId: string | undefined;\r\n scheduleProfile: ScheduleProfile;\r\n billingLocation: Location;\r\n contactLocation: Location;\r\n doctorLocation: Location;\r\n homeLocation: Location;\r\n provider: Provider;\r\n income: Income;\r\n language: Language;\r\n race: Race;\r\n rideAlertProvider: RideAlertProvider;\r\n tripPortalResourceId: string | undefined;\r\n tripPortalInvitationConfirmed: boolean;\r\n brokerReferences: BrokerRider[] | undefined;\r\n companies: Company[] | undefined;\r\n fixedRides: FixedRide[] | undefined;\r\n riderAccounts: RiderAccount[] | undefined;\r\n riderSpecialAssistances: RiderSpecialAssistance[] | undefined;\r\n rides: Ride[] | undefined;\r\n passes: Pass[] | undefined;\r\n portalDelegateOrganizationRiders: PortalDelegateOrganizationRider[] | undefined;\r\n driversWithRiderExcluded: DriverExcludedRider[] | undefined;\r\n}\r\n\r\nexport interface RiderAccount {\r\n riderAccountId: number;\r\n riderId: number;\r\n accountId: number;\r\n accountNumber: string | undefined;\r\n expirationDate: Date | undefined;\r\n monthlyRideCount: number | undefined;\r\n comments: string | undefined;\r\n dbstatus: number | undefined;\r\n isDefault: boolean;\r\n account: Account;\r\n rider: Rider;\r\n fixedRides: FixedRide[] | undefined;\r\n rides: Ride[] | undefined;\r\n}\r\n\r\nexport interface RiderPaymentMethod {\r\n riderMethodPaymentId: number;\r\n providerId: number;\r\n riderId: number;\r\n token: string | undefined;\r\n status: string | undefined;\r\n message: string | undefined;\r\n dbStatus: boolean;\r\n dateCreated: Date;\r\n provider: PaymentProvider;\r\n ridePayments: RidePayment[] | undefined;\r\n}\r\n\r\nexport interface RiderSpecialAssistance {\r\n riderId: number;\r\n specialAssistanceId: number;\r\n rider: Rider;\r\n specialAssistance: SpecialAssistance;\r\n}\r\n\r\nexport interface RiderType {\r\n id: number;\r\n description: string | undefined;\r\n defaultFare: number;\r\n isActive: boolean;\r\n isSystem: boolean;\r\n dbStatus: number;\r\n passes: Pass[] | undefined;\r\n passTypes: PassType[] | undefined;\r\n flagStopJobs: FlagStopJob[] | undefined;\r\n defaultRiderTypeForCompany: Company[] | undefined;\r\n}\r\n\r\nexport interface ScheduleProfile {\r\n scheduleProfileId: number;\r\n name: string | undefined;\r\n isDefault: boolean;\r\n averageLoadMinutes: number;\r\n averageUnloadMinutes: number;\r\n additionalWheelchairLoadMinutes: number;\r\n additionalWheelchairUnloadMinutes: number;\r\n additionalStretcherLoadMinutes: number;\r\n additionalStretcherUnloadMinutes: number;\r\n earlyPickupFlexibilityMinutes: number;\r\n addDirectDriveToEarliestPickUp: boolean | undefined;\r\n earlyDropOffFlexibilityMinutes: number;\r\n minimumPickupWindowDurationMinutes: number | undefined;\r\n latePickupFlexibilityMinutes: number;\r\n lateDropOffFlexibilityMinutes: number;\r\n addDirectDriveToLatestDropoff: boolean | undefined;\r\n minimumDropoffWindowDurationMinutes: number | undefined;\r\n useRequestedPickupTimeWindow: boolean;\r\n earlyRequestedPickupTimeMinutes: number | undefined;\r\n lateRequestedPickupTimeMinutes: number | undefined;\r\n useRequestedDropoffTimeWindow: boolean;\r\n earlyRequestedDropoffTimeMinutes: number | undefined;\r\n lateRequestedDropoffTimeMinutes: number | undefined;\r\n dbstatus: number;\r\n ride: Ride[] | undefined;\r\n rider: Rider[] | undefined;\r\n accounts: Account[] | undefined;\r\n}\r\n\r\nexport interface Service {\r\n serviceId: number;\r\n serviceCategoryId: number;\r\n name: string | undefined;\r\n estimatedCost: number | undefined;\r\n intervalDays: number | undefined;\r\n intervalMiles: number | undefined;\r\n isActive: boolean;\r\n serviceCategory: ServiceCategory;\r\n approvedVendors: ApprovedVendor[] | undefined;\r\n serviceRequests: ServiceRequest[] | undefined;\r\n serviceSchedules: ServiceSchedule[] | undefined;\r\n}\r\n\r\nexport interface ServiceCategory {\r\n serviceCategoryId: number;\r\n name: string | undefined;\r\n description: string | undefined;\r\n isActive: boolean;\r\n services: Service[] | undefined;\r\n inspectionItems: InspectionItem[] | undefined;\r\n}\r\n\r\nexport interface ServiceRequest {\r\n serviceRequestId: number;\r\n serviceId: number;\r\n vehicleId: number;\r\n vendorId: number | undefined;\r\n vendorQuotedCosts: number | undefined;\r\n requestedDate: Date;\r\n dueDate: Date | undefined;\r\n dueOdometer: number | undefined;\r\n status: ServiceRequestStatus;\r\n odometerCompleted: number | undefined;\r\n dateCompleted: Date | undefined;\r\n actualCosts: number | undefined;\r\n comments: string | undefined;\r\n service: Service;\r\n vehicle: Vehicle;\r\n vendor: Vendor;\r\n}\r\n\r\nexport enum ServiceRequestStatus {\r\n _1 = 1,\r\n _2 = 2,\r\n _3 = 3,\r\n}\r\n\r\nexport interface ServiceSchedule {\r\n id: number;\r\n maintenancePlanId: number;\r\n serviceId: number;\r\n intervalDays: number | undefined;\r\n intervalMiles: number | undefined;\r\n maintenancePlan: MaintenancePlan;\r\n service: Service;\r\n}\r\n\r\nexport interface Signature {\r\n signatureId: number;\r\n rideId: number;\r\n signatureValue: string | undefined;\r\n signatureValueReduced: string | undefined;\r\n reason: string | undefined;\r\n ride: Ride;\r\n}\r\n\r\nexport interface SpecialAssistance {\r\n specialAssistanceId: number;\r\n code: string | undefined;\r\n description: string | undefined;\r\n disability: boolean;\r\n fixed: boolean;\r\n dbstatus: number;\r\n additionalLoadMinutes: number;\r\n additionalUnloadMinutes: number;\r\n requiresVehicle: boolean;\r\n requiresDriver: boolean;\r\n driverSpecialAssistances: DriverSpecialAssistance[] | undefined;\r\n fixedRideSpecialAssistances: FixedRideSpecialAssistance[] | undefined;\r\n rideSpecialAssistances: RideSpecialAssistance[] | undefined;\r\n riderSpecialAssistances: RiderSpecialAssistance[] | undefined;\r\n vehicleSpecialAssistances: VehicleSpecialAssistance[] | undefined;\r\n}\r\n\r\nexport enum SubscriptionRecurType {\r\n _0 = 0,\r\n _1 = 1,\r\n _2 = 2,\r\n _3 = 3,\r\n _4 = 4,\r\n _5 = 5,\r\n _6 = 6,\r\n _7 = 7,\r\n _8 = 8,\r\n _9 = 9,\r\n}\r\n\r\nexport interface TimeSpan {\r\n ticks: number;\r\n readonly days: number;\r\n readonly hours: number;\r\n readonly milliseconds: number;\r\n readonly minutes: number;\r\n readonly seconds: number;\r\n readonly totalDays: number;\r\n readonly totalHours: number;\r\n readonly totalMilliseconds: number;\r\n readonly totalMinutes: number;\r\n readonly totalSeconds: number;\r\n}\r\n\r\nexport interface TransportationProviderModel {\r\n transportationProviderId: string | undefined;\r\n name: string | undefined;\r\n phone: string | undefined;\r\n logoImgUrl: string | undefined;\r\n webPaymentToken: string | undefined;\r\n defaultLatitude: number | undefined;\r\n defaultLongitude: number | undefined;\r\n brandId: string | undefined;\r\n}\r\n\r\nexport interface Trip {\r\n tripId: number;\r\n description: string | undefined;\r\n vehicleId: number | undefined;\r\n driverId: number | undefined;\r\n fixedTripId: number | undefined;\r\n number: number | undefined;\r\n status: number | undefined;\r\n tripDate: Date | undefined;\r\n remarks: string | undefined;\r\n scheduledStartTime: string | undefined;\r\n scheduledEndTime: string | undefined;\r\n actualStartTime: string | undefined;\r\n actualEndTime: string | undefined;\r\n startWaitTime: string | undefined;\r\n endWaitTime: string | undefined;\r\n startOdometer: number | undefined;\r\n endOdometer: number | undefined;\r\n purposeId: number | undefined;\r\n traineeId: number | undefined;\r\n escortId: number | undefined;\r\n firstPickupTime: string | undefined;\r\n firstPickupOdometer: number | undefined;\r\n lastDropOffTime: string | undefined;\r\n lastDropOffOdometer: number | undefined;\r\n gasolineGallons: number | undefined;\r\n gasolineCost: number | undefined;\r\n gasolineOdometer: number | undefined;\r\n oil: boolean | undefined;\r\n accidentRemarks: string | undefined;\r\n accidentOdometer: number | undefined;\r\n breakDownRemarks: string | undefined;\r\n breakDownOdometer: number | undefined;\r\n traineeStartTime: string | undefined;\r\n traineeEndTime: string | undefined;\r\n escortStartTime: string | undefined;\r\n escortEndTime: string | undefined;\r\n transmissionFluid: boolean | undefined;\r\n brakeFluid: boolean | undefined;\r\n coolant: boolean | undefined;\r\n powerSteeringFluid: boolean | undefined;\r\n accident: boolean | undefined;\r\n breakdown: boolean | undefined;\r\n dbstatus: number | undefined;\r\n excludeFromAutoschedule: boolean | undefined;\r\n locked: boolean | undefined;\r\n includePreTrip: boolean | undefined;\r\n includePostTrip: boolean | undefined;\r\n includeBreak: boolean | undefined;\r\n preTripDuration: number | undefined;\r\n preTripActualStartTime: string | undefined;\r\n preTripActualEndTime: string | undefined;\r\n preTripStartOdometer: number | undefined;\r\n preTripEndOdometer: number | undefined;\r\n postTripDuration: number | undefined;\r\n postTripActualStartTime: string | undefined;\r\n postTripActualEndTime: string | undefined;\r\n postTripStartOdometer: number | undefined;\r\n postTripEndOdometer: number | undefined;\r\n breakScheduledStartTime: string | undefined;\r\n breakDuration: number | undefined;\r\n breakActualStartTime: string | undefined;\r\n breakActualEndTime: string | undefined;\r\n breakStartOdometer: number | undefined;\r\n breakEndOdometer: number | undefined;\r\n breakWindowOpen: string | undefined;\r\n breakWindowClose: string | undefined;\r\n providerId: number | undefined;\r\n actualEndDateTime: Date | undefined;\r\n actualStartDateTime: Date | undefined;\r\n overnight: number | undefined;\r\n rideAlertStyle: string | undefined;\r\n ivrnightBefore: boolean | undefined;\r\n ivronTheWay: boolean | undefined;\r\n blackoutStartTime: string | undefined;\r\n includeBlackout: boolean;\r\n blackoutDuration: number;\r\n icb: boolean;\r\n availableStartTime: string | undefined;\r\n availableEndTime: string | undefined;\r\n driverSignature: string | undefined;\r\n rural: boolean | undefined;\r\n demandResponse: boolean | undefined;\r\n directlyOperated: boolean | undefined;\r\n startDepotLocationId: number | undefined;\r\n endDepotLocationId: number | undefined;\r\n enableFlagStops: boolean;\r\n driverSignatureReduced: string | undefined;\r\n gtfsBlockId: number | undefined;\r\n allowMicrotransitRides: boolean;\r\n driver: Driver;\r\n endDepotLocation: Location;\r\n escort: Driver;\r\n fixedTrip: FixedTrip;\r\n provider: Provider;\r\n purpose: Purpose;\r\n startDepotLocation: Location;\r\n trainee: Driver;\r\n vehicle: Vehicle;\r\n flagStopBlockRoute: GtfsBlock;\r\n tripSchedule: TripSchedule;\r\n tripInspections: Inspection[] | undefined;\r\n rides: Ride[] | undefined;\r\n gpsReports: GpsReport[] | undefined;\r\n driverSessions: DriverSession[] | undefined;\r\n performedFlagStops: PerformedFlagStop[] | undefined;\r\n vehicleCurrentStatuses: VehicleCurrentStatus[] | undefined;\r\n tripOverlays: TripOverlays[] | undefined;\r\n}\r\n\r\nexport interface TripOverlays {\r\n tripOverlayId: number;\r\n tripId: number;\r\n mapOverlayId: number;\r\n startTime: string | undefined;\r\n endTime: string | undefined;\r\n trip: Trip;\r\n mapOverlay: MapOverlay;\r\n}\r\n\r\nexport interface TripPortalSettings {\r\n companyName: string;\r\n phoneNumber: string;\r\n companyLogoUrl: string | undefined;\r\n defaultAccountId: number | undefined;\r\n defaultAccountDisplayValue: string | undefined;\r\n defaultAccountDisplayName: string | undefined;\r\n allowCancellations: boolean;\r\n allowRideRequestsFromSelfRegisteredRiders: boolean;\r\n denyBasedOnMinDaysBeforeRideDate: number | undefined;\r\n maximumNumberOfDaysInTheFuture: number | undefined;\r\n denyBasedOnOutOfServiceDate: boolean;\r\n denyBasedOnRouteAvailability: boolean;\r\n acceptBasedOnScheduling: boolean;\r\n denyBasedOnScheduling: boolean;\r\n minimumNumberOfHoursBeforePriorityTime: number | undefined;\r\n denyIfRiderIsInactive: boolean;\r\n denyIfRideIsSoonerThanPriorityTimeMinimumHours: boolean;\r\n allowRiderToPayForRides: boolean;\r\n requirePaymentForRide: boolean;\r\n allowRiderToPutMoneyOnPasses: boolean;\r\n denyIfRideIsTooFarInTheFuture: boolean;\r\n transportationProviderResourceId: string;\r\n outOfServiceDates: string[] | undefined;\r\n paymentProvider: PaymentProviderSettings;\r\n}\r\n\r\nexport interface TripSchedule {\r\n tripId: number;\r\n createdDate: Date;\r\n scheduleJson: string | undefined;\r\n trip: Trip;\r\n}\r\n\r\nexport interface UserChangePasswordModel {\r\n password: string;\r\n confirmPassword: string | undefined;\r\n}\r\n\r\nexport interface UserLoginModel {\r\n email: string;\r\n password: string;\r\n}\r\n\r\nexport interface UserProfile {\r\n firstName: string | undefined;\r\n middleInitial: string | undefined;\r\n lastName: string | undefined;\r\n genderId: number | undefined;\r\n genderDescription: string | undefined;\r\n dateOfBirth: string | undefined;\r\n phoneNumber: string | undefined;\r\n address: AddressModel;\r\n rideRequirements: RideRequirementTypes[] | undefined;\r\n prefersTextMessage: boolean;\r\n emailAddress: string | undefined;\r\n isDelegateUser: boolean;\r\n portalUserId: string;\r\n comments: string | undefined;\r\n transportationProvider: TransportationProviderModel;\r\n transportationProviders: TransportationProviderModel[] | undefined;\r\n vendorTransportationProviders: VendorDelegateTransportationProvider[] | undefined;\r\n}\r\n\r\nexport interface UserRegistrationModel {\r\n email: string;\r\n password: string;\r\n confirmPassword: string | undefined;\r\n userProfile: NewUserProfile;\r\n}\r\n\r\nexport interface Vehicle {\r\n vehicleId: number;\r\n number: string | undefined;\r\n make: string | undefined;\r\n year: string | undefined;\r\n typeId: number | undefined;\r\n capacity: number | undefined;\r\n maximumGallons: number | undefined;\r\n maxQuartsOil: number | undefined;\r\n tireSize: number | undefined;\r\n licensePlate: string | undefined;\r\n licensePlateState: string | undefined;\r\n vin: string | undefined;\r\n countyCode: string | undefined;\r\n fuelType: number | undefined;\r\n owner: string | undefined;\r\n purchaseDate: Date | undefined;\r\n purchaseOdometer: number | undefined;\r\n purchasePrice: number | undefined;\r\n wheelChairCapacity: number | undefined;\r\n wheelChairFlag: boolean | undefined;\r\n radioFlag: boolean | undefined;\r\n disposalFlag: boolean | undefined;\r\n disposedDate: Date | undefined;\r\n vechicleStatus: number | undefined;\r\n lastServiceOdometer: number | undefined;\r\n lastServiceDate: Date | undefined;\r\n nextServiceOdometer: number | undefined;\r\n servicePlanId: number | undefined;\r\n dbstatus: number | undefined;\r\n autoscheduleActive: boolean | undefined;\r\n loggedOn: boolean | undefined;\r\n flipSeatsPerWc: number | undefined;\r\n currentDriverId: number | undefined;\r\n mdtenabled: boolean;\r\n status: number;\r\n boardingPreperationDuration: TimeSpan;\r\n stretcherCapacity: number | undefined;\r\n liftFlag: boolean | undefined;\r\n maintenancePlanId: number | undefined;\r\n garageLocationId: number | undefined;\r\n lcvehicleId: number | undefined;\r\n latitude_DEPRECATED: number | undefined;\r\n longitude_DEPRECATED: number | undefined;\r\n lastGpsreport_DEPRECATED: Date | undefined;\r\n speed_DEPRECATED: number | undefined;\r\n currentDriver: Driver;\r\n garageLocation: Location;\r\n type: VehicleType;\r\n currentStatus: VehicleCurrentStatus;\r\n brokerReferences: BrokerVehicle[] | undefined;\r\n tripInspections: Inspection[] | undefined;\r\n fixedTrips: FixedTrip[] | undefined;\r\n trips: Trip[] | undefined;\r\n vehicleSpecialAssistances: VehicleSpecialAssistance[] | undefined;\r\n gpsReports: GpsReport[] | undefined;\r\n dispatchMessages: DispatchMessage[] | undefined;\r\n serviceRequests: ServiceRequest[] | undefined;\r\n outOfServicePeriods: OutOfServicePeriod[] | undefined;\r\n}\r\n\r\nexport interface VehicleCurrentStatus {\r\n vehicleId: number;\r\n tripId: number | undefined;\r\n gpsReportId: number | undefined;\r\n dateTimeRecorded: Date | undefined;\r\n latitude: number | undefined;\r\n longitude: number | undefined;\r\n speed: number | undefined;\r\n odometer: number | undefined;\r\n vehicle: Vehicle;\r\n trip: Trip;\r\n}\r\n\r\nexport interface VehicleModel {\r\n make: string | undefined;\r\n model: string | undefined;\r\n color: string | undefined;\r\n number: string | undefined;\r\n}\r\n\r\nexport interface VehicleSpecialAssistance {\r\n vehicleId: number;\r\n specialAssistanceId: number;\r\n specialAssistance: SpecialAssistance;\r\n vehicle: Vehicle;\r\n}\r\n\r\nexport interface VehicleType {\r\n vehicleTypeId: number;\r\n description: string | undefined;\r\n rate: number;\r\n dbstatus: number;\r\n vehicles: Vehicle[] | undefined;\r\n}\r\n\r\nexport interface Vendor {\r\n vendorId: number;\r\n name: string | undefined;\r\n contactName: string | undefined;\r\n phone: string | undefined;\r\n address: string | undefined;\r\n isActive: boolean;\r\n approvedVendors: ApprovedVendor[] | undefined;\r\n serviceRequests: ServiceRequest[] | undefined;\r\n}\r\n\r\nexport interface VendorAddressModel {\r\n name: string | undefined;\r\n address1: string | undefined;\r\n address2: string | undefined;\r\n city: string | undefined;\r\n state: string | undefined;\r\n zipCode: string | undefined;\r\n county: string | undefined;\r\n latitude: number | undefined;\r\n longitude: number | undefined;\r\n locationPhone: string | undefined;\r\n phoneExt: string | undefined;\r\n}\r\n\r\nexport interface VendorApiResponse {\r\n success: boolean;\r\n responseMessage: string | undefined;\r\n subjectResourceId: string | undefined;\r\n}\r\n\r\nexport interface VendorDelegateOrg {\r\n delegateOrgName: string | undefined;\r\n delegateOrgResourceId: string | undefined;\r\n}\r\n\r\nexport interface VendorDelegateOrganization {\r\n companyName: string | undefined;\r\n phone: string | undefined;\r\n logoImageUrl: string | undefined;\r\n isDisabled: boolean;\r\n transportationProviderResourceId: string | undefined;\r\n}\r\n\r\nexport interface VendorDelegateRideRequest {\r\n rideRequestDate: Date;\r\n firstName: string | undefined;\r\n lastName: string | undefined;\r\n medicaidNumber: string | undefined;\r\n ssn: string | undefined;\r\n contactPhone: string | undefined;\r\n contactPhoneExt: string | undefined;\r\n dateOfBirth: Date | undefined;\r\n genderId: number | undefined;\r\n genderDescription: string | undefined;\r\n contactEmail: string | undefined;\r\n isSelfRegisteredUser: boolean;\r\n dropOffDateTime: Date | undefined;\r\n pickupDateTime: Date | undefined;\r\n tripPortalRiderResourceId: string | undefined;\r\n tripPortalRideRequestResourceId: string;\r\n tripPortalDelegateOrganizationResourceId: string;\r\n fromAddress: VendorAddressModel;\r\n rideStatus: RideAcceptanceStatus;\r\n toAddress: VendorAddressModel;\r\n comments: string | undefined;\r\n declineMessage: string | undefined;\r\n liftRequired: boolean;\r\n wheelChairRequired: boolean;\r\n stretcherRequired: boolean;\r\n numberOfChildren: number;\r\n numberOfEscorts: number;\r\n dateCreatedUTC: Date;\r\n prefersTextMessage: boolean;\r\n paymentMethodToken: string | undefined;\r\n paymentProviderId: number | undefined;\r\n fareAmount: number | undefined;\r\n vendorRiderId: string | undefined;\r\n tripPortalDelegateResourceId: string | undefined;\r\n organizationName: string | undefined;\r\n delegateFirstName: string | undefined;\r\n delegateLastName: string | undefined;\r\n delegateNewRiderComments: string | undefined;\r\n}\r\n\r\nexport interface VendorDelegateRider {\r\n firstName: string | undefined;\r\n lastName: string | undefined;\r\n middleInitial: string | undefined;\r\n specialDirections: string | undefined;\r\n vendorRiderId: string | undefined;\r\n transportationProviderId: string | undefined;\r\n}\r\n\r\nexport interface VendorDelegateTransportationProvider {\r\n tpName: string | undefined;\r\n tpResourceId: string | undefined;\r\n organizations: VendorDelegateOrg[] | undefined;\r\n}\r\n\r\nexport interface VendorDelegateUser {\r\n delegateUserEmail: string | undefined;\r\n nameFirst: string | undefined;\r\n nameLast: string | undefined;\r\n isDisabled: boolean;\r\n}\r\n\r\nexport interface VendorPortalUser {\r\n nameFirst: string | undefined;\r\n nameLast: string | undefined;\r\n userEmail: string | undefined;\r\n contactPhone: string | undefined;\r\n isDisabled: boolean;\r\n}\r\n\r\nexport interface VendorPortalUserSummary {\r\n isDelegateUser: boolean;\r\n portalUserFirstName: string | undefined;\r\n portalUserLastName: string | undefined;\r\n portalUserRegistrationStatus: PortalUserRegistrationStatusEnum;\r\n isAccountActive: boolean;\r\n}\r\n\r\nexport interface VendorTransportationProvider {\r\n companyName: string | undefined;\r\n phone: string | undefined;\r\n logoImageUrl: string | undefined;\r\n timeZone: string | undefined;\r\n transportationProviderResourceId: string | undefined;\r\n isDisabled: boolean;\r\n}\r\n\r\nexport interface VerifyResponseModel {\r\n readonly paymentTokenIsValid: boolean;\r\n readonly invalidReason: string | undefined;\r\n resourceId: string | undefined;\r\n}\r\n\r\nexport class SwaggerException extends Error {\r\n override message: string;\r\n status: number;\r\n response: string;\r\n headers: { [key: string]: any; };\r\n result: any;\r\n\r\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\r\n super();\r\n\r\n this.message = message;\r\n this.status = status;\r\n this.response = response;\r\n this.headers = headers;\r\n this.result = result;\r\n }\r\n\r\n protected isSwaggerException = true;\r\n\r\n static isSwaggerException(obj: any): obj is SwaggerException {\r\n return obj.isSwaggerException === true;\r\n }\r\n}\r\n\r\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): Observable {\r\n if (result !== null && result !== undefined)\r\n return _observableThrow(result);\r\n else\r\n return _observableThrow(new SwaggerException(message, status, response, headers, null));\r\n}\r\n\r\nfunction blobToText(blob: any): Observable {\r\n return new Observable((observer: any) => {\r\n if (!blob) {\r\n observer.next(\"\");\r\n observer.complete();\r\n } else {\r\n let reader = new FileReader();\r\n reader.onload = event => {\r\n observer.next((event.target as any).result);\r\n observer.complete();\r\n };\r\n reader.readAsText(blob);\r\n }\r\n });\r\n}","import { environment } from \"src/environments/environment\";\r\nimport packageJson from 'package.json';\r\n\r\nexport function getLegacyChannelName(env: string) {\r\n switch(env) {\r\n case 'qa': return 'TripPortal.Testing';\r\n case 'dev': return 'TripPortal.Development';\r\n default: return 'TripPortal.Production';\r\n }\r\n}\r\n\r\nexport function getChannelName(env: string = 'prod') {\r\n const majorVersion = Number(packageJson.version[0]);\r\n if (majorVersion <= 2) { return getLegacyChannelName(env); }\r\n switch(env) {\r\n case 'qa': return `test.${majorVersion}`;\r\n case 'dev': return `dev.${majorVersion}`;\r\n default: return `prod.${majorVersion}`;\r\n }\r\n}\r\n\r\n/** available app channels and api end points with their settings */\r\nexport const APP_CHANNELS: AppChannel[] = [\r\n {\r\n apiUrl: 'https://api.requestmyrides.com',\r\n name: getChannelName('prod'),\r\n displayName: 'Prod',\r\n autoUpdates: true,\r\n application: 'riderportalcore',\r\n },\r\n {\r\n apiUrl: 'https://api-qa.requestmyrides.com',\r\n name: getChannelName('qa'),\r\n displayName: 'QA',\r\n autoUpdates: true,\r\n application: 'riderportalqa',\r\n },\r\n {\r\n apiUrl: 'https://api-dev.requestmyrides.com',\r\n name: getChannelName('dev'),\r\n displayName: 'Dev',\r\n autoUpdates: true,\r\n application: 'riderportaldev',\r\n },\r\n {\r\n apiUrl: 'https://localhost:44316',\r\n displayName: 'Local',\r\n name: getChannelName('dev'),\r\n autoUpdates: true,\r\n application: 'riderportaldev',\r\n },\r\n];\r\n\r\n/** Local storage key for target env/channel - stores the api url */\r\nexport const STORAGE_KEY = 'TMRiderPortalApiEndpointUrl';\r\n\r\n/**\r\n* Construct the startup url for the app.\r\n* @returns the startup URL\r\n*/\r\nexport function ConstructStartupUrl(): string {\r\n const host = window.location.host;\r\n let startupBaseUrl = 'https://api.requestmyrides.com';\r\n // if (Capacitor?.isNativePlatform()) {\r\n // startupBaseUrl = localStorage.getItem(STORAGE_KEY) || 'https://api.requestmyrides.com';\r\n // } else {\r\n switch (host) {\r\n case 'localhost:4301': startupBaseUrl = 'https://localhost:44316'; break;\r\n case 'localhost:8100': startupBaseUrl = localStorage.getItem(STORAGE_KEY) || 'https://api-dev.requestmyrides.com'; break;\r\n case 'requestmyrides.com': startupBaseUrl = 'https://api.requestmyrides.com'; break;\r\n default: {\r\n if (host.startsWith('localhost') || host.startsWith('127.0.0.1')) {\r\n // use dev by default if it's any other port on localhost\r\n startupBaseUrl = localStorage.getItem(STORAGE_KEY) || 'https://api-dev.requestmyrides.com';\r\n } else {\r\n startupBaseUrl = `https://api-${host}`;\r\n }\r\n }\r\n }\r\n // }\r\n return startupBaseUrl;\r\n}\r\n\r\n/** Map of channels for easier lookup */\r\nexport const ENV_MAP: AppChannelMap = APP_CHANNELS\r\n .reduce((acc, env) => ({ ...acc, [env.name]: env }), {});\r\n\r\n/** returns the api url to target */\r\nexport function getApiUrl(): string {\r\n return localStorage.getItem(this.STORAGE_KEY) || environment.apiUrl;\r\n}\r\n\r\n/** ionic channel names */\r\nexport type ChannelName = string;\r\n/** environment settings. Name is the ionic channel name */\r\n\r\nexport type AppChannel = {\r\n apiUrl: string;\r\n name: ChannelName;\r\n displayName: string;\r\n autoUpdates: boolean;\r\n application: string;\r\n channelNameFromApi?: string;\r\n snapshotBuildId?: string;\r\n}\r\nexport type AppChannelMap = {\r\n [key in ChannelName]: AppChannel\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AlertController } from '@ionic/angular';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AlertService {\r\n constructor(private alertController: AlertController) {}\r\n\r\n presentAlert(options: any, onDismiss: () => void = null) {\r\n let alertObj: HTMLIonAlertElement;\r\n this.alertController.create(options).then((a) => {\r\n alertObj = a;\r\n\r\n // remove the alert from the array when it closes.\r\n alertObj.onDidDismiss().then(() => {\r\n if (onDismiss) {\r\n onDismiss();\r\n }\r\n });\r\n\r\n return alertObj.present();\r\n });\r\n }\r\n\r\n async presentAlertAsync(options: any, onDismiss: () => void = null) {\r\n const alertObj = await this.alertController.create(options);\r\n await alertObj.present();\r\n await alertObj.onDidDismiss();\r\n if (onDismiss) {\r\n onDismiss();\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Capacitor } from '@capacitor/core';\r\nimport { environment } from '../../../environments/environment';\r\nimport { AlertService } from './alert.service';\r\nimport { ServiceProxy } from './nswag/service-proxies';\r\nimport { APP_CHANNELS, AppChannel, AppChannelMap } from './settings.utility';\r\n\r\n/** Local storage key for target env/channel - stores the api url */\r\nexport const STORAGE_KEY = 'TMRiderPortalApiEndpointUrl';\r\n\r\n/**\r\n * Construct the startup url for the app.\r\n * @returns the startup URL\r\n */\r\nexport function ConstructStartupUrl(key: string): string {\r\n const host = window.location.host;\r\n let startupBaseUrl = 'https://api.requestmyrides.com';\r\n if (Capacitor.isNativePlatform()) {\r\n startupBaseUrl = localStorage.getItem(key) || 'https://api.requestmyrides.com';\r\n } else {\r\n switch (host) {\r\n case 'localhost:4301': startupBaseUrl = 'https://localhost:44316'; break;\r\n case 'localhost:8100': startupBaseUrl = localStorage.getItem(key) || 'https://api-dev.requestmyrides.com'; break;\r\n case 'requestmyrides.com': startupBaseUrl = 'https://api.requestmyrides.com'; break;\r\n default: {\r\n if (host.startsWith('localhost') || host.startsWith('127.0.0.1')) {\r\n // use dev by default if it's any other port on localhost\r\n startupBaseUrl = localStorage.getItem(key) || 'https://api-dev.requestmyrides.com';\r\n } else {\r\n startupBaseUrl = `https://api-${host}`;\r\n }\r\n }\r\n }\r\n }\r\n return startupBaseUrl;\r\n}\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class SettingsService {\r\n\r\n private readonly storageKey = STORAGE_KEY;\r\n\r\n /** Map of channels for easier lookup */\r\n private readonly envMap: AppChannelMap = APP_CHANNELS\r\n .reduce((acc, env) => ({ ...acc, [env.name]: env }), {});\r\n\r\n public currentChannel: AppChannel = this.getCurrentChannel();\r\n\r\n constructor(\r\n private alertService: AlertService,\r\n private proxies: ServiceProxy,\r\n ) { }\r\n\r\n /** determines whether or not you are running prod based on the api your hitting */\r\n isProduction(): boolean {\r\n return this.envMap['TripPortal.Production'].apiUrl === environment.apiUrl;\r\n }\r\n\r\n /** Finds the channel details based on the current apiUrl */\r\n getCurrentChannel(): AppChannel {\r\n return APP_CHANNELS.find(channel => channel.apiUrl === environment.apiUrl) || APP_CHANNELS[0];\r\n }\r\n\r\n /** Displays menu to change the channel and updates app accordingly */\r\n public changeChannel(): void {\r\n const buildId = this.currentChannel?.snapshotBuildId && this.currentChannel.snapshotBuildId !== 'Unknown' ? this.currentChannel.snapshotBuildId : undefined;\r\n const alertOptions = {\r\n cssClass: 'device-selection-alert',\r\n header: 'Select Channel',\r\n subHeader: `Ionic Channel: ${this.currentChannel.displayName} (${this.currentChannel.name}) ${(!!buildId ? (' (Build #' + buildId + ')') : '')}`,\r\n message: '',\r\n buttons: [\r\n { text: 'Cancel', cssClass: 'primary' },\r\n {\r\n text: 'OK',\r\n cssClass: 'secondary',\r\n handler: (selectedEnv: AppChannel) => this.onChannelChange(selectedEnv),\r\n },\r\n ],\r\n inputs: APP_CHANNELS.map(channel => ({\r\n type: 'radio',\r\n label: `${channel.displayName} (${channel.name})`,\r\n value: channel,\r\n checked: channel.apiUrl === environment.apiUrl,\r\n })),\r\n };\r\n this.alertService.presentAlert(alertOptions);\r\n }\r\n\r\n /**\r\n * Change environment - using 5 click on login screen.\r\n * Will cause the app to reload in order to re-initiate the proxies with the correct base URL */\r\n private onChannelChange(selectedChannel: AppChannel): void {\r\n localStorage.setItem(this.storageKey, selectedChannel.apiUrl);\r\n location.reload();\r\n }\r\n}\r\n","import { DateTime, Zone } from 'luxon';\r\n\r\nimport { ExtendedRideRequest } from '../models/ride.model';\r\nimport { Injectable } from '@angular/core';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TimeHelperService {\r\n constructor() { }\r\n\r\n static DateFormat = 'M/d/yyyy';\r\n /**\r\n * Takes separate date fields (such as from user input) and constructs an ISO 8601 string _with_ timezone offset.\r\n * @param formValues an object (such as form values) containing the necessary DateTime fields\r\n */\r\n static getDateTime(date: string, time: string = '00:00', type: 'Date' | 'DateTime' | 'ISO' = 'Date'): Date | DateTime | string {\r\n if (!date) { return null; }\r\n const [hour, minute] = time ? time.split(':').map((val) => Number(val)) : [0, 0];\r\n const priorityTime = DateTime.fromISO(date).set({ hour, minute });\r\n // the \"true\" parameter is required to include the timezone offset\r\n switch (type) {\r\n case 'DateTime': return priorityTime;\r\n case 'ISO': return priorityTime.toISO({ includeOffset: true });\r\n default: return priorityTime.toUTC().toJSDate();\r\n }\r\n }\r\n\r\n static getReturnTime({ date, priorityTime }: { date: string, priorityTime: string }): string {\r\n if (!priorityTime) { return null; }\r\n const today = DateTime.now();\r\n if (!priorityTime) { return DateTime.now().plus({ hours: 2 }).toFormat('HH:dd'); }\r\n const [hour, minute] = priorityTime.split(':').map((val) => Number(val));\r\n const returnTime = DateTime.fromISO(date).set({ hour, minute }).plus({ hours: 2 });\r\n if (returnTime.toISODate() === today.toISODate()) {\r\n return returnTime.toFormat('HH:mm');\r\n }\r\n return DateTime.fromISO(date).set({ hour: 23, minute: 59 }).toFormat('HH:mm');\r\n }\r\n\r\n /**\r\n * Returns the ap-standard short date format\r\n * @param priorityTime an ISO DateTime string\r\n */\r\n static getDate(priorityTime: string): string {\r\n const date = DateTime.fromISO(priorityTime, { zone: 'utc' }).toLocal().toFormat(\r\n TimeHelperService.DateFormat,\r\n );\r\n return date;\r\n }\r\n\r\n\r\n /**\r\n * Returns a Date in the string format required by the requestForm\r\n * @param rideDate an ISO DateTime string\r\n */\r\n static getDateInFormFormat(rideDate: string): string {\r\n const date = DateTime.fromISO(rideDate, { zone: 'utc' }).toLocal().toFormat(\r\n 'yyyy-MM-dd',\r\n );\r\n return date;\r\n }\r\n\r\n\r\n /**\r\n * Returns the app-standard long date format\r\n * @param priorityTime an ISO DateTime string\r\n */\r\n static getLongDate(priorityTime: string): string {\r\n const date = DateTime.fromISO(priorityTime, { zone: 'utc' }).toLocal().toFormat(\r\n 'ccc, DD',\r\n );\r\n return date;\r\n }\r\n\r\n /**\r\n * Returns the 24-hour formatted time.\r\n * @param priorityTime an ISO DateTime string\r\n */\r\n static getTime(priorityTime: string): string {\r\n const time = priorityTime ? DateTime.fromISO(priorityTime, { zone: 'utc' }).toLocal().toFormat('HH:mm') : null;\r\n return time;\r\n }\r\n\r\n /**\r\n * Returns the 12-hour formatted time.\r\n * @param priorityTime an ISO DateTime string\r\n */\r\n static getDisplayTime(priorityTime: string): string {\r\n const time = priorityTime ? DateTime.fromISO(priorityTime, { zone: 'utc' }).toLocal().toFormat('h:mm a') : null;\r\n return time;\r\n }\r\n\r\n static getNonAdjustedDate(datetime: string): string {\r\n return DateTime.fromISO(datetime).toFormat(TimeHelperService.DateFormat);\r\n }\r\n\r\n /**\r\n * Returns the 12-hour time\r\n * @param priorityTime an ISO DateTime string\r\n */\r\n static getHour(priorityTime: string): string {\r\n return priorityTime ? DateTime.fromISO(priorityTime, { zone: 'utc' }).toLocal().toFormat('hh') : null;\r\n }\r\n\r\n /**\r\n * Returns the 24-hour time\r\n * @param priorityTime an ISO DateTime string\r\n */\r\n static get24Hour(priorityTime: string): string {\r\n return priorityTime ? DateTime.fromISO(priorityTime, { zone: 'utc' }).toLocal().toFormat('HH:mm') : null;\r\n }\r\n\r\n /**\r\n * Returns the minutes formatted in two digits\r\n * @param priorityTime an ISO DateTime string\r\n */\r\n static getMinute(priorityTime: string): string {\r\n return priorityTime ? DateTime.fromISO(priorityTime, { zone: 'utc' }).toLocal().toFormat('mm') : null;\r\n }\r\n\r\n /**\r\n * Returns the meridiem value as AM or PM\r\n * @param priorityTime an ISO DateTime string\r\n */\r\n static getMeridiem(priorityTime: string): string {\r\n return priorityTime ? DateTime.fromISO(priorityTime, { zone: 'utc' }).toLocal().toFormat('a') : null;\r\n }\r\n\r\n static getUTC(formValues: ExtendedRideRequest): {\r\n rideDate: Date, pickupTime: Date | undefined, dropoffTime: Date | undefined\r\n } {\r\n const { pickupTimeString, dropoffTimeString } = formValues;\r\n const date = DateTime.fromISO(formValues.dateString, { setZone: true });\r\n const pickup = pickupTimeString ? date.set(TimeHelperService.getTimeSplit(pickupTimeString)) : null;\r\n const dropOff = dropoffTimeString ? date.set(TimeHelperService.getTimeSplit(dropoffTimeString)) : null;\r\n return {\r\n rideDate: date.toUTC().toJSDate(),\r\n pickupTime: pickup?.toUTC().toJSDate() || null,\r\n dropoffTime: dropOff?.toUTC().toJSDate() || null,\r\n };\r\n }\r\n\r\n static getTimeSplit(time: string): { hour: number, minute: number } {\r\n if (!time) { return null; }\r\n const [hours, minutes] = time.split(':');\r\n return { hour: Number(hours), minute: Number(minutes) };\r\n }\r\n}\r\n","import { RideStatusType } from '../services/nswag/service-proxies';\r\n\r\nconst _statuses: RideStatusType[] = [\r\n { rideStatusId: 1, name: 'Requested', toolTip: \"Requested Ride\", icon: 'pending', iconColor: '#263369' },\r\n { rideStatusId: 2, name: 'Denied', icon: 'cancel', toolTip: \"Denied Ride\", iconColor: '#B71C1C' },\r\n { rideStatusId: 3, name: 'Cancelled', icon: 'block', toolTip: \"Cancelled Ride\", iconColor: '#6b6b6b' },\r\n { rideStatusId: 4, name: 'Accepted', icon: 'thumb_up_alt', toolTip: \"Accepted Ride\", iconColor: '#8cc63f' },\r\n];\r\n\r\nexport const STATUSES = {\r\n list: [..._statuses],\r\n maps: {\r\n name: _statuses.reduce((acc, item) => ({ ...acc, [item['name']]: item }), {}),\r\n id: _statuses.reduce((acc, item) => ({ ...acc, [item['rideStatusId']]: item }), {}),\r\n rideStatusId: _statuses.reduce((acc, item) => ({ ...acc, [item['rideStatusId']]: item }), {}),\r\n },\r\n getById: (id: number) => _statuses.find(status => status.rideStatusId === id),\r\n getByName: (name: string) => _statuses.find(status => status.name === name),\r\n};\r\n","import { GenderType, RideRequirementType, RideReservationType, RideStatusType, ServiceProxy } from './nswag/service-proxies';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map, take, tap } from 'rxjs/operators';\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { STATUSES } from '../models/ride-status.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ValuesService {\r\n\r\n private genderTypes: Value;\r\n private rideRequirementTypes: Value;\r\n private rideReservationTypes: Value;\r\n private rideStatusTypes: Value;\r\n\r\n constructor(\r\n private readonly proxies: ServiceProxy,\r\n ) {\r\n // load all lists for the first time\r\n this.getRideRequirementTypes().pipe(take(1)).subscribe();\r\n this.getRideReservationTypes().pipe(take(1)).subscribe();\r\n this.getRideStatusTypes().pipe(take(1)).subscribe();\r\n this.getGenderTypes().pipe(take(1)).subscribe();\r\n }\r\n\r\n private buildMap(list: any[], key: string): { [key: string]: Type } {\r\n return list.reduce((acc, item) => ({ ...acc, [item[key]]: item }), {});\r\n }\r\n\r\n private buildList(list: any[], name: string, fieldId: string): Value {\r\n return {\r\n list,\r\n maps: ['name', fieldId].reduce((acc, key) => {\r\n return { ...acc, [key]: this.buildMap(list, key === 'name' ? name : key) };\r\n }, {}),\r\n getById: (id: string) => list.find(item => item[fieldId] == id),\r\n getByName: (name: string) => list.find(item => item.name === name || item.title === name),\r\n };\r\n }\r\n\r\n /**\r\n * Memoized list of genders and maps by name and genderId.\r\n * Has optional boolean parameter to force a fresh pull.\r\n */\r\n getGenderTypes(force: boolean = false): Observable> {\r\n if (this.genderTypes && !force) { return of(this.genderTypes); }\r\n return this.proxies.genderTypes().pipe(\r\n map(res => this.buildList(res, 'name', 'genderId')),\r\n tap(res => this.genderTypes = res),\r\n );\r\n }\r\n\r\n /**\r\n * Memoized list of ride requirements and maps by name and rideStatusId.\r\n * Has optional boolean parameter to force a fresh pull.\r\n */\r\n getRideRequirementTypes(force: boolean = false): Observable> {\r\n if (this.rideRequirementTypes && !force) { return of(this.rideRequirementTypes); }\r\n return this.proxies.rideRequirementTypes().pipe(\r\n map(res => this.buildList(res, 'name', 'rideRequirementId')),\r\n tap(res => this.rideRequirementTypes = res),\r\n );\r\n }\r\n\r\n /**\r\n * Memoized list of reservation types and maps by name and rideReservationId.\r\n * Has optional boolean parameter to force a fresh pull.\r\n */\r\n getRideReservationTypes(force: boolean = false): Observable> {\r\n if (this.rideReservationTypes && !force) { return of(this.rideReservationTypes); }\r\n return this.proxies.rideReservationTypes().pipe(\r\n map(res => this.buildList(res, 'name', 'rideReservationId')),\r\n tap(res => this.rideReservationTypes = res),\r\n );\r\n }\r\n\r\n // TODO: data needs fixed to use api instead of hard coded version\r\n /**\r\n * Memoized list of ride statuses and maps by name and rideStatusId\r\n * Has optional boolean parameter to force a fresh pull.\r\n */\r\n getRideStatusTypes(force = false): Observable> {\r\n // if (this.rideStatusTypes && !force) { return of(this.rideStatusTypes) }\r\n // return this.proxies.rideStatusTypes().pipe(\r\n // map(res => this.buildList(res, 'name', 'rideStatusId')),\r\n // tap(res => this.rideStatusTypes = res)\r\n // )\r\n // }\r\n return of(STATUSES);\r\n }\r\n}\r\n\r\nexport interface Value {\r\n list: T[],\r\n maps: {\r\n [key: string]: { [key: string]: T }\r\n },\r\n getById: (id: string | number) => T,\r\n getByName: (name: string) => T\r\n}\r\n","import { Capacitor } from \"@capacitor/core\";\r\nimport { Deploy } from 'cordova-plugin-ionic/dist/ngx';\r\nimport { ISnapshotInfo } from \"cordova-plugin-ionic/dist/ngx/IonicCordova\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Platform } from \"@ionic/angular\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class SnapshotManagementService {\r\n public get isWebPlatform() {\r\n return Capacitor.getPlatform() === \"web\";\r\n }\r\n\r\n constructor(\r\n private deploy: Deploy,\r\n private platform: Platform,\r\n ) { }\r\n\r\n public async configure(config: Pro_CurrentConfig): Promise {\r\n console.log('🔍 Configuring...');\r\n if (this.isWebPlatform) return Promise.resolve();\r\n return this.deploy.configure({\r\n channel: config.channel,\r\n appId: config.appId,\r\n });\r\n }\r\n\r\n public async getConfiguration(): Promise {\r\n console.debug('🐛 Getting new configurations...');\r\n if (this.isWebPlatform) return { appId: \"0\", channel: \"NOT APPLICABLE\" };\r\n return this.deploy.getConfiguration();\r\n }\r\n\r\n public getCurrentVersion(): Promise {\r\n if (this.isWebPlatform) return Promise.resolve(undefined);\r\n return this.deploy.getCurrentVersion();\r\n }\r\n\r\n public async getAvailableVersions(): Promise {\r\n if (this.isWebPlatform) return [];\r\n const versions = await this.deploy.getAvailableVersions();\r\n return versions.map(ss => this.mapSnapshotInfo(ss)).filter(x => x !== null && x !== undefined) as Pro_SnapshotInfo[];\r\n }\r\n\r\n public async checkForUpdate(): Promise {\r\n if (this.isWebPlatform) return { available: false };\r\n const rsp = await this.deploy.checkForUpdate();\r\n return {\r\n available: rsp.available,\r\n buildId: rsp.build,\r\n snapshotId: rsp.snapshot,\r\n incompatibleUpdateAvailable: rsp.incompatibleUpdateAvailable,\r\n url: rsp.url,\r\n };\r\n }\r\n\r\n public async sync(\r\n method?: \"background\" | \"auto\",\r\n progressCallback?: (pct?: number) => void,\r\n ): Promise {\r\n\r\n if (this.isWebPlatform) return undefined;\r\n const syncResponse = await this.deploy.sync({ updateMethod: method }, progressCallback);\r\n return this.mapSnapshotInfo(syncResponse);\r\n }\r\n\r\n private mapSnapshotInfo(snapshot?: ISnapshotInfo | undefined): Pro_SnapshotInfo | undefined {\r\n return snapshot\r\n ? {\r\n channel: snapshot.channel,\r\n buildId: snapshot.buildId,\r\n versionId: snapshot.versionId,\r\n binaryVersionCode: snapshot.binaryVersionCode,\r\n binaryVersionName: snapshot.binaryVersionName,\r\n }\r\n : undefined;\r\n }\r\n}\r\n\r\nexport interface Pro_CurrentConfig {\r\n /**\r\n * The [Ionic Pro](https://ionicframework.com/docs/pro/) app id.\r\n */\r\n appId: string;\r\n /**\r\n * The [channel](https://ionicframework.com/docs/pro/deploy/channels) that the plugin should listen for updates on.\r\n */\r\n channel: string;\r\n /**\r\n * The binary version of the native bundle versionName on Android or CFBundleShortVersionString on iOS\r\n */\r\n binaryVersionName?: string;\r\n /**\r\n * The build version code of the native bundle versionCode on Android or CFBundleVersion on iOS\r\n */\r\n binaryVersionCode?: string;\r\n /**\r\n * Whether the user disabled deploy updates or not.\r\n */\r\n disabled?: boolean;\r\n /**\r\n * The host API the plugin is configured to check for updates from.\r\n */\r\n host?: string;\r\n /**\r\n * The currently configured updateMethod for the plugin.\r\n */\r\n updateMethod?: 'none' | 'auto' | 'background';\r\n /**\r\n * The id of the currently applied updated or undefined if none is applied.\r\n */\r\n currentVersionId?: string;\r\n /**\r\n * The id of the currently applied build or undefined if none is applied.\r\n */\r\n currentBuildId?: string;\r\n}\r\n\r\nexport interface Pro_SnapshotInfo {\r\n /**\r\n * The id for the snapshot.\r\n */\r\n versionId: string;\r\n /**\r\n * The id for the snapshot.\r\n */\r\n buildId: string;\r\n /**\r\n * The channel that the snapshot was downloaded for..\r\n */\r\n channel: string;\r\n\r\n /**\r\n * The binary version name the snapshot was downloaded for.\r\n * The versionName on Android or CFBundleShortVersionString on iOS this is the end user readable version listed on the stores.\r\n */\r\n binaryVersionName: string;\r\n /**\r\n * The binary version build code the snapshot was downloaded for.\r\n * The versionCode on Android or CFBundleVersion on iOS this should be changed every time you do a new build debug or otherwise.\r\n */\r\n binaryVersionCode: string;\r\n}\r\n\r\nexport interface Pro_UpdateResponse {\r\n /**\r\n * Whether or not an update is available.\r\n */\r\n available: boolean;\r\n /**\r\n * The id of the snapshot if available.\r\n */\r\n snapshotId?: string;\r\n /**\r\n * The id of the build if available.\r\n */\r\n buildId?: string;\r\n /**\r\n * The url to fetch the manifest of files in the update.\r\n */\r\n url?: string;\r\n /**\r\n * Whether or not there is an update available that is not compatible with this device.\r\n */\r\n incompatibleUpdateAvailable?: boolean;\r\n}\r\n","import { Pro_CurrentConfig, Pro_SnapshotInfo, SnapshotManagementService } from 'src/app/select-ride/services/snapshot-management.service';\r\n\r\nimport { Capacitor } from '@capacitor/core';\r\nimport { Injectable } from '@angular/core';\r\nimport { LoadingController, Platform } from '@ionic/angular';\r\nimport { LoggingService } from './logging.service';\r\nimport { NotificationService } from './notification.service';\r\nimport { buildInfo } from '../../config/build-info';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport packageJson from 'package.json';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class VersionService {\r\n // This is where we need to put the current application software version.\r\n public static SoftwareVersion = packageJson.version;\r\n public versionOutOfDate: boolean;\r\n\r\n protected _binaryOutOfDate = false;\r\n private readonly _binaryOutOfDate$ = new BehaviorSubject(this._binaryOutOfDate);\r\n public readonly binaryOutOfDate$: Observable = this._binaryOutOfDate$.asObservable();\r\n get binaryOutOfDate(): boolean { return this._binaryOutOfDate; }\r\n set binaryOutOfDate(outOfDate: boolean) {\r\n this._binaryOutOfDate = outOfDate;\r\n this._binaryOutOfDate$.next(outOfDate);\r\n }\r\n\r\n // this may go elsewhere but need to display on ui for now\r\n snapshotInfo: Pro_SnapshotInfo = null;\r\n public readonly snapshotInfo$ = new BehaviorSubject(null);\r\n updateAvailable: boolean = false;\r\n\r\n // putting this here since it's a singleton and will persist for life of app instance\r\n showPlayStoreUpgradeButton = false;\r\n upgradeMessage = '';\r\n forceUpdateBeforeLogin = false;\r\n currentChannel: string = '';\r\n configuration?: Pro_CurrentConfig;\r\n\r\n constructor(\r\n private snapshotService: SnapshotManagementService,\r\n private loggingService: LoggingService,\r\n public notificationService: NotificationService,\r\n public loadingCtrl: LoadingController,\r\n public platform: Platform,\r\n ) {\r\n }\r\n\r\n get snapshotVersion(): string {\r\n return this.snapshotInfo ? this.snapshotInfo.versionId : (this.configuration?.currentVersionId || 'None');\r\n }\r\n get snapshotBuildId(): string {\r\n return this.snapshotInfo ? this.snapshotInfo.buildId : (this.configuration?.currentBuildId || 'Unknown');\r\n }\r\n get snapshotBinaryVersionName(): string {\r\n return this.snapshotInfo ? this.snapshotInfo.binaryVersionName : (this.configuration?.binaryVersionName || 'Unknown');\r\n }\r\n get buildVersion(): string {\r\n return buildInfo.publicVersion;\r\n }\r\n get buildDate(): string {\r\n return buildInfo.date;\r\n }\r\n\r\n // this always gets called after we register our device on the server and know what channel it should point to\r\n setChannel(channel: string) {\r\n if (this.currentChannel != channel) {\r\n this.currentChannel = channel;\r\n this.configuration = undefined; // clear out the configuration\r\n this.snapshotInfo = undefined; // clear out the configuration\r\n this.snapshotInfo$.next(null);\r\n this.updateAvailable = false; // clear out the configuration\r\n }\r\n }\r\n\r\n // this always gets called after we register our device on the server and know if the Server votes that the app is out of date\r\n setVersionOutOfDate(versionOutOfDate: boolean) {\r\n this.versionOutOfDate = versionOutOfDate;\r\n\r\n if (this.versionOutOfDate) {\r\n this.checkForNewVersion(this.currentChannel);\r\n }\r\n }\r\n\r\n async verifyConfiguration(): Promise {\r\n console.debug('🐛', 'Verifying configurations...', this.configuration);\r\n if (this.currentChannel && !this.configuration) {\r\n try {\r\n const configuration = await this.snapshotService.configure({ appId: buildInfo.ionicAppId, channel: this.currentChannel });\r\n this.configuration = await this.snapshotService.getConfiguration();\r\n console.debug('🐛', 'new configurations', this.configuration);\r\n } catch (err) {\r\n console.error(err);\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n async checkSnapshotVersion(forceCheck: boolean = true) {\r\n if (Capacitor.isNativePlatform() && (!this.snapshotInfo || forceCheck)) {\r\n try {\r\n if (await this.verifyConfiguration()) {\r\n this.snapshotInfo = await this.snapshotService.getCurrentVersion();\r\n this.snapshotInfo$.next(this.snapshotInfo);\r\n this.updateAvailable = !!(await this.snapshotService.checkForUpdate())?.available;\r\n console.debug('🐛', `Current snapshot version found:`, this.snapshotInfo);\r\n }\r\n } catch (err) {\r\n console.error('error occurred getting current snapshot and checking for updates.', err);\r\n }\r\n }\r\n }\r\n\r\n async checkForNewVersion(channel?: string) {\r\n // return if not on device\r\n if (!Capacitor.isNativePlatform()) return;\r\n\r\n if (channel && (channel == 'configurable' || channel == '')) {\r\n console.warn(`You cannot update unless the channel has been defined.`);\r\n return;\r\n }\r\n\r\n // set the current channel\r\n this.setChannel(channel || this.currentChannel);\r\n\r\n const loading = await this.loadingCtrl.create({\r\n spinner: 'crescent',\r\n message: 'Checking for updates...',\r\n });\r\n\r\n try {\r\n await loading.present();\r\n\r\n // this function makes sure we're all configured and stuff.\r\n await this.checkSnapshotVersion();\r\n\r\n const versionId = this.snapshotVersion;\r\n\r\n if (this.updateAvailable) {\r\n console.log('🔍', 'Checking for updates...');\r\n loading.message = 'Checking for updates...';\r\n\r\n const progress = (percentage: number) => {\r\n loading.message = `Applying updates (${percentage}%). App will restart when finished`;\r\n };\r\n const resp = await this.snapshotService.sync('auto', progress);\r\n console.debug('🐛 Sync response:', resp);\r\n console.debug('🐛 Current versionId:', versionId);\r\n\r\n if (resp && versionId !== resp.versionId) {\r\n console.log('🔍 Updating...');\r\n this.snapshotInfo = resp;\r\n this.snapshotInfo$.next(resp);\r\n } else {\r\n console.log('🔍 Software is up to date');\r\n loading.message = `Software is up to date`;\r\n loading.dismiss();\r\n }\r\n } else {\r\n console.log('🔍 Software is up to date');\r\n loading.message = `Software is up to date`;\r\n loading.dismiss();\r\n }\r\n } catch (err) {\r\n console.error('error applying snapshot', err);\r\n this.notificationService.warning(\r\n 'There was an error downloading updates, please contact support.',\r\n );\r\n } finally {\r\n loading.dismiss();\r\n }\r\n }\r\n}\r\n","import { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { NgxMaskDirective, NgxMaskPipe, provideNgxMask } from 'ngx-mask';\r\nimport { provideHttpClient, withInterceptorsFromDi, withJsonpSupport } from \"@angular/common/http\";\r\n\r\nimport { CdkStepperModule } from '@angular/cdk/stepper';\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ErrorDisplayComponent } from \"./components/error-display/error-display.component\";\r\nimport { FooterComponent } from \"./components/footer/footer.component\";\r\nimport { GoogleMapsModule } from \"@angular/google-maps\";\r\nimport { HeaderComponent } from \"./components/header/header.component\";\r\nimport { IonicModule } from \"@ionic/angular\";\r\nimport { MapComponent } from \"./components/map/map.component\";\r\nimport { MaterialModule } from \"../material/material.module\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { NotFoundComponent } from \"./components/not-found/not-found.component\";\r\nimport { PhonePipe } from \"./pipes/phone.pipe\";\r\nimport { RidePriorityTimePipe } from \"./pipes/priorityTime.pipe\";\r\nimport { RideComponent } from \"./components/ride/ride.component\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { ScrollingModule } from \"@angular/cdk/scrolling\";\r\nimport { StepsComponent } from \"./components/cdk-steps/cdk-steps.component\";\r\nimport { StaxComponent } from \"./components/stax/stax.component\";\r\n\r\n@NgModule({\r\n declarations: [\r\n // Components\r\n StepsComponent,\r\n RideComponent,\r\n FooterComponent,\r\n HeaderComponent,\r\n ErrorDisplayComponent,\r\n NotFoundComponent,\r\n MapComponent,\r\n StaxComponent,\r\n // Pipes\r\n PhonePipe,\r\n RidePriorityTimePipe,\r\n // Directives\r\n ],\r\n exports: [\r\n // Modules\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MaterialModule,\r\n RouterModule,\r\n ScrollingModule,\r\n GoogleMapsModule,\r\n // Components\r\n CdkStepperModule,\r\n StepsComponent,\r\n RideComponent,\r\n FooterComponent,\r\n HeaderComponent,\r\n NotFoundComponent,\r\n MapComponent,\r\n StaxComponent,\r\n // Pipes\r\n PhonePipe,\r\n NgxMaskPipe,\r\n RidePriorityTimePipe,\r\n // Directives\r\n NgxMaskDirective,\r\n ],\r\n imports: [\r\n IonicModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n CommonModule,\r\n RouterModule,\r\n MaterialModule,\r\n ScrollingModule,\r\n GoogleMapsModule,\r\n // Pipes\r\n NgxMaskPipe,\r\n // Directives\r\n NgxMaskDirective,\r\n ],\r\n providers: [\r\n provideHttpClient(withInterceptorsFromDi(), withJsonpSupport()),\r\n provideNgxMask(),\r\n ],\r\n})\r\nexport class SharedModule { }\r\n","import { AbstractControl } from '@angular/forms';\r\nimport { AddressModel } from '../services/nswag/service-proxies';\r\n\r\nexport function addressValidator(\r\n control: AbstractControl,\r\n): { [key: string]: any } | null {\r\n if (control.value) {\r\n const hasLat = control.value.latitude && Math.abs(control.value.latitude) > 0 ? true : false;\r\n const hasLng = control.value.longitude && Math.abs(control.value.longitude) > 0 ? true : false;\r\n const hasZip = control.value.zip && control.value.zip.length > 0 ? true : false;\r\n const valid = hasLat && hasLng && hasZip;\r\n return valid ? null : { missingValue: { valid: false, value: control.value } };\r\n }\r\n return null;\r\n}\r\n","export const environment = {\r\n production: true,\r\n\r\n appName: 'Trip Portal',\r\n brandKey: 'cts',\r\n companyName: 'CTS Software',\r\n apiUrl: 'https://api.requestmyrides.com',\r\n ionicAppId: 'e521ca3c',\r\n appId: 'com.CTS.RiderPortalApp',\r\n\r\n maxLoginAttempts: 5,\r\n googleMapsAPI: 'AIzaSyCPFOyoWh0oS_YareBCdYP-lz4geB-M3iM',\r\n TrackJS: {\r\n token: '85bb494f73664aa19e6b1b6237d458a5',\r\n enabled: false,\r\n application: 'riderportalcore',\r\n console: { display: true },\r\n },\r\n keys: {\r\n currentUser: 'cts-riderportal-currentuser',\r\n email: 'cts-riderportal-email',\r\n portalSettings: 'cts-portalsettings',\r\n providerAssigned: 'cts-portal-provider-assigned',\r\n },\r\n\r\n features: {\r\n helpUrl: 'https://cts-software.zendesk.com/hc/en-us/categories/360002749633-Rider-Portal',\r\n showAccessibilityStatement: true,\r\n },\r\n};\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-accessibility-statement',\r\n templateUrl: './accessibility-statement.component.html',\r\n styleUrls: ['./accessibility-statement.component.scss'],\r\n})\r\nexport class AccessibilityStatementComponent {}\r\n","
\r\n

\r\n Accessibility Statement for\r\n TripMaster\r\n

\r\n

\r\n CTS Software\r\n is committed to ensuring digital accessibility for people with disabilities.\r\n We are continually improving the user experience for everyone and applying\r\n the relevant accessibility standards.\r\n

\r\n

Measures to support accessibility

\r\n

\r\n CTS Software\r\n takes the following measures to ensure accessibility of\r\n TripMaster:\r\n

\r\n
    \r\n
  • Include accessibility as part of our mission statement.
  • \r\n
  • Include accessibility throughout our internal policies.
  • \r\n
  • Integrate accessibility into our procurement practices.
  • \r\n
\r\n

Conformance status

\r\n

\r\n The\r\n Web Content Accessibility Guidelines (WCAG)\r\n defines requirements for designers and developers to improve accessibility\r\n for people with disabilities. It defines three levels of conformance: Level\r\n A, Level AA, and Level AAA.\r\n TripMaster\r\n is\r\n fully conformant\r\n with\r\n WCAG 2.0 level AA.\r\n \r\n \r\n Fully conformant\r\n means that\r\n the content fully conforms to the accessibility standard without any\r\n exceptions.\r\n \r\n

\r\n

Feedback

\r\n

\r\n We welcome your feedback on the accessibility of\r\n TripMaster. Please let\r\n us know if you encounter accessibility barriers on\r\n TripMaster:\r\n

\r\n

\r\n \r\n If you are having any issues logging in please contact the transportation\r\n provider you are trying to request a ride from directly.\r\n \r\n

\r\n

Compatibility with browsers and assistive technology

\r\n

\r\n TripMaster\r\n is designed to be compatible with the following assistive technologies:\r\n

\r\n
    \r\n
  • Chrome
  • \r\n
  • Safari
  • \r\n
\r\n

Technical specifications

\r\n

\r\n Accessibility of\r\n TripMaster\r\n relies on the following technologies to work with the particular combination\r\n of web browser and any assistive technologies or plugins installed on your\r\n computer:\r\n

\r\n
    \r\n
  • HTML
  • \r\n
  • WAI-ARIA
  • \r\n
  • CSS
  • \r\n
  • JavaScript
  • \r\n
\r\n

\r\n These technologies are relied upon for conformance with the accessibility\r\n standards used.\r\n

\r\n

Assessment approach

\r\n

\r\n CTS Software\r\n assessed the accessibility of\r\n TripMaster\r\n by the following approaches:\r\n

\r\n
    \r\n
  • Self-evaluation
  • \r\n
\r\n
\r\n

\r\n This statement was created on\r\n 27 June 2019\r\n using the\r\n W3C Accessibility Statement Generator Tool.\r\n

\r\n \r\n
\r\n","import packageJson from 'package.json';\r\n\r\nimport { App, AppInfo } from \"@capacitor/app\";\r\nimport { Device, DeviceInfo } from \"@capacitor/device\";\r\n\r\nimport { Capacitor } from '@capacitor/core';\r\nimport { IEnvironmentInformation } from '../../models/environment-information.model';\r\nimport { Injectable } from '@angular/core';\r\nimport { environment } from '../../../environments/environment';\r\nimport { buildInfo } from '../../config/build-info';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PluginService {\r\n\r\n private cachedEnvironmentInfo: IEnvironmentInformation | null = null;\r\n\r\n constructor() { }\r\n\r\n public get isNativePlatform(): boolean {\r\n return Capacitor.isNativePlatform();\r\n }\r\n\r\n public async getEnvironmentInfo(forceCacheRefresh: boolean = false): Promise {\r\n // if cached environment info exists, return that (unless a refresh is requested)\r\n if (!forceCacheRefresh && !!this.cachedEnvironmentInfo) return this.cachedEnvironmentInfo;\r\n\r\n const deviceInfo: DeviceInfo = await Device.getInfo();\r\n const appInfo: AppInfo = Capacitor.isNativePlatform()\r\n ? await App.getInfo()\r\n : {\r\n name: environment.appName,\r\n id: environment.appId,\r\n build: buildInfo.publicVersion.replace(/\\./gmi, ''),\r\n version: buildInfo.publicVersion,\r\n };\r\n\r\n this.cachedEnvironmentInfo = {\r\n // using capacitor device plugin\r\n uuid: '',\r\n ...(await Device.getId()),\r\n ...appInfo,\r\n model: deviceInfo.model,\r\n platform: deviceInfo.platform,\r\n platformVersion: deviceInfo.webViewVersion,\r\n manufacturer: deviceInfo.manufacturer,\r\n capacitorVersion: packageJson.dependencies['@capacitor/core'],\r\n\r\n // using capacitor app plugin\r\n playStoreVersion: appInfo?.version,\r\n buildVersion: appInfo?.build,\r\n applicationId: appInfo?.id,\r\n applicationName: appInfo?.name,\r\n };\r\n\r\n return this.cachedEnvironmentInfo;\r\n }\r\n\r\n}\r\n","import { DeviceModel, ServiceProxy } from './nswag/service-proxies';\r\nimport { STORAGE_KEY, SettingsService } from './settings.service';\r\n\r\nimport { Capacitor } from '@capacitor/core';\r\nimport { Injectable } from '@angular/core';\r\nimport { LoggingService } from './logging.service';\r\nimport { NotificationService } from './notification.service';\r\nimport { PluginService } from '../../select-ride/services/plugin.service';\r\nimport { VersionService } from '../../shared/services/version.service';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { Platform } from '@ionic/angular';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DeviceService {\r\n device: DeviceModel;\r\n packageName = '';\r\n\r\n constructor(\r\n private loggingService: LoggingService,\r\n private settingsService: SettingsService,\r\n private versionService: VersionService,\r\n private proxies: ServiceProxy,\r\n private pluginService: PluginService,\r\n private notificationService: NotificationService,\r\n ) {\r\n\r\n }\r\n\r\n async registerDevice(): Promise {\r\n try {\r\n console.log('🔍', 'Registering device...');\r\n const envInfo = await this.pluginService.getEnvironmentInfo();\r\n console.debug('🐛', 'Environment info:', envInfo);\r\n console.debug('🐛', `Selected channel: ${this.settingsService.currentChannel?.name}`);\r\n const selectedChannel: string = this.settingsService.currentChannel?.name;\r\n console.debug('🐛', `The default channel is: ${selectedChannel} ${this.settingsService.currentChannel?.apiUrl}`);\r\n\r\n this.device = { ...envInfo, ionicChannel: selectedChannel, ionicSnapshotBuildId: undefined, serialNumber: undefined };\r\n console.debug('🐛', 'Device info:', this.device);\r\n\r\n // Check for store updates\r\n if (Capacitor.isNativePlatform()) {\r\n try {\r\n console.debug('🐛', 'Checking for store updates...');\r\n const response = await firstValueFrom(this.proxies.channelInfo(this.device));\r\n console.log('🔍', 'App needs updated:', response.storeUpdateRequired);\r\n this.versionService.binaryOutOfDate = response.storeUpdateRequired;\r\n if (response.storeUpdateRequired) {\r\n alert('The version of the application you are using is no longer supported, please update to the latest version.');\r\n }\r\n } catch (err) {\r\n this.notificationService.error(`The request to the API to get build update info failed`, 'OK', null);\r\n console.error(`The request to the API to get build update info failed.`);\r\n // clear the current selection from local storage because it obviously doesn't work.\r\n localStorage.removeItem(STORAGE_KEY);\r\n throw err;\r\n }\r\n }\r\n\r\n if (this.versionService.binaryOutOfDate) return;\r\n\r\n // we now know the channel and can check for updates;\r\n this.versionService.setChannel(selectedChannel);\r\n\r\n // verify that the settings service has been configured, then get the snapshot build id\r\n try {\r\n if (await this.versionService.verifyConfiguration()) {\r\n this.settingsService.currentChannel.snapshotBuildId = this.versionService?.snapshotBuildId;\r\n }\r\n } catch (err) {\r\n console.error('Error occurred trying to get the snapshot version for display', err);\r\n }\r\n\r\n console.debug('🐛', 'Current Channel', this.settingsService.currentChannel);\r\n\r\n if (this.settingsService.currentChannel.autoUpdates) {\r\n console.debug('🐛 Has auto updates on');\r\n // we already set the channel, so no need to pass it in.\r\n await this.versionService.checkForNewVersion();\r\n } else {\r\n console.warn(`Auto-updating the device for channel [${selectedChannel}] is turned off.`);\r\n }\r\n\r\n this.loggingService.setDeviceInfo(this.device);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { DomSanitizer, Title } from '@angular/platform-browser';\r\nimport { Subject, distinctUntilChanged, filter, switchMap, takeUntil, tap } from 'rxjs';\r\n\r\nimport { AuthenticationService } from './shared/services/authentication.service';\r\nimport { DeviceService } from './shared/services/device.service';\r\nimport { MatIconRegistry } from '@angular/material/icon';\r\nimport { Router } from '@angular/router';\r\nimport { VersionService } from './shared/services/version.service';\r\nimport { environment } from '../environments/environment';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss'],\r\n})\r\nexport class AppComponent implements OnInit, OnDestroy {\r\n\r\n public readonly title = environment.appName;\r\n public readonly brand = environment.brandKey;\r\n private readonly destroyed$ = new Subject();\r\n\r\n constructor(\r\n private readonly iconRegistry: MatIconRegistry,\r\n private readonly sanitizer: DomSanitizer,\r\n private readonly device: DeviceService,\r\n private readonly auth: AuthenticationService,\r\n private readonly versionService: VersionService,\r\n private readonly router: Router,\r\n title: Title,\r\n ) {\r\n this.handleIcons();\r\n title.setTitle(this.title);\r\n }\r\n\r\n async ngOnInit(): Promise {\r\n this.versionService.binaryOutOfDate$.pipe(\r\n takeUntil(this.destroyed$),\r\n distinctUntilChanged(),\r\n filter(value => value),\r\n switchMap(() => this.router.navigate(['/out-of-support'])),\r\n ).subscribe();\r\n\r\n\r\n await this.auth.init();\r\n console.log('🔍', 'Initializing...');\r\n await this.device.registerDevice();\r\n console.log('🔍', 'Initialized!');\r\n }\r\n\r\n /**\r\n * Adds custom icons to be used in mat-icon.\r\n * Usage: \r\n */\r\n handleIcons() {\r\n // keep in alphabetical order to make it easier to see what is there\r\n const icons = [\r\n 'comments',\r\n ];\r\n icons.forEach(icon => {\r\n const path = `../assets/icons/${icon}.svg`;\r\n const sanitizedPath = this.sanitizer.bypassSecurityTrustResourceUrl(path);\r\n this.iconRegistry.addSvgIcon(icon, sanitizedPath);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n }\r\n}\r\n","\r\n
\r\n \r\n
\r\n","import { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\n\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { AuthenticationService } from '../services/authentication.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthGuard {\r\n\r\n private readonly router = inject(Router);\r\n private readonly auth = inject(AuthenticationService);\r\n\r\n canActivate(\r\n next: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n ): Observable {\r\n return this.auth.currentUser$.pipe(\r\n map(user => {\r\n if (user) return true;\r\n if (state.url === '/login') { return false; }\r\n else return this.router.createUrlTree(['/login']);\r\n }),\r\n catchError((err) => {\r\n console.error(err);\r\n if (state.url === '/login') { return of(false); }\r\n return of(this.router.createUrlTree(['/login']));\r\n }),\r\n );\r\n }\r\n}\r\n","import { Component, inject, OnInit } from '@angular/core';\r\nimport { Capacitor } from '@capacitor/core';\r\nimport { VersionService } from '../shared/services/version.service';\r\n\r\n@Component({\r\n selector: 'app-out-of-support',\r\n templateUrl: './out-of-support.component.html',\r\n styleUrls: ['./out-of-support.component.scss'],\r\n})\r\nexport class OutOfSupportComponent {\r\n\r\n private readonly versionService = inject(VersionService);\r\n public readonly snapshotInfo$ = this.versionService.snapshotInfo$.pipe();\r\n public version: string = this.versionService.buildVersion;\r\n\r\n public get storeName() {\r\n switch (Capacitor.getPlatform()) {\r\n case 'ios': return 'App Store';\r\n case 'android': return 'Play Store';\r\n default: return 'Store';\r\n }\r\n }\r\n\r\n}\r\n","
\r\n\r\n
\r\n

Out Of Support

\r\n

The app version currently on your device is no longer supported.

\r\n

Please download the latest version from the {{ storeName }}.

\r\n
\r\n
Current Version:
{{ version }}
\r\n
Current Build Id:
{{ snapshotInfo?.buildId }}
\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n","import { Component, inject } from '@angular/core';\r\nimport { AuthenticationService } from '../shared/services/authentication.service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-profile',\r\n templateUrl: './profile.component.html',\r\n styleUrls: ['./profile.component.scss'],\r\n})\r\nexport class ProfileComponent {\r\n\r\n private readonly _auth = inject(AuthenticationService);\r\n private readonly _router = inject(Router);\r\n public readonly user$ = this._auth.currentUser$;\r\n\r\n // S&M: for acceptance in the IOS app store\r\n public delete(): Promise {\r\n console.log('🔍 Delete Account');\r\n return this._router.navigate(['/logout']);\r\n }\r\n\r\n}\r\n","\r\n
\r\n\r\n
\r\n

Profile

\r\n \r\n Logged in as {{ user.emailAddress }}\r\n \r\n

Transportation Provider

\r\n
\r\n
Name:
\r\n
{{ user.transportationProvider.name }}
\r\n
Phone:
\r\n
{{ user.transportationProvider.phone | phone }}
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n","import { AuthGuard } from './shared/guards/auth.guard';\r\nimport { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { IonicStorageModule } from '@ionic/storage-angular';\r\nimport { NotFoundComponent } from './shared/components/not-found/not-found.component';\r\nimport { AccessibilityStatementComponent } from './accessibility-statement/accessibility-statement.component';\r\nimport { OutOfSupportComponent } from './out-of-support/out-of-support.component';\r\nimport { ProfileComponent } from './profile/profile.component';\r\n\r\nconst routes: Routes = [\r\n { path: '', redirectTo: 'login', pathMatch: 'full' },\r\n {\r\n path: '',\r\n loadChildren: () =>\r\n import('./login/login.module').then((m) => m.LoginModule),\r\n },\r\n {\r\n path: 'index.html',\r\n loadChildren: () =>\r\n import('./login/login.module').then((m) => m.LoginModule),\r\n },\r\n {\r\n path: 'accessibility-statement',\r\n component: AccessibilityStatementComponent,\r\n },\r\n {\r\n path: 'rides',\r\n loadChildren: () =>\r\n import('./rides/rides.module').then((m) => m.RidesModule),\r\n canActivate: [AuthGuard],\r\n },\r\n {\r\n path: 'payments',\r\n loadChildren: () =>\r\n import('./payments/payments.module').then((m) => m.PaymentsModule),\r\n canActivate: [AuthGuard],\r\n },\r\n {\r\n path: '',\r\n loadChildren: () =>\r\n import('./select-ride/select-ride.module').then(\r\n (m) => m.SelectRideModule,\r\n ),\r\n canActivate: [AuthGuard],\r\n },\r\n {\r\n path: 'rider-location',\r\n loadChildren: () =>\r\n import('./rider-location/rider-location.module').then(\r\n (m) => m.RiderLocationModule,\r\n ),\r\n },\r\n { path: 'out-of-support', component: OutOfSupportComponent },\r\n { path: 'profile', component: ProfileComponent, canActivate: [AuthGuard] },\r\n { path: '**', component: NotFoundComponent }, // MUST BE LAST!\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n RouterModule.forRoot(routes, { scrollPositionRestoration: 'disabled' }),\r\n IonicStorageModule.forRoot({\r\n name: '__mydb',\r\n driverOrder: ['indexeddb', 'sqlite', 'websql'],\r\n }),\r\n ],\r\n\r\n exports: [RouterModule],\r\n})\r\nexport class AppRoutingModule { }\r\n","export const password = 'testMyRides42';\r\nexport const login = {\r\n \"token\": \"testAccount\",\r\n \"userProfile\": {\r\n \"emailAddress\": \"store-test@cts-software.com\",\r\n \"isDelegateUser\": false,\r\n \"portalUserId\": \"testAccount\",\r\n \"comments\": null,\r\n \"transportationProvider\": {\r\n \"transportationProviderId\": \"5b938b42-9225-45e3-abe0-4d9616ae1abc\",\r\n \"name\": \"Cooper's Company\",\r\n \"phone\": \"9994563434\",\r\n \"logoImgUrl\": null,\r\n \"webPaymentToken\": \"TEST-TripMaster-Sandbox-c704cd224a78\",\r\n \"defaultLatitude\": 40.748441,\r\n \"defaultLongitude\": -73.985664,\r\n },\r\n \"transportationProviders\": [\r\n {\r\n \"transportationProviderId\": \"5b938b42-9225-45e3-abe0-4d9616ae1abc\",\r\n \"name\": \"Cooper's Company\",\r\n \"phone\": \"9994563434\",\r\n \"logoImgUrl\": null,\r\n \"webPaymentToken\": \"TEST-TripMaster-Sandbox-c704cd224a78\",\r\n \"defaultLatitude\": 40.748441,\r\n \"defaultLongitude\": -73.985664,\r\n },\r\n ],\r\n \"vendorTransportationProviders\": [],\r\n \"firstName\": \"Racoon\",\r\n \"middleInitial\": null,\r\n \"lastName\": \"Orange\",\r\n \"genderId\": 0,\r\n \"genderDescription\": null,\r\n \"dateOfBirth\": \"9/20/1982 12:00:00 AM\",\r\n \"phoneNumber\": null,\r\n \"address\": {\r\n \"addressId\": \"1\",\r\n \"name\": \"\",\r\n \"address1\": \"350 Fifth Avenue, NY 10118\",\r\n \"address2\": \"\",\r\n \"city\": \"New York\",\r\n \"state\": \"NY\",\r\n \"zip\": \"10118\",\r\n \"county\": \"\",\r\n \"latitude\": 40.748441,\r\n \"longitude\": -73.985664,\r\n \"phone\": null,\r\n \"isFavorite\": false,\r\n },\r\n \"rideRequirements\": [],\r\n \"prefersTextMessage\": false,\r\n \"isTestAccount\": true,\r\n },\r\n};\r\n","export const portalSettings = {\r\n \"companyName\": \"Cooper's Company\",\r\n \"phoneNumber\": \"1234567890\",\r\n \"companyLogoUrl\": null,\r\n \"defaultAccountId\": 20,\r\n \"defaultAccountDisplayValue\": \"PP\",\r\n \"defaultAccountDisplayName\": \"Private Pay\",\r\n \"allowCancellations\": true,\r\n \"allowRideRequestsFromSelfRegisteredRiders\": true,\r\n \"denyBasedOnMinDaysBeforeRideDate\": null,\r\n \"maximumNumberOfDaysInTheFuture\": null,\r\n \"denyBasedOnOutOfServiceDate\": false,\r\n \"denyBasedOnRouteAvailability\": false,\r\n \"acceptBasedOnScheduling\": true,\r\n \"denyBasedOnScheduling\": false,\r\n \"minimumNumberOfHoursBeforePriorityTime\": 2,\r\n \"denyIfRiderIsInactive\": false,\r\n \"denyIfRideIsSoonerThanPriorityTimeMinimumHours\": true,\r\n \"allowRiderToPayForRides\": false,\r\n \"requirePaymentForRide\": false,\r\n \"allowRiderToPutMoneyOnPasses\": false,\r\n \"denyIfRideIsTooFarInTheFuture\": false,\r\n \"transportationProviderResourceId\": \"1\",\r\n \"outOfServiceDates\": [],\r\n \"paymentProvider\": null,\r\n};\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { login } from './data/login';\r\nimport { portalSettings } from './data/portal-settings';\r\nimport { HttpRequest } from \"@angular/common/http\";\r\nimport { DateTime } from \"luxon\";\r\nimport { RequestRideResponse, RideModel } from \"../nswag/service-proxies\";\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MockService {\r\n\r\n isLoggedIn = false;\r\n private readonly channelInfo = { \"storeUpdateRequired\":false, \"channel\":\"TripPortal.Production\" };\r\n private futureRides: RequestRideResponse[] = [];\r\n\r\n get(request: HttpRequest) {\r\n const url = request.url;\r\n const body = request.body ? JSON.parse(request.body) : null;\r\n\r\n let response: any = undefined;\r\n if (/Device\\/channel-info/.test(url)) { response = this.channelInfo; }\r\n\r\n if (/Authentication\\/login/.test(url)) {\r\n this.isLoggedIn = true;\r\n response = login;\r\n }\r\n if (/Authentication\\/login-check/.test(url)) { response = this.isLoggedIn; }\r\n if (/Authentication\\/logout/.test(url)) { response = true; }\r\n\r\n if (/Rider\\/portal-settings/.test(url)) { response = portalSettings; }\r\n if (/Rider\\/list-rider-ride-requests/.test(url)) {\r\n response = body.pastRides === false\r\n ? { requestedRides: this.futureRides, totalRecords: this.futureRides.length, pageSize:100 }\r\n : { requestedRides:[], totalRecords: 0, pageSize:100 };\r\n }\r\n if (/Rider\\/list-requests-pending-payment/.test(url)) { response = { requestedRides:[], totalRecords: 0, pageSize:100 }; }\r\n\r\n if (/RiderAddress\\/address-history/.test(url)) { response = []; }\r\n\r\n // get Fare information\r\n if (/Rider\\/testAccount\\/fare\\/1/.test(url)) {\r\n response = body.map(request => {\r\n const distance = this.crowFliesDistance(\r\n request.pickupAddress.latitude,\r\n request.pickupAddress.longitude,\r\n request.dropoffAddress.latitude,\r\n request.dropoffAddress.longitude,\r\n );\r\n const minutes = isNaN(distance) ? 0 : distance * 45;\r\n const duration = DateTime.now().startOf(\"year\").plus({ minutes }).toFormat('HH:mm:ss.SSS');\r\n return { request, fare: this.calcFare(distance), distance, duration };\r\n });\r\n }\r\n\r\n if (/Rider\\/request-rides/.test(url)) { response = body.rideFares.map(ride => {\r\n const response = this.buildRideRequestResponse(ride.rideRequest);\r\n this.futureRides.push(response);\r\n return response;\r\n });\r\n }\r\n\r\n if (/Rider\\/cancel-request-ride/.test(url)) {\r\n const rideId = url.match(/\\/(?[^\\/]*?)$/).groups?.rideId;\r\n const ride = this.futureRides.find(ride => ride.responseDetails.rideDetails.ride.rideId === rideId);\r\n if (ride) { ride.responseDetails.rideDetails.ride.rideStatusId = 3; }\r\n response = { responseMessage:\"Cancelled Successfully\", cancelled:true };\r\n }\r\n\r\n return {\r\n success: response !== undefined,\r\n response,\r\n };\r\n }\r\n\r\n private calcFare(distance: number) {\r\n return distance * 1.25;\r\n }\r\n\r\n private crowFliesDistance(lat1: number, lon1: number, lat2: number, lon2: number): number {\r\n if (!lat1 || !lon1 || !lat2 ||!lon2) { return 0; }\r\n const r = 6371; // km\r\n const p = Math.PI / 180;\r\n\r\n const a = 0.5 - Math.cos((lat2 - lat1) * p) / 2\r\n + Math.cos(lat1 * p) * Math.cos(lat2 * p) *\r\n (1 - Math.cos((lon2 - lon1) * p)) / 2;\r\n\r\n const distanceInKm = 2 * r * Math.asin(Math.sqrt(a));\r\n const miles = distanceInKm / 1.609;\r\n const distanceInMiles = Number(miles.toLocaleString(undefined, { maximumFractionDigits: 2 }).replace(/,/g, ''));\r\n return distanceInMiles;\r\n }\r\n\r\n private buildRideRequestResponse(ride: RideModel): any {\r\n const distance = this.crowFliesDistance(\r\n ride.pickupAddress.latitude,\r\n ride.pickupAddress.longitude,\r\n ride.dropoffAddress.latitude,\r\n ride.dropoffAddress.longitude,\r\n );\r\n const transportationProvider = login.userProfile.transportationProviders[0];\r\n return {\r\n responseDetails: {\r\n rideRequestResponseCode: 2,\r\n initialAcceptStatus: null,\r\n initialAcceptMessage: null,\r\n name: '',\r\n rideDetails: {\r\n driver: null,\r\n vehicle: null,\r\n scheduledPickupTime: new Date('0001-01-01T00:00:00'),\r\n ride: {\r\n ...ride,\r\n rideId: Date.now().toString(),\r\n rideStatusId: 1,\r\n transportationProviderId: transportationProvider.transportationProviderId,\r\n vendorRiderId: login.userProfile.portalUserId,\r\n riderName: `${login.userProfile.firstName} ${login.userProfile.lastName} `,\r\n portalUserId: login.userProfile.portalUserId,\r\n pickupAddress: { ...ride.pickupAddress, name: '', addressId: Date.now().toString(), phone: null, isFavorite: false },\r\n dropoffAddress: { ...ride.dropoffAddress, name: '', addressId: Date.now().toString(), phone: null, isFavorite: false },\r\n },\r\n fareAmount: null,\r\n },\r\n reason: \"Ride is outside service area\",\r\n scheduledPickupTimeUTC: null,\r\n fareAmount: this.calcFare(distance),\r\n },\r\n transportationProvider,\r\n };\r\n }\r\n\r\n}\r\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\n\r\nimport { AuthenticationService } from './services/authentication.service';\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { environment } from 'src/environments/environment';\r\n\r\nimport { login, password } from '../shared/services/mocks/data/login';\r\nimport { MockService } from './services/mocks/mock.service';\r\nimport { VersionService } from './services/version.service';\r\n\r\n@Injectable()\r\nexport class AuthInterceptor implements HttpInterceptor {\r\n\r\n private readonly authSvc = inject(AuthenticationService);\r\n private readonly mock = inject(MockService);\r\n private readonly versionService = inject(VersionService);\r\n\r\n intercept(\r\n request: HttpRequest,\r\n next: HttpHandler,\r\n ): Observable> {\r\n\r\n\r\n if (this.versionService.binaryOutOfDate) {\r\n throw new Error('App version is out of support');\r\n }\r\n\r\n const { token, portalUserId } = this.authSvc.getCurrentUser() || {};\r\n const { url } = request || { url: '' };\r\n\r\n const body = request.body ? JSON.parse(request.body) : null;\r\n\r\n if (\r\n portalUserId === login.token\r\n || (\r\n body?.email?.toLowerCase() === login?.userProfile?.emailAddress?.toLowerCase()\r\n && body?.password === password\r\n )\r\n ) {\r\n const { success, response } = this.mock.get(request);\r\n console.info('ℹī¸','using bypass', response);\r\n if (success) {\r\n return of(new HttpResponse({\r\n body: new Blob([ JSON.stringify(response) ], { type: \"text/json\" }),\r\n status: 200,\r\n statusText: 'Ok',\r\n }));\r\n }\r\n }\r\n\r\n if (token && url.includes(environment.apiUrl)) {\r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n });\r\n }\r\n\r\n return next.handle(request).pipe(\r\n catchError(err => {\r\n const { status, message } = err;\r\n console.error('-- Intercept Error --', url, status, message);\r\n throw err;\r\n }),\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { ErrorDisplayComponent } from '../components/error-display/error-display.component';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ErrorService {\r\n constructor(private snackBar: MatSnackBar) { }\r\n\r\n showGlobalErrorMessage(errorMessage?: string) {\r\n console.debug('🐞', 'error message: ', errorMessage);\r\n this.snackBar.openFromComponent(ErrorDisplayComponent, {\r\n panelClass: 'snackbar-error',\r\n data: errorMessage,\r\n });\r\n }\r\n}\r\n","import { ErrorHandler, Injectable } from '@angular/core';\r\n\r\nimport { ErrorService } from './services/error.service';\r\nimport { LoggingService } from './services/logging.service';\r\nimport { TrackJS } from 'trackjs';\r\n\r\n@Injectable()\r\nexport class GlobalErrorHandler implements ErrorHandler {\r\n constructor(\r\n private errorSvc: ErrorService,\r\n private loggerService: LoggingService,\r\n ) { }\r\n\r\n handleError(error: any) {\r\n // This can have useful content for TrackJS (and our developers)\r\n console.warn(error.message, error);\r\n this.loggerService.logFatal(error.message, error);\r\n\r\n // Send the native error object to TrackJS\r\n TrackJS.track(error.originalError || error);\r\n }\r\n}\r\n","import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable()\r\nexport class AppBrandInterceptor implements HttpInterceptor {\r\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\r\n if (req.url.startsWith(environment.apiUrl)) {\r\n const clonedRequest = req.clone({ headers: req.headers.set('x-cts-brand-id', environment.brandKey) });\r\n return next.handle(clonedRequest);\r\n }\r\n return next.handle(req);\r\n }\r\n}\r\n","import 'zone.js';\r\n\r\nimport { ConstructStartupUrl, STORAGE_KEY } from './shared/services/settings.service';\r\nimport { EnvironmentInjector, ErrorHandler, NgModule } from '@angular/core';\r\nimport { IonicModule, IonicRouteStrategy } from '@ionic/angular';\r\n\r\nimport { API_BASE_URL } from './shared/services/nswag/service-proxies';\r\nimport { AccessibilityStatementComponent } from './accessibility-statement/accessibility-statement.component';\r\nimport { AppComponent } from './app.component';\r\nimport { AppRoutingModule } from './app.routing';\r\nimport { AuthInterceptor } from './shared/auth.interceptor';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { Deploy } from 'cordova-plugin-ionic/dist/ngx';\r\nimport { GlobalErrorHandler } from './shared/global-error.handler';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { IonicStorageModule } from '@ionic/storage-angular';\r\nimport { RouteReuseStrategy } from '@angular/router';\r\nimport { ServiceWorkerModule } from '@angular/service-worker';\r\nimport { SharedModule } from './shared/shared.module';\r\nimport { environment } from 'src/environments/environment';\r\nimport { OutOfSupportComponent } from './out-of-support/out-of-support.component';\r\nimport { AppBrandInterceptor } from './shared/brand.interceptor';\r\nimport { ProfileComponent } from './profile/profile.component';\r\n\r\nexport function factory() {\r\n return localStorage.environment.apiUrl;\r\n}\r\n\r\nexport function initialConfig() {\r\n const url = ConstructStartupUrl(STORAGE_KEY);\r\n environment.apiUrl = url;\r\n return url;\r\n}\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n AccessibilityStatementComponent,\r\n OutOfSupportComponent,\r\n ProfileComponent,\r\n ],\r\n imports: [\r\n BrowserModule,\r\n AppRoutingModule,\r\n BrowserAnimationsModule,\r\n SharedModule,\r\n IonicModule.forRoot(),\r\n IonicStorageModule.forRoot(),\r\n ServiceWorkerModule.register('ngsw-worker.js', {\r\n enabled: environment.production,\r\n // Register the ServiceWorker as soon as the application is stable\r\n // or after 30 seconds (whichever comes first).\r\n registrationStrategy: 'registerWhenStable:30000',\r\n }),\r\n ],\r\n exports: [],\r\n providers: [\r\n { provide: API_BASE_URL, useFactory: initialConfig },\r\n { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: AppBrandInterceptor, multi: true },\r\n { provide: RouteReuseStrategy, useClass: IonicRouteStrategy },\r\n { provide: ErrorHandler, useClass: GlobalErrorHandler },\r\n Deploy,\r\n ],\r\n bootstrap: [AppComponent],\r\n})\r\nexport class AppModule { }\r\n","import '@angular/compiler';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { TrackJS } from 'trackjs';\r\nimport { enableProdMode } from '@angular/core';\r\nimport { environment } from './environments/environment';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\n// Initialize TrackJS for error handling\r\nif (environment.TrackJS) {\r\n TrackJS.install(environment.TrackJS);\r\n}\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n platformBrowserDynamic()\r\n .bootstrapModule(AppModule)\r\n .catch((err) => console.error(err));\r\n});\r\n\r\nconst host = window.location.host;\r\nlet base: string;\r\n\r\nswitch (host) {\r\n case 'localhost:4203': base = 'http://localhost:44316'; break;\r\n case 'localhost:8100': base = localStorage.getItem('TMRiderPortalApiEndpointUrl') || 'https://api.requestmyrides.com'; break;\r\n case 'requestmyrides.com': base = 'https://api.requestmyrides.com'; break;\r\n default: base = `https://api-${host}`;\r\n}\r\n// Not the same as apiBaseUrl\r\nif (!environment.apiUrl) {\r\n environment.apiUrl = `${base}`;\r\n}\r\n","var map = {\n\t\"./ion-accordion_2.entry.js\": [\n\t\t7518,\n\t\t2076,\n\t\t7518\n\t],\n\t\"./ion-action-sheet.entry.js\": [\n\t\t1981,\n\t\t2076,\n\t\t1981\n\t],\n\t\"./ion-alert.entry.js\": [\n\t\t1603,\n\t\t2076,\n\t\t1603\n\t],\n\t\"./ion-app_8.entry.js\": [\n\t\t2273,\n\t\t2076,\n\t\t2273\n\t],\n\t\"./ion-avatar_3.entry.js\": [\n\t\t9642,\n\t\t9642\n\t],\n\t\"./ion-back-button.entry.js\": [\n\t\t2095,\n\t\t2076,\n\t\t2095\n\t],\n\t\"./ion-backdrop.entry.js\": [\n\t\t2335,\n\t\t2335\n\t],\n\t\"./ion-breadcrumb_2.entry.js\": [\n\t\t8221,\n\t\t2076,\n\t\t8221\n\t],\n\t\"./ion-button_2.entry.js\": [\n\t\t7184,\n\t\t7184\n\t],\n\t\"./ion-card_5.entry.js\": [\n\t\t8759,\n\t\t8759\n\t],\n\t\"./ion-checkbox.entry.js\": [\n\t\t4248,\n\t\t4248\n\t],\n\t\"./ion-chip.entry.js\": [\n\t\t9863,\n\t\t9863\n\t],\n\t\"./ion-col_3.entry.js\": [\n\t\t1769,\n\t\t1769\n\t],\n\t\"./ion-datetime-button.entry.js\": [\n\t\t2569,\n\t\t7377,\n\t\t2569\n\t],\n\t\"./ion-datetime_3.entry.js\": [\n\t\t6534,\n\t\t7377,\n\t\t2076,\n\t\t6534\n\t],\n\t\"./ion-fab_3.entry.js\": [\n\t\t5458,\n\t\t2076,\n\t\t5458\n\t],\n\t\"./ion-img.entry.js\": [\n\t\t654,\n\t\t654\n\t],\n\t\"./ion-infinite-scroll_2.entry.js\": [\n\t\t6034,\n\t\t2076,\n\t\t6034\n\t],\n\t\"./ion-input-password-toggle.entry.js\": [\n\t\t5196,\n\t\t2076,\n\t\t5196\n\t],\n\t\"./ion-input.entry.js\": [\n\t\t761,\n\t\t2076,\n\t\t761\n\t],\n\t\"./ion-item-option_3.entry.js\": [\n\t\t6492,\n\t\t2076,\n\t\t6492\n\t],\n\t\"./ion-item_8.entry.js\": [\n\t\t9557,\n\t\t2076,\n\t\t9557\n\t],\n\t\"./ion-loading.entry.js\": [\n\t\t8353,\n\t\t2076,\n\t\t8353\n\t],\n\t\"./ion-menu_3.entry.js\": [\n\t\t1024,\n\t\t2076,\n\t\t1024\n\t],\n\t\"./ion-modal.entry.js\": [\n\t\t9160,\n\t\t2076,\n\t\t9160\n\t],\n\t\"./ion-nav_2.entry.js\": [\n\t\t393,\n\t\t2076,\n\t\t393\n\t],\n\t\"./ion-picker-column-option.entry.js\": [\n\t\t8442,\n\t\t8442\n\t],\n\t\"./ion-picker-column.entry.js\": [\n\t\t3110,\n\t\t2076,\n\t\t3110\n\t],\n\t\"./ion-picker.entry.js\": [\n\t\t5575,\n\t\t5575\n\t],\n\t\"./ion-popover.entry.js\": [\n\t\t6772,\n\t\t2076,\n\t\t6772\n\t],\n\t\"./ion-progress-bar.entry.js\": [\n\t\t4810,\n\t\t4810\n\t],\n\t\"./ion-radio_2.entry.js\": [\n\t\t4639,\n\t\t2076,\n\t\t4639\n\t],\n\t\"./ion-range.entry.js\": [\n\t\t628,\n\t\t2076,\n\t\t628\n\t],\n\t\"./ion-refresher_2.entry.js\": [\n\t\t852,\n\t\t2076,\n\t\t852\n\t],\n\t\"./ion-reorder_2.entry.js\": [\n\t\t1479,\n\t\t2076,\n\t\t1479\n\t],\n\t\"./ion-ripple-effect.entry.js\": [\n\t\t4065,\n\t\t4065\n\t],\n\t\"./ion-route_4.entry.js\": [\n\t\t7971,\n\t\t7971\n\t],\n\t\"./ion-searchbar.entry.js\": [\n\t\t3184,\n\t\t2076,\n\t\t3184\n\t],\n\t\"./ion-segment_2.entry.js\": [\n\t\t469,\n\t\t2076,\n\t\t469\n\t],\n\t\"./ion-select_3.entry.js\": [\n\t\t8471,\n\t\t2076,\n\t\t8471\n\t],\n\t\"./ion-spinner.entry.js\": [\n\t\t388,\n\t\t2076,\n\t\t388\n\t],\n\t\"./ion-split-pane.entry.js\": [\n\t\t2392,\n\t\t2392\n\t],\n\t\"./ion-tab-bar_2.entry.js\": [\n\t\t6059,\n\t\t2076,\n\t\t6059\n\t],\n\t\"./ion-tab_2.entry.js\": [\n\t\t5427,\n\t\t5427\n\t],\n\t\"./ion-text.entry.js\": [\n\t\t198,\n\t\t198\n\t],\n\t\"./ion-textarea.entry.js\": [\n\t\t1735,\n\t\t2076,\n\t\t1735\n\t],\n\t\"./ion-toast.entry.js\": [\n\t\t7510,\n\t\t2076,\n\t\t7510\n\t],\n\t\"./ion-toggle.entry.js\": [\n\t\t5297,\n\t\t2076,\n\t\t5297\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 8996;\nmodule.exports = webpackAsyncContext;"],"x_google_ignoreList":[64]}